Merge branch 'master' into persist-osgi-bundles
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/340e036d Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/340e036d Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/340e036d Branch: refs/heads/master Commit: 340e036d78ed3c55317c5d38bf3d2cc9791d6b0b Parents: abd0cb8 b08c482 Author: Alex Heneveld <[email protected]> Authored: Sat Apr 22 00:05:32 2017 +0100 Committer: Alex Heneveld <[email protected]> Committed: Sat Apr 22 00:05:32 2017 +0100 ---------------------------------------------------------------------- .../internal/AbstractBrooklynObjectSpec.java | 211 ++++++++++---- .../mementos/BrooklynMementoManifest.java | 36 +-- .../api/mgmt/rebind/mementos/Memento.java | 33 ++- .../brooklyn/api/objs/BrooklynObject.java | 19 ++ .../brooklyn/spi/creation/CampResolver.java | 2 +- .../brooklyn/camp/brooklyn/RebindOsgiTest.java | 54 ++++ .../catalog/CatalogOsgiYamlEntityTest.java | 59 +++- .../brooklyn/catalog/CatalogYamlEntityTest.java | 79 +++--- .../brooklyn/catalog/CatalogYamlRebindTest.java | 273 +++++++++---------- .../src/test/yaml/python-webserver.bom | 98 +++++++ .../core/catalog/internal/CatalogItemDo.java | 21 ++ .../internal/CatalogItemDtoAbstract.java | 5 +- .../core/catalog/internal/CatalogUtils.java | 26 +- .../internal/JavaCatalogToSpecTransformer.java | 8 +- .../apache/brooklyn/core/entity/Entities.java | 9 + .../access/PortForwardManagerClient.java | 6 + .../core/mgmt/EntityManagementUtils.java | 7 +- .../BrooklynClassLoadingContextSequential.java | 7 +- .../internal/AbstractManagementContext.java | 17 +- .../BrooklynMementoPersisterToObjectStore.java | 61 +++-- .../core/mgmt/rebind/RebindIteration.java | 233 ++++++++++------ .../core/mgmt/rebind/dto/AbstractMemento.java | 30 +- .../rebind/dto/BrooklynMementoManifestImpl.java | 5 +- .../rebind/dto/EntityMementoManifestImpl.java | 13 +- .../mgmt/rebind/dto/MementosGenerators.java | 5 +- .../rebind/transformer/CompoundTransformer.java | 30 +- .../core/objs/AbstractBrooklynObject.java | 60 +++- .../core/objs/AbstractEntityAdjunct.java | 8 +- .../core/objs/BrooklynObjectInternal.java | 9 + .../core/objs/proxy/InternalEntityFactory.java | 14 +- .../objs/proxy/InternalLocationFactory.java | 13 +- .../core/objs/proxy/InternalPolicyFactory.java | 24 +- .../resolve/entity/JavaEntitySpecResolver.java | 2 +- .../typereg/AbstractTypePlanTransformer.java | 3 +- .../brooklyn/util/core/ClassLoaderUtils.java | 40 ++- .../brooklyn/util/core/xstream/XmlUtil.java | 26 +- .../core/mgmt/osgi/OsgiStandaloneTest.java | 2 + .../rebind/RebindConfigInheritanceTest.java | 2 +- .../util/core/ClassLoaderUtilsTest.java | 3 +- .../brooklyn/util/osgi/OsgiTestResources.java | 2 + 40 files changed, 1082 insertions(+), 473 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoManifest.java ---------------------------------------------------------------------- diff --cc api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoManifest.java index 97fd91a,fa56d1d..41ca61e --- a/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoManifest.java +++ b/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/BrooklynMementoManifest.java @@@ -32,33 -33,31 +33,34 @@@ import org.apache.brooklyn.api.objs.Ide public interface BrooklynMementoManifest extends Serializable { public interface EntityMementoManifest extends Identifiable{ @Override - public String getId(); - public String getType(); - public String getParent(); - public String getCatalogItemId(); + String getId(); + String getType(); + String getParent(); + String getCatalogItemId(); + List<String> getCatalogItemIdSearchPath(); } - public String getPlaneId(); + String getPlaneId(); - public Map<String, EntityMementoManifest> getEntityIdToManifest(); + Map<String, EntityMementoManifest> getEntityIdToManifest(); - public Map<String, String> getLocationIdToType(); + Map<String, String> getLocationIdToType(); - public Map<String, String> getPolicyIdToType(); + Map<String, String> getPolicyIdToType(); - public Map<String, String> getEnricherIdToType(); + Map<String, String> getEnricherIdToType(); - public Map<String, String> getFeedIdToType(); + Map<String, String> getFeedIdToType(); - public CatalogItemMemento getCatalogItemMemento(String id); - public Collection<String> getCatalogItemIds(); - public Map<String, CatalogItemMemento> getCatalogItemMementos(); + CatalogItemMemento getCatalogItemMemento(String id); - + Collection<String> getCatalogItemIds(); - + Map<String, CatalogItemMemento> getCatalogItemMementos(); - public ManagedBundleMemento getBundle(String id); ++ ManagedBundleMemento getBundle(String id); + /** returns UID not symbolic name + version */ - public Collection<String> getBundleIds(); - public Map<String, ManagedBundleMemento> getBundles(); ++ Collection<String> getBundleIds(); ++ Map<String, ManagedBundleMemento> getBundles(); + - public boolean isEmpty(); + boolean isEmpty(); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java ---------------------------------------------------------------------- diff --cc core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java index 2c76520,e8bb23b..4e4fcb0 --- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java +++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java @@@ -29,9 -29,10 +29,10 @@@ import org.apache.brooklyn.api.mgmt.Man import org.apache.brooklyn.api.policy.Policy; import org.apache.brooklyn.api.policy.PolicySpec; import org.apache.brooklyn.api.typereg.RegisteredType; + import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential; import org.apache.brooklyn.core.objs.BasicSpecParameter; -import org.apache.brooklyn.core.plan.PlanNotRecognizedException; import org.apache.brooklyn.core.plan.PlanToSpecTransformer; +import org.apache.brooklyn.core.typereg.UnsupportedTypePlanException; import org.apache.brooklyn.util.exceptions.Exceptions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java ---------------------------------------------------------------------- diff --cc core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java index 142bcbc,2e0b8bf..7707adb --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java @@@ -55,14 -53,14 +56,16 @@@ import org.apache.brooklyn.config.Confi import org.apache.brooklyn.config.StringConfigMap; import org.apache.brooklyn.core.catalog.internal.CatalogUtils; import org.apache.brooklyn.core.config.ConfigKeys; + import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContextSequential; import org.apache.brooklyn.core.mgmt.classloading.ClassLoaderFromBrooklynClassLoadingContext; +import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal; import org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore.StoreObjectAccessor; import org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore.StoreObjectAccessorWithLock; import org.apache.brooklyn.core.mgmt.rebind.PeriodicDeltaChangeListener; import org.apache.brooklyn.core.mgmt.rebind.dto.BrooklynMementoImpl; import org.apache.brooklyn.core.mgmt.rebind.dto.BrooklynMementoManifestImpl; +import org.apache.brooklyn.core.typereg.BasicManagedBundle; + import org.apache.brooklyn.util.collections.MutableList; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.collections.MutableSet; import org.apache.brooklyn.util.core.xstream.XmlUtil; @@@ -354,9 -335,36 +364,35 @@@ public class BrooklynMementoPersisterTo return result; } + private static class XPathHelper { + private String contents; + private String prefix; + + public XPathHelper(String contents, String prefix) { + this.contents = contents; + this.prefix = prefix; + } + + private String get(String innerPath) { + return (String) XmlUtil.xpathHandlingIllegalChars(contents, prefix+innerPath); + } + private List<String> getStringList(String innerPath) { + List<String> result = MutableList.of(); + final NodeList nodeList = + (NodeList) XmlUtil.xpathHandlingIllegalChars(contents, prefix + innerPath + "//string", XPathConstants.NODESET); + for(int c = 0 ; c < nodeList.getLength() ; c++) { + result.add(nodeList.item(c).getFirstChild().getNodeValue()); + } + return result; + } + } + + @Override - public BrooklynMementoManifest loadMementoManifest(BrooklynMementoRawData mementoDataR, final RebindExceptionHandler exceptionHandler) throws IOException { - public BrooklynMementoManifest loadMementoManifest(BrooklynMementoRawData mementoData, ++ public BrooklynMementoManifest loadMementoManifest(BrooklynMementoRawData mementoDataR, + final RebindExceptionHandler exceptionHandler) throws IOException { - if (mementoData==null) - mementoData = loadMementoRawData(exceptionHandler); + final BrooklynMementoRawData mementoData = mementoDataR==null ? loadMementoRawData(exceptionHandler) : mementoDataR; + final BrooklynMementoManifestImpl.Builder builder = BrooklynMementoManifestImpl.builder(); builder.planeId(mementoData.getPlaneId()); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java ---------------------------------------------------------------------- diff --cc core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java index 92a87a7,ad12c52..5ed1dd5 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java @@@ -19,9 -19,11 +19,12 @@@ package org.apache.brooklyn.core.mgmt.rebind; import static com.google.common.base.Preconditions.checkNotNull; + import static org.apache.brooklyn.core.BrooklynFeatureEnablement.FEATURE_AUTO_FIX_CATALOG_REF_ON_REBIND; + import static org.apache.brooklyn.core.BrooklynFeatureEnablement.FEATURE_BACKWARDS_COMPATIBILITY_INFER_CATALOG_ITEM_ON_REBIND; + import static org.apache.brooklyn.core.catalog.internal.CatalogUtils.newClassLoadingContextForCatalogItems; import java.io.IOException; +import java.io.InputStream; import java.util.Arrays; import java.util.Collection; import java.util.List; http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/AbstractMemento.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/BrooklynMementoManifestImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/MementosGenerators.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/transformer/CompoundTransformer.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/340e036d/utils/common/src/test/java/org/apache/brooklyn/util/osgi/OsgiTestResources.java ----------------------------------------------------------------------
