http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypeLoadingContexts.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypeLoadingContexts.java b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypeLoadingContexts.java new file mode 100644 index 0000000..22ea294 --- /dev/null +++ b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypeLoadingContexts.java @@ -0,0 +1,234 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.brooklyn.core.typereg; + +import groovy.xml.Entity; + +import java.util.Set; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import org.apache.brooklyn.api.entity.EntitySpec; +import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; +import org.apache.brooklyn.api.objs.BrooklynObject; +import org.apache.brooklyn.api.objs.BrooklynObjectType; +import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry.RegisteredTypeKind; +import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext; +import org.apache.brooklyn.util.collections.MutableSet; +import org.apache.brooklyn.util.javalang.JavaClassNames; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.collect.ImmutableSet; + +public class RegisteredTypeLoadingContexts { + + private static final Logger log = LoggerFactory.getLogger(RegisteredTypeLoadingContexts.BasicRegisteredTypeLoadingContext.class); + + /** Immutable (from caller's perspective) record of a constraint */ + public final static class BasicRegisteredTypeLoadingContext implements RegisteredTypeLoadingContext { + @Nullable private RegisteredTypeKind kind; + @Nullable private Class<?> expectedSuperType; + @Nonnull private Set<String> encounteredTypes = ImmutableSet.of(); + @Nullable BrooklynClassLoadingContext loader; + + private BasicRegisteredTypeLoadingContext() {} + + public BasicRegisteredTypeLoadingContext(@Nullable RegisteredTypeLoadingContext source) { + if (source==null) return; + + this.kind = source.getExpectedKind(); + this.expectedSuperType = source.getExpectedJavaSuperType(); + this.encounteredTypes = source.getAlreadyEncounteredTypes(); + this.loader = (BrooklynClassLoadingContext) source.getLoader(); + } + + @Override + public RegisteredTypeKind getExpectedKind() { + return kind; + } + + @Override + public Class<?> getExpectedJavaSuperType() { + if (expectedSuperType==null) return Object.class; + return expectedSuperType; + } + + @Override + public Set<String> getAlreadyEncounteredTypes() { + if (encounteredTypes==null) return ImmutableSet.of(); + return ImmutableSet.<String>copyOf(encounteredTypes); + } + + @Override + public BrooklynClassLoadingContext getLoader() { + return loader; + } + + @Override + public String toString() { + return JavaClassNames.cleanSimpleClassName(this)+"["+kind+","+expectedSuperType+","+encounteredTypes+"]"; + } + } + + /** returns a constraint which allows anything */ + public static RegisteredTypeLoadingContext any() { + return new BasicRegisteredTypeLoadingContext(); + } + + public static RegisteredTypeLoadingContext alreadyEncountered(Set<String> encounteredTypeSymbolicNames) { + BasicRegisteredTypeLoadingContext result = new BasicRegisteredTypeLoadingContext(); + result.encounteredTypes = encounteredTypeSymbolicNames == null ? ImmutableSet.<String>of() : ImmutableSet.copyOf(encounteredTypeSymbolicNames); + return result; + } + public static RegisteredTypeLoadingContext alreadyEncountered(Set<String> encounteredTypeSymbolicNames, String anotherEncounteredType) { + BasicRegisteredTypeLoadingContext result = new BasicRegisteredTypeLoadingContext(); + MutableSet<String> encounteredTypes = MutableSet.copyOf(encounteredTypeSymbolicNames); + encounteredTypes.addIfNotNull(anotherEncounteredType); + result.encounteredTypes = encounteredTypes.asUnmodifiable(); + return result; + } + + public static RegisteredTypeLoadingContext loaderAlreadyEncountered(BrooklynClassLoadingContext loader, Set<String> encounteredTypeSymbolicNames) { + return loaderAlreadyEncountered(loader, encounteredTypeSymbolicNames, null); + } + public static RegisteredTypeLoadingContext loaderAlreadyEncountered(BrooklynClassLoadingContext loader, Set<String> encounteredTypeSymbolicNames, String anotherEncounteredType) { + return withLoader(alreadyEncountered(encounteredTypeSymbolicNames, anotherEncounteredType), loader); + } + + private static RegisteredTypeLoadingContext of(RegisteredTypeKind kind, Class<?> javaSuperType) { + BasicRegisteredTypeLoadingContext result = new BasicRegisteredTypeLoadingContext(); + result.kind = kind; + result.expectedSuperType = javaSuperType; + return result; + } + + public static RegisteredTypeLoadingContext bean(Class<?> javaSuperType) { + return of(RegisteredTypeKind.BEAN, javaSuperType); + } + + public static RegisteredTypeLoadingContext spec(Class<? extends BrooklynObject> javaSuperType) { + return of(RegisteredTypeKind.SPEC, javaSuperType); + } + + public static <T> RegisteredTypeLoadingContext withBeanSuperType(@Nullable RegisteredTypeLoadingContext source, @Nullable Class<T> beanSuperType) { + Class<T> superType = beanSuperType; + BasicRegisteredTypeLoadingContext constraint = new BasicRegisteredTypeLoadingContext(source); + if (source==null) source = constraint; + if (superType==null) return source; + if (source.getExpectedJavaSuperType()==null || source.getExpectedJavaSuperType().isAssignableFrom( superType )) { + // the constraint was weaker than present; return the new constraint + return constraint; + } + if (superType.isAssignableFrom( source.getExpectedJavaSuperType() )) { + // the constraint was already for something more specific; ignore what we've inferred here + return source; + } + log.warn("Ambiguous bean supertypes ("+beanSuperType+" for target "+source.getExpectedJavaSuperType()+"); " + + "it is recommended that any registered type constraint for a spec be compatible with the spec type"); + return source; + } + + /** Takes a Spec java type and adds an expected java type to the {@link RegisteredTypeLoadingContext} */ + public static <T extends AbstractBrooklynObjectSpec<?,?>> RegisteredTypeLoadingContext withSpecSuperType(@Nullable RegisteredTypeLoadingContext source, @Nullable Class<T> specSuperType) { + Class<?> superType = lookupTargetTypeForSpec(specSuperType); + BasicRegisteredTypeLoadingContext constraint = new BasicRegisteredTypeLoadingContext(source); + if (source==null) source = constraint; + if (superType==null) return source; + if (source.getExpectedJavaSuperType()==null || source.getExpectedJavaSuperType().isAssignableFrom( superType )) { + // the constraint was weaker than present; return the new constraint + return constraint; + } + if (superType.isAssignableFrom( source.getExpectedJavaSuperType() )) { + // the constraint was already for something more specific; ignore what we've inferred here + return source; + } + // trickier situation; the constraint had a type not compatible with the spec type; log a warning and leave alone + // (e.g. caller specified some java super type which is not a super or sub of the spec target type; + // this may be because the caller specified a Spec as the type supertype, which is wrong; + // or they may have specified an interface along a different hierarchy, which we discouraged + // as it will make filtering/indexing more complex) + log.warn("Ambiguous spec supertypes ("+specSuperType+" for target "+source.getExpectedJavaSuperType()+"); " + + "it is recommended that any registered type constraint for a spec be compatible with the spec type"); + return source; + } + + /** given a spec, returns the class of the item it targets, for instance returns {@link Entity} given {@link EntitySpec}; + * see also {@link #lookupSpecTypeForTarget(Class)} */ + static <T extends AbstractBrooklynObjectSpec<?,?>> Class<? extends BrooklynObject> lookupTargetTypeForSpec(Class<T> specSuperType) { + if (specSuperType==null) return BrooklynObject.class; + BrooklynObjectType best = null; + + for (BrooklynObjectType t: BrooklynObjectType.values()) { + if (t.getSpecType()==null) continue; + if (!t.getSpecType().isAssignableFrom(specSuperType)) continue; + // on equality, exit immediately + if (t.getSpecType().equals(specSuperType)) return t.getInterfaceType(); + // else pick which is best + if (best==null) { best = t; continue; } + // if t is more specific, it is better (handles case when e.g. a Policy is a subclass of Entity) + if (best.getSpecType().isAssignableFrom(t.getSpecType())) { best = t; continue; } + } + if (best==null) { + log.warn("Unexpected spec supertype ("+specSuperType+"); treating as any "+BrooklynObject.class, new Throwable("Trace for unexpected spec supertype")); + return BrooklynObject.class; + } + // the spec is more specific, but we're not familiar with it here; return the best + return best.getInterfaceType(); + } + + /** given a {@link BrooklynObject}, returns the spec class which would generate it, for instance returns {@link EntitySpec} given {@link Entity}, + * or null if not known */ + static <BO extends BrooklynObject> Class<? extends AbstractBrooklynObjectSpec<?,?>> lookupSpecTypeForTarget(Class<BO> targetSuperType) { + if (targetSuperType==null) return null; + BrooklynObjectType best = null; + + for (BrooklynObjectType t: BrooklynObjectType.values()) { + if (t.getSpecType()==null) continue; + if (!t.getInterfaceType().isAssignableFrom(targetSuperType)) continue; + // on equality, exit immediately + if (t.getInterfaceType().equals(targetSuperType)) return t.getSpecType(); + // else pick which is best + if (best==null) { best = t; continue; } + // if t is more specific, it is better (handles case when e.g. a Policy is a subclass of Entity) + if (best.getSpecType().isAssignableFrom(t.getSpecType())) { best = t; continue; } + } + if (best==null) { + log.warn("Unexpected target supertype ("+targetSuperType+"); unable to infer spec type"); + return null; + } + // the spec is more specific, but we're not familiar with it here; return the best + return best.getSpecType(); + } + + public static RegisteredTypeLoadingContext loader(BrooklynClassLoadingContext loader) { + BasicRegisteredTypeLoadingContext result = new BasicRegisteredTypeLoadingContext(); + result.loader = loader; + return result; + } + + public static RegisteredTypeLoadingContext withLoader(RegisteredTypeLoadingContext constraint, BrooklynClassLoadingContext loader) { + BasicRegisteredTypeLoadingContext result = new BasicRegisteredTypeLoadingContext(constraint); + result.loader = loader; + return result; + } + +}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java index 0ebbdcd..a4a0460 100644 --- a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java +++ b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java @@ -32,7 +32,7 @@ import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry.RegisteredTypeKind; import org.apache.brooklyn.api.typereg.OsgiBundleWithUrl; import org.apache.brooklyn.api.typereg.RegisteredType; import org.apache.brooklyn.api.typereg.RegisteredType.TypeImplementationPlan; -import org.apache.brooklyn.api.typereg.RegisteredTypeConstraint; +import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext; import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.core.catalog.internal.CatalogUtils; import org.apache.brooklyn.core.config.ConfigKeys; @@ -112,7 +112,7 @@ public class RegisteredTypes { * @param mgmt */ @Beta // TODO should this be on the AbstractTypePlanTransformer ? - public static Class<?> loadActualJavaType(String javaTypeName, ManagementContext mgmt, RegisteredType type, RegisteredTypeConstraint constraint) throws Exception { + public static Class<?> loadActualJavaType(String javaTypeName, ManagementContext mgmt, RegisteredType type, RegisteredTypeLoadingContext constraint) throws Exception { Class<?> result = ((BasicRegisteredType)type).getCache().get(ACTUAL_JAVA_TYPE); if (result!=null) return result; @@ -152,12 +152,12 @@ public class RegisteredTypes { } /** returns an implementation of the spec class corresponding to the given target type; - * for use in {@link BrooklynTypePlanTransformer#create(RegisteredType, RegisteredTypeConstraint)} + * for use in {@link BrooklynTypePlanTransformer#create(RegisteredType, RegisteredTypeLoadingContext)} * implementations when dealing with a spec; returns null if none found * @param mgmt */ @Beta public static AbstractBrooklynObjectSpec<?,?> newSpecInstance(ManagementContext mgmt, Class<? extends BrooklynObject> targetType) throws Exception { - Class<? extends AbstractBrooklynObjectSpec<?, ?>> specType = RegisteredTypeConstraints.lookupSpecTypeForTarget(targetType); + Class<? extends AbstractBrooklynObjectSpec<?, ?>> specType = RegisteredTypeLoadingContexts.lookupSpecTypeForTarget(targetType); if (specType==null) return null; Method createMethod = specType.getMethod("create", Class.class); return (AbstractBrooklynObjectSpec<?, ?>) createMethod.invoke(null, targetType); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/core/src/main/java/org/apache/brooklyn/core/typereg/TypePlanTransformers.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/TypePlanTransformers.java b/core/src/main/java/org/apache/brooklyn/core/typereg/TypePlanTransformers.java index b2b496e..a082a31 100644 --- a/core/src/main/java/org/apache/brooklyn/core/typereg/TypePlanTransformers.java +++ b/core/src/main/java/org/apache/brooklyn/core/typereg/TypePlanTransformers.java @@ -30,7 +30,7 @@ import java.util.TreeMap; import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry; import org.apache.brooklyn.api.typereg.RegisteredType; -import org.apache.brooklyn.api.typereg.RegisteredTypeConstraint; +import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext; import org.apache.brooklyn.util.collections.MutableList; import org.apache.brooklyn.util.exceptions.Exceptions; import org.apache.brooklyn.util.exceptions.PropagatedRuntimeException; @@ -88,7 +88,7 @@ public class TypePlanTransformers { /** returns a list of {@link BrooklynTypePlanTransformer} instances for this {@link ManagementContext} * which may be able to handle the given plan; the list is sorted with highest-score transformer first */ @Beta - public static List<BrooklynTypePlanTransformer> forType(ManagementContext mgmt, RegisteredType type, RegisteredTypeConstraint constraint) { + public static List<BrooklynTypePlanTransformer> forType(ManagementContext mgmt, RegisteredType type, RegisteredTypeLoadingContext constraint) { Multimap<Double,BrooklynTypePlanTransformer> byScoreMulti = ArrayListMultimap.create(); Collection<BrooklynTypePlanTransformer> transformers = all(mgmt); for (BrooklynTypePlanTransformer transformer : transformers) { @@ -105,7 +105,7 @@ public class TypePlanTransformers { * <p> * callers should generally use one of the create methods on {@link BrooklynTypeRegistry} rather than using this method directly. */ @Beta - public static Maybe<Object> transform(ManagementContext mgmt, RegisteredType type, RegisteredTypeConstraint constraint) { + public static Maybe<Object> transform(ManagementContext mgmt, RegisteredType type, RegisteredTypeLoadingContext constraint) { if (type==null) return Maybe.absent("type cannot be null"); if (type.getPlan()==null) return Maybe.absent("type plan cannot be null, when instantiating "+type); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java b/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java index 35bdb68..d19592f 100644 --- a/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java +++ b/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java @@ -38,10 +38,10 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.catalog.internal.CatalogUtils; import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.BrooklynLoaderTracker; import org.apache.brooklyn.core.internal.BrooklynInitialization; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; @@ -68,6 +68,7 @@ import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Throwables; import com.google.common.collect.Lists; + import org.apache.brooklyn.util.osgi.OsgiUtils; public class ResourceUtils { http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java b/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java index 0f48dad..9f2eaaf 100644 --- a/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/objs/BasicSpecParameterFromListTest.java @@ -25,9 +25,9 @@ import static org.testng.Assert.assertTrue; import java.util.List; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.api.objs.SpecParameter; import org.apache.brooklyn.config.ConfigKey; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext; import org.apache.brooklyn.core.objs.BasicSpecParameter; import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/software/base/src/main/java/org/apache/brooklyn/entity/resolve/ChefEntitySpecResolver.java ---------------------------------------------------------------------- diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/resolve/ChefEntitySpecResolver.java b/software/base/src/main/java/org/apache/brooklyn/entity/resolve/ChefEntitySpecResolver.java index 07d4342..5c513e0 100644 --- a/software/base/src/main/java/org/apache/brooklyn/entity/resolve/ChefEntitySpecResolver.java +++ b/software/base/src/main/java/org/apache/brooklyn/entity/resolve/ChefEntitySpecResolver.java @@ -21,7 +21,7 @@ package org.apache.brooklyn.entity.resolve; import java.util.Set; import org.apache.brooklyn.api.entity.EntitySpec; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.resolve.entity.AbstractEntitySpecResolver; import org.apache.brooklyn.entity.chef.ChefConfig; import org.apache.brooklyn.entity.chef.ChefEntity; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/software/base/src/main/java/org/apache/brooklyn/entity/resolve/HardcodedCatalogEntitySpecResolver.java ---------------------------------------------------------------------- diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/resolve/HardcodedCatalogEntitySpecResolver.java b/software/base/src/main/java/org/apache/brooklyn/entity/resolve/HardcodedCatalogEntitySpecResolver.java index 5541996..7d48643 100644 --- a/software/base/src/main/java/org/apache/brooklyn/entity/resolve/HardcodedCatalogEntitySpecResolver.java +++ b/software/base/src/main/java/org/apache/brooklyn/entity/resolve/HardcodedCatalogEntitySpecResolver.java @@ -23,7 +23,7 @@ import java.util.Set; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.resolve.entity.AbstractEntitySpecResolver; import org.apache.brooklyn.entity.brooklynnode.BrooklynNode; import org.apache.brooklyn.entity.group.DynamicCluster; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/api/AssemblyTemplateSpecInstantiator.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/api/AssemblyTemplateSpecInstantiator.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/api/AssemblyTemplateSpecInstantiator.java index 8fb7164..87bd381 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/api/AssemblyTemplateSpecInstantiator.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/api/AssemblyTemplateSpecInstantiator.java @@ -23,10 +23,10 @@ import java.util.Set; import org.apache.brooklyn.api.entity.Application; import org.apache.brooklyn.api.entity.EntitySpec; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.camp.CampPlatform; import org.apache.brooklyn.camp.spi.AssemblyTemplate; import org.apache.brooklyn.camp.spi.instantiate.AssemblyTemplateInstantiator; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; public interface AssemblyTemplateSpecInstantiator extends AssemblyTemplateInstantiator { http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java index 5070777..6c7a479 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java @@ -24,6 +24,7 @@ import java.util.Set; import org.apache.brooklyn.api.entity.Application; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.camp.CampPlatform; import org.apache.brooklyn.camp.brooklyn.api.AssemblyTemplateSpecInstantiator; import org.apache.brooklyn.camp.spi.Assembly; @@ -33,7 +34,6 @@ import org.apache.brooklyn.camp.spi.collection.ResolvableLink; import org.apache.brooklyn.core.mgmt.EntityManagementUtils; import org.apache.brooklyn.core.mgmt.EntityManagementUtils.CreationResult; import org.apache.brooklyn.core.mgmt.HasBrooklynManagementContext; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext; import org.apache.brooklyn.util.collections.MutableSet; import org.apache.brooklyn.util.core.flags.TypeCoercions; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java index 69c9109..5d078a3 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynComponentTemplateResolver.java @@ -33,6 +33,7 @@ import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.api.typereg.RegisteredType; import org.apache.brooklyn.camp.brooklyn.BrooklynCampConstants; import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys; @@ -49,7 +50,6 @@ import org.apache.brooklyn.core.config.ConfigKeys; import org.apache.brooklyn.core.mgmt.BrooklynTags; import org.apache.brooklyn.core.mgmt.BrooklynTaskTags; import org.apache.brooklyn.core.mgmt.ManagementContextInjectable; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext; import org.apache.brooklyn.core.resolve.entity.EntitySpecResolver; import org.apache.brooklyn.util.collections.MutableList; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java index efe2d9d..9458046 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityDecorationResolver.java @@ -33,7 +33,7 @@ import org.apache.brooklyn.api.typereg.RegisteredType; import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys; import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator.InstantiatorFromKey; import org.apache.brooklyn.core.objs.BasicSpecParameter; -import org.apache.brooklyn.core.typereg.RegisteredTypeConstraints; +import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts; import org.apache.brooklyn.util.collections.MutableList; import org.apache.brooklyn.util.core.config.ConfigBag; @@ -114,7 +114,7 @@ public abstract class BrooklynEntityDecorationResolver<DT> { String policyType = decoLoader.getTypeName().get(); ManagementContext mgmt = instantiator.loader.getManagementContext(); - RegisteredType item = mgmt.getTypeRegistry().get(policyType, RegisteredTypeConstraints.spec(Policy.class)); + RegisteredType item = mgmt.getTypeRegistry().get(policyType, RegisteredTypeLoadingContexts.spec(Policy.class)); PolicySpec<?> spec; if (item!=null) { spec = mgmt.getTypeRegistry().createSpec(item, null, PolicySpec.class); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java index 07a8267..91a490a 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynEntityMatcher.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys; import org.apache.brooklyn.camp.spi.PlatformComponentTemplate; import org.apache.brooklyn.camp.spi.PlatformComponentTemplate.Builder; @@ -29,7 +30,6 @@ import org.apache.brooklyn.camp.spi.pdp.AssemblyTemplateConstructor; import org.apache.brooklyn.camp.spi.pdp.Service; import org.apache.brooklyn.camp.spi.resolve.PdpMatcher; import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.text.Strings; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java index b1b5876..01bfaa2 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynYamlTypeInstantiator.java @@ -23,8 +23,8 @@ import java.util.Map; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.config.ConfigBag; import org.apache.brooklyn.util.exceptions.Exceptions; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java index abd32c6..9096168 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampInternalUtils.java @@ -32,6 +32,7 @@ import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.location.LocationSpec; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.api.objs.SpecParameter; import org.apache.brooklyn.api.policy.Policy; import org.apache.brooklyn.api.policy.PolicySpec; @@ -45,7 +46,6 @@ import org.apache.brooklyn.camp.spi.instantiate.AssemblyTemplateInstantiator; import org.apache.brooklyn.camp.spi.pdp.DeploymentPlan; import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog; import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.BrooklynLoaderTracker; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.objs.BasicSpecParameter; import org.apache.brooklyn.core.objs.BrooklynObjectInternal.ConfigurationSupportInternal; import org.apache.brooklyn.entity.stock.BasicApplicationImpl; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java index 1fc6eaf..3070280 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java @@ -26,16 +26,16 @@ import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.api.policy.Policy; import org.apache.brooklyn.api.typereg.RegisteredType; -import org.apache.brooklyn.api.typereg.RegisteredTypeConstraint; +import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext; import org.apache.brooklyn.camp.CampPlatform; import org.apache.brooklyn.camp.brooklyn.api.AssemblyTemplateSpecInstantiator; import org.apache.brooklyn.camp.spi.AssemblyTemplate; import org.apache.brooklyn.camp.spi.instantiate.AssemblyTemplateInstantiator; import org.apache.brooklyn.core.catalog.internal.CatalogUtils; import org.apache.brooklyn.core.mgmt.EntityManagementUtils; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.typereg.RegisteredTypes; import org.apache.brooklyn.util.text.Strings; @@ -45,7 +45,7 @@ class CampResolver { private ManagementContext mgmt; private RegisteredType type; - private RegisteredTypeConstraint context; + private RegisteredTypeLoadingContext context; /** whether to allow parsing of the 'full' syntax for applications, * where items are wrapped in a "services:" block, and if the wrapper is an application, @@ -62,18 +62,17 @@ class CampResolver { * i.e. not wrapped in any "services:" or "brooklyn.{locations,policies}" block */ boolean allowTypeSyntax = true; - public CampResolver(ManagementContext mgmt, RegisteredType type, RegisteredTypeConstraint context) { + public CampResolver(ManagementContext mgmt, RegisteredType type, RegisteredTypeLoadingContext context) { this.mgmt = mgmt; this.type = type; this.context = context; } public AbstractBrooklynObjectSpec<?, ?> createSpec() { - // TODO modern approach + // TODO new-style approach: // AbstractBrooklynObjectSpec<?, ?> spec = RegisteredTypes.newSpecInstance(mgmt, /* 'type' key */); // spec.configure(keysAndValues); - return createSpecFromFull(mgmt, type, - context.getEncounteredTypes(), (BrooklynClassLoadingContext) context.getLoader()); + return createSpecFromFull(mgmt, type, context.getAlreadyEncounteredTypes(), context.getLoader()); } static AbstractBrooklynObjectSpec<?, ?> createSpecFromFull(ManagementContext mgmt, RegisteredType item, Set<String> parentEncounteredTypes, BrooklynClassLoadingContext loaderO) { http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampToSpecTransformer.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampToSpecTransformer.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampToSpecTransformer.java index 39959e0..f2b224c 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampToSpecTransformer.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampToSpecTransformer.java @@ -25,12 +25,12 @@ import org.apache.brooklyn.api.entity.Application; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.camp.CampPlatform; import org.apache.brooklyn.camp.brooklyn.BrooklynCampReservedKeys; import org.apache.brooklyn.camp.brooklyn.api.AssemblyTemplateSpecInstantiator; import org.apache.brooklyn.camp.spi.AssemblyTemplate; import org.apache.brooklyn.camp.spi.instantiate.AssemblyTemplateInstantiator; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext; import org.apache.brooklyn.core.plan.PlanNotRecognizedException; import org.apache.brooklyn.core.plan.PlanToSpecTransformer; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java index dd8a0d5..4793a59 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java @@ -24,7 +24,7 @@ import java.util.Map; import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec; import org.apache.brooklyn.api.typereg.RegisteredType; import org.apache.brooklyn.api.typereg.RegisteredType.TypeImplementationPlan; -import org.apache.brooklyn.api.typereg.RegisteredTypeConstraint; +import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext; import org.apache.brooklyn.core.typereg.AbstractCustomImplementationPlan; import org.apache.brooklyn.core.typereg.AbstractTypePlanTransformer; import org.apache.brooklyn.core.typereg.BasicTypeImplementationPlan; @@ -37,12 +37,14 @@ public class CampTypePlanTransformer extends AbstractTypePlanTransformer { private static final List<String> FORMATS = ImmutableList.of("brooklyn-camp", "camp", "brooklyn"); + public static final String FORMAT = FORMATS.get(0); + public CampTypePlanTransformer() { - super(FORMATS.get(0), "OASIS CAMP / Brooklyn", "The Apache Brooklyn implementation of the OASIS CAMP blueprint plan format and extensions"); + super(FORMAT, "OASIS CAMP / Brooklyn", "The Apache Brooklyn implementation of the OASIS CAMP blueprint plan format and extensions"); } @Override - protected double scoreForNullFormat(Object planData, RegisteredType type, RegisteredTypeConstraint context) { + protected double scoreForNullFormat(Object planData, RegisteredType type, RegisteredTypeLoadingContext context) { Maybe<Map<Object, Object>> plan = RegisteredTypes.getAsYamlMap(planData); if (plan.isAbsent()) return 0; if (plan.get().containsKey("services")) return 0.8; @@ -50,19 +52,19 @@ public class CampTypePlanTransformer extends AbstractTypePlanTransformer { } @Override - protected double scoreForNonmatchingNonnullFormat(String planFormat, Object planData, RegisteredType type, RegisteredTypeConstraint context) { + protected double scoreForNonmatchingNonnullFormat(String planFormat, Object planData, RegisteredType type, RegisteredTypeLoadingContext context) { if (FORMATS.contains(planFormat.toLowerCase())) return 0.9; return 0; } @Override - protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeConstraint context) throws Exception { + protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception { // TODO cache return new CampResolver(mgmt, type, context).createSpec(); } @Override - protected Object createBean(RegisteredType type, RegisteredTypeConstraint context) throws Exception { + protected Object createBean(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception { // beans not supported by this? return null; } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java index 703a7cf..d4cf6e9 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/ServiceTypeResolverAdaptor.java @@ -22,8 +22,8 @@ import java.util.Set; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynComponentTemplateResolver; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.resolve.entity.AbstractEntitySpecResolver; import org.apache.brooklyn.core.resolve.entity.EntitySpecResolver; import org.slf4j.Logger; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/UrlServiceSpecResolver.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/UrlServiceSpecResolver.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/UrlServiceSpecResolver.java index 1e54f76..3799418 100644 --- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/UrlServiceSpecResolver.java +++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/service/UrlServiceSpecResolver.java @@ -23,11 +23,11 @@ import java.util.Set; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.camp.brooklyn.BrooklynCampConstants; import org.apache.brooklyn.camp.brooklyn.spi.creation.CampTypePlanTransformer; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.resolve.entity.EntitySpecResolver; -import org.apache.brooklyn.core.typereg.RegisteredTypeConstraints; +import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts; import org.apache.brooklyn.core.typereg.RegisteredTypes; import org.apache.brooklyn.util.collections.MutableSet; import org.apache.brooklyn.util.core.ResourceUtils; @@ -63,14 +63,13 @@ public class UrlServiceSpecResolver implements EntitySpecResolver { if (encounteredTypes.contains(type)) { throw new IllegalStateException("URL " + type + " is self referential."); } - encounteredTypes = MutableSet.<String>builder().addAll(encounteredTypes).add(type).build().asUnmodifiable(); // Referenced specs are expected to be CAMP format as well. // XXX somehow specify to allow full syntax for services - EntitySpec<?> item = loader.getManagementContext().getTypeRegistry().createSpec( - RegisteredTypes.spec(null, null, - new CampTypePlanTransformer.CampTypeImplementationPlan(yaml), Entity.class), - RegisteredTypeConstraints.alreadyVisited(encounteredTypes, loader), + EntitySpec<?> item = loader.getManagementContext().getTypeRegistry().createSpecFromPlan( + CampTypePlanTransformer.FORMAT, + yaml, + RegisteredTypeLoadingContexts.loaderAlreadyEncountered(loader, encounteredTypes, type), EntitySpec.class); return item; } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java index c13e004..15df062 100644 --- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java +++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java @@ -29,6 +29,7 @@ import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.api.mgmt.Task; import org.apache.brooklyn.api.typereg.RegisteredType; +import org.apache.brooklyn.camp.brooklyn.spi.creation.CampTypePlanTransformer; import org.apache.brooklyn.camp.brooklyn.spi.creation.CampTypePlanTransformer.CampTypeImplementationPlan; import org.apache.brooklyn.core.catalog.internal.CatalogUtils; import org.apache.brooklyn.core.entity.Entities; @@ -37,7 +38,7 @@ import org.apache.brooklyn.core.mgmt.BrooklynTaskTags; import org.apache.brooklyn.core.mgmt.EntityManagementUtils; import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext; import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests; -import org.apache.brooklyn.core.typereg.RegisteredTypeConstraints; +import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts; import org.apache.brooklyn.core.typereg.RegisteredTypes; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.ResourceUtils; @@ -117,9 +118,8 @@ public abstract class AbstractYamlTest { } protected Entity createAndStartApplication(Reader input) throws Exception { - RegisteredType type = RegisteredTypes.spec(null, null, new CampTypeImplementationPlan(Streams.readFully(input)), Application.class); EntitySpec<?> spec = - mgmt().getTypeRegistry().createSpec(type, RegisteredTypeConstraints.spec(Application.class), EntitySpec.class); + mgmt().getTypeRegistry().createSpecFromPlan(CampTypePlanTransformer.FORMAT, Streams.readFully(input), RegisteredTypeLoadingContexts.spec(Application.class), EntitySpec.class); final Entity app = brooklynMgmt.getEntityManager().createEntity(spec); // start the app (happens automatically if we use camp to instantiate, but not if we use crate spec approach) app.invoke(Startable.START, MutableMap.<String,String>of()).get(); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/BrooklynYamlTypeInstantiatorTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/BrooklynYamlTypeInstantiatorTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/BrooklynYamlTypeInstantiatorTest.java index a94f3a7..c76731b 100644 --- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/BrooklynYamlTypeInstantiatorTest.java +++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/BrooklynYamlTypeInstantiatorTest.java @@ -18,11 +18,11 @@ */ package org.apache.brooklyn.camp.brooklyn; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.api.policy.Policy; import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator; import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator.Factory; import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator.InstantiatorFromKey; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext; import org.testng.Assert; import org.testng.annotations.Test; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java index cb0b169..93507aa 100644 --- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java +++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java @@ -54,7 +54,7 @@ import org.apache.brooklyn.core.mgmt.osgi.OsgiStandaloneTest; import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests; import org.apache.brooklyn.core.test.entity.TestApplication; import org.apache.brooklyn.core.test.entity.TestEntity; -import org.apache.brooklyn.core.typereg.RegisteredTypeConstraints; +import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts; import org.apache.brooklyn.core.typereg.RegisteredTypes; import org.apache.brooklyn.test.support.TestResourceUnavailableException; import org.apache.brooklyn.util.collections.MutableMap; @@ -232,7 +232,7 @@ public class CampYamlLiteTest { } private void assertMgmtHasSampleMyCatalogApp(String symbolicName, String bundleUrl) { - RegisteredType item = mgmt.getTypeRegistry().get(symbolicName, RegisteredTypeConstraints.spec(Entity.class)); + RegisteredType item = mgmt.getTypeRegistry().get(symbolicName, RegisteredTypeLoadingContexts.spec(Entity.class)); assertNotNull(item, "failed to load item with id=" + symbolicName + " from catalog. Entries were: " + Joiner.on(",").join(mgmt.getTypeRegistry().getAll())); assertEquals(item.getSymbolicName(), symbolicName); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java ---------------------------------------------------------------------- diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java index f820597..6f9de6e 100644 --- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java +++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java @@ -25,6 +25,7 @@ import java.util.Set; import org.apache.brooklyn.api.entity.Application; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.mgmt.ManagementContext; +import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.camp.CampPlatform; import org.apache.brooklyn.camp.brooklyn.api.AssemblyTemplateSpecInstantiator; import org.apache.brooklyn.camp.spi.AbstractResource; @@ -34,7 +35,6 @@ import org.apache.brooklyn.camp.spi.PlatformComponentTemplate; import org.apache.brooklyn.camp.spi.collection.ResolvableLink; import org.apache.brooklyn.camp.spi.instantiate.BasicAssemblyTemplateInstantiator; import org.apache.brooklyn.core.mgmt.HasBrooklynManagementContext; -import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext; import org.apache.brooklyn.core.test.entity.TestApplication; import org.apache.brooklyn.core.test.entity.TestEntity; import org.apache.brooklyn.util.collections.MutableMap; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java index 699c860..a0c5d8f 100644 --- a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java +++ b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ApplicationResource.java @@ -58,7 +58,7 @@ import org.apache.brooklyn.core.mgmt.entitlement.Entitlements; import org.apache.brooklyn.core.mgmt.entitlement.Entitlements.EntityAndItem; import org.apache.brooklyn.core.mgmt.entitlement.Entitlements.StringAndArgument; import org.apache.brooklyn.core.sensor.Sensors; -import org.apache.brooklyn.core.typereg.RegisteredTypeConstraints; +import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts; import org.apache.brooklyn.entity.group.AbstractGroup; import org.apache.brooklyn.rest.api.ApplicationApi; import org.apache.brooklyn.rest.domain.ApplicationSpec; @@ -402,7 +402,7 @@ public class ApplicationResource extends AbstractBrooklynRestResource implements } private void checkSpecTypeIsValid(String type, Class<? extends BrooklynObject> subType) { - if (mgmt().getTypeRegistry().get(type, RegisteredTypeConstraints.spec(subType)) == null) { + if (mgmt().getTypeRegistry().get(type, RegisteredTypeLoadingContexts.spec(subType)) == null) { try { brooklyn().getCatalogClassLoader().loadClass(type); } catch (ClassNotFoundException e) { http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e932d5fc/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java index 848701f..ddfdc93 100644 --- a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java +++ b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java @@ -49,7 +49,7 @@ import org.apache.brooklyn.core.catalog.internal.CatalogItemComparator; import org.apache.brooklyn.core.catalog.internal.CatalogUtils; import org.apache.brooklyn.core.mgmt.entitlement.Entitlements; import org.apache.brooklyn.core.mgmt.entitlement.Entitlements.StringAndArgument; -import org.apache.brooklyn.core.typereg.RegisteredTypeConstraints; +import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts; import org.apache.brooklyn.core.typereg.RegisteredTypePredicates; import org.apache.brooklyn.rest.api.CatalogApi; import org.apache.brooklyn.rest.domain.ApiError; @@ -148,7 +148,7 @@ public class CatalogResource extends AbstractBrooklynRestResource implements Cat Entitlements.getEntitlementContext().user()); } try { - RegisteredType item = mgmt().getTypeRegistry().get(entityId, RegisteredTypeConstraints.spec(Entity.class)); + RegisteredType item = mgmt().getTypeRegistry().get(entityId, RegisteredTypeLoadingContexts.spec(Entity.class)); if (item==null) { throw WebResourceUtils.notFound("Entity with id '%s' not found", entityId); }
