You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/12/21 13:10:57 UTC
[07/12] incubator-brooklyn git commit: clean-up of type registry work
following PR comments; all addressed apart from weird validate semantics
clean-up of type registry work following PR comments; all addressed apart from weird validate semantics
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/48bb7985
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/48bb7985
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/48bb7985
Branch: refs/heads/master
Commit: 48bb79857ce0f841017d5d4721bfd510e902d7f1
Parents: 420ea30
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Dec 10 14:17:31 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Dec 17 13:22:51 2015 +0000
----------------------------------------------------------------------
.../api/typereg/BrooklynTypeRegistry.java | 2 +-
.../core/catalog/internal/CatalogUtils.java | 8 ++--
.../core/location/BasicLocationRegistry.java | 2 +-
.../typereg/AbstractTypePlanTransformer.java | 2 +-
.../core/typereg/BasicBrooklynTypeRegistry.java | 26 ++++++++-----
.../core/typereg/RegisteredTypePredicates.java | 22 +++++------
.../brooklyn/core/typereg/RegisteredTypes.java | 40 ++++++++++++--------
.../typereg/BasicBrooklynTypeRegistryTest.java | 18 ++++-----
.../BrooklynEntityDecorationResolver.java | 7 ++--
.../catalog/CatalogYamlLocationTest.java | 4 +-
.../catalog/CatalogYamlVersioningTest.java | 14 +++----
.../brooklyn/test/lite/CampYamlLiteTest.java | 4 +-
.../rest/resources/ApplicationResource.java | 2 +-
.../rest/resources/CatalogResource.java | 4 +-
14 files changed, 88 insertions(+), 67 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/api/src/main/java/org/apache/brooklyn/api/typereg/BrooklynTypeRegistry.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/typereg/BrooklynTypeRegistry.java b/api/src/main/java/org/apache/brooklyn/api/typereg/BrooklynTypeRegistry.java
index eb59d27..17a7fb3 100644
--- a/api/src/main/java/org/apache/brooklyn/api/typereg/BrooklynTypeRegistry.java
+++ b/api/src/main/java/org/apache/brooklyn/api/typereg/BrooklynTypeRegistry.java
@@ -42,7 +42,7 @@ public interface BrooklynTypeRegistry {
}
Iterable<RegisteredType> getAll();
- Iterable<RegisteredType> getAll(Predicate<? super RegisteredType> filter);
+ Iterable<RegisteredType> getMatching(Predicate<? super RegisteredType> filter);
/** @return The item matching the given given
* {@link RegisteredType#getSymbolicName() symbolicName}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
index 078e1d7..fbf34f7 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogUtils.java
@@ -86,12 +86,12 @@ public class CatalogUtils {
ManagementContext mgmt = ((EntityInternal)entity).getManagementContext();
String catId = entity.getCatalogItemId();
if (Strings.isBlank(catId)) return JavaBrooklynClassLoadingContext.create(mgmt);
- RegisteredType cat = RegisteredTypes.validate(mgmt.getTypeRegistry().get(catId), RegisteredTypeLoadingContexts.spec(Entity.class)).get();
- if (cat==null) {
+ Maybe<RegisteredType> cat = RegisteredTypes.tryValidate(mgmt.getTypeRegistry().get(catId), RegisteredTypeLoadingContexts.spec(Entity.class));
+ if (cat.get()==null) {
log.warn("Cannot load "+catId+" to get classloader for "+entity+"; will try with standard loader, but might fail subsequently");
return JavaBrooklynClassLoadingContext.create(mgmt);
}
- return newClassLoadingContext(mgmt, cat);
+ return newClassLoadingContext(mgmt, cat.get());
}
public static BrooklynClassLoadingContext newClassLoadingContext(@Nullable ManagementContext mgmt, String catalogItemId, Collection<? extends OsgiBundleWithUrl> libraries) {
@@ -268,7 +268,7 @@ public class CatalogUtils {
}
public static boolean isBestVersion(ManagementContext mgmt, CatalogItem<?,?> item) {
- RegisteredType best = RegisteredTypes.getBestVersion(mgmt.getTypeRegistry().getAll(
+ RegisteredType best = RegisteredTypes.getBestVersion(mgmt.getTypeRegistry().getMatching(
RegisteredTypePredicates.symbolicName(item.getSymbolicName())));
if (best==null) return false;
return (best.getVersion().equals(item.getVersion()));
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java b/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java
index 202ecf4..b8452f3 100644
--- a/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java
+++ b/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java
@@ -288,7 +288,7 @@ public class BasicLocationRegistry implements LocationRegistry {
definedLocations.putAll(oldDefined);
}
- for (RegisteredType item: mgmt.getTypeRegistry().getAll(RegisteredTypePredicates.IS_LOCATION)) {
+ for (RegisteredType item: mgmt.getTypeRegistry().getMatching(RegisteredTypePredicates.IS_LOCATION)) {
updateDefinedLocation(item);
count++;
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
index 283b7da..7b91529 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
@@ -128,7 +128,7 @@ public abstract class AbstractTypePlanTransformer implements BrooklynTypePlanTra
protected <T> T validate(T createdObject, RegisteredType type, RegisteredTypeLoadingContext constraint) {
if (createdObject==null) return null;
try {
- return RegisteredTypes.validate(createdObject, type, constraint).get();
+ return RegisteredTypes.tryValidate(createdObject, type, constraint).get();
} catch (Exception e) {
Exceptions.propagateIfFatal(e);
throw new IllegalStateException("Created incompatible object: "+Exceptions.collapseText(e), e);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
index a642861..496c028 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistry.java
@@ -62,7 +62,7 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
}
public Iterable<RegisteredType> getAll() {
- return getAll(Predicates.alwaysTrue());
+ return getMatching(Predicates.alwaysTrue());
}
private Iterable<RegisteredType> getAllWithoutCatalog(Predicate<? super RegisteredType> filter) {
@@ -74,12 +74,12 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
private RegisteredType getExactWithoutLegacyCatalog(String symbolicName, String version, RegisteredTypeLoadingContext constraint) {
// TODO look in any nested/private registries
RegisteredType item = localRegisteredTypes.get(symbolicName+":"+version);
- return RegisteredTypes.validate(item, constraint).orNull();
+ return RegisteredTypes.tryValidate(item, constraint).orNull();
}
@SuppressWarnings("deprecation")
@Override
- public Iterable<RegisteredType> getAll(Predicate<? super RegisteredType> filter) {
+ public Iterable<RegisteredType> getMatching(Predicate<? super RegisteredType> filter) {
return Iterables.filter(Iterables.concat(
getAllWithoutCatalog(filter),
Iterables.transform(mgmt.getCatalog().getCatalogItems(), RegisteredTypes.CI_TO_RT)),
@@ -95,16 +95,20 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
RegisteredType type;
if (!BrooklynCatalog.DEFAULT_VERSION.equals(version)) {
+ // normal code path when version is supplied
+
type = getExactWithoutLegacyCatalog(symbolicNameOrAliasIfNoVersion, version, context);
if (type!=null) return Maybe.of(type);
}
-
+
if (BrooklynCatalog.DEFAULT_VERSION.equals(version)) {
- Iterable<RegisteredType> types = getAll(Predicates.and(RegisteredTypePredicates.symbolicName(symbolicNameOrAliasIfNoVersion),
+ // alternate code path, if version blank or default
+
+ Iterable<RegisteredType> types = getMatching(Predicates.and(RegisteredTypePredicates.symbolicName(symbolicNameOrAliasIfNoVersion),
RegisteredTypePredicates.satisfies(context)));
if (Iterables.isEmpty(types)) {
// look for alias if no exact symbolic name match AND no version is specified
- types = getAll(Predicates.and(RegisteredTypePredicates.alias(symbolicNameOrAliasIfNoVersion),
+ types = getMatching(Predicates.and(RegisteredTypePredicates.alias(symbolicNameOrAliasIfNoVersion),
RegisteredTypePredicates.satisfies(context) ) );
// if there are multiple symbolic names then throw?
Set<String> uniqueSymbolicNames = MutableSet.of();
@@ -112,8 +116,10 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
uniqueSymbolicNames.add(t.getSymbolicName());
}
if (uniqueSymbolicNames.size()>1) {
- log.warn("Multiple matches found for alias '"+symbolicNameOrAliasIfNoVersion+"': "+uniqueSymbolicNames+"; "
- + "picking highest version across different symbolic names. Use symbolic_name:version syntax to prevent this lookup.");
+ String message = "Multiple matches found for alias '"+symbolicNameOrAliasIfNoVersion+"': "+uniqueSymbolicNames+"; "
+ + "refusing to select any.";
+ log.warn(message);
+ return Maybe.absent(message);
}
}
if (!Iterables.isEmpty(types)) {
@@ -122,7 +128,7 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
}
}
- // fallback to catalog
+ // missing case is to look for exact version in legacy catalog
CatalogItem<?, ?> item = mgmt.getCatalog().getCatalogItem(symbolicNameOrAliasIfNoVersion, version);
if (item!=null)
return Maybe.of( RegisteredTypes.CI_TO_RT.apply( item ) );
@@ -275,7 +281,7 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
if (!type.getId().equals(type.getSymbolicName()+":"+type.getVersion()))
Asserts.fail("Registered type "+type+" has ID / symname mismatch");
- RegisteredType oldType = localRegisteredTypes.get(type.getId());
+ RegisteredType oldType = mgmt.getTypeRegistry().get(type.getId());
if (oldType==null || canForce) {
log.debug("Inserting "+type+" into "+this);
localRegisteredTypes.put(type.getId(), type);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypePredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypePredicates.java b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypePredicates.java
index bf6fb6f..2c02874 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypePredicates.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypePredicates.java
@@ -117,13 +117,13 @@ public class RegisteredTypePredicates {
return version(Predicates.equalTo(name));
}
public static Predicate<RegisteredType> version(final Predicate<? super String> filter) {
- return new versionMatches(filter);
+ return new VersionMatches(filter);
}
- private static class versionMatches implements Predicate<RegisteredType> {
+ private static class VersionMatches implements Predicate<RegisteredType> {
private final Predicate<? super String> filter;
- public versionMatches(Predicate<? super String> filter) {
+ public VersionMatches(Predicate<? super String> filter) {
this.filter = filter;
}
@Override
@@ -135,14 +135,14 @@ public class RegisteredTypePredicates {
public static Predicate<RegisteredType> alias(final String alias) {
return aliases(CollectionFunctionals.any(Predicates.equalTo(alias)));
}
- public static Predicate<RegisteredType> aliases(final Predicate<Iterable<String>> filter) {
+ public static Predicate<RegisteredType> aliases(final Predicate<? super Iterable<String>> filter) {
return new AliasesMatch(filter);
}
private static class AliasesMatch implements Predicate<RegisteredType> {
- private final Predicate<Iterable<String>> filter;
+ private final Predicate<? super Iterable<String>> filter;
- public AliasesMatch(Predicate<Iterable<String>> filter) {
+ public AliasesMatch(Predicate<? super Iterable<String>> filter) {
this.filter = filter;
}
@Override
@@ -154,14 +154,14 @@ public class RegisteredTypePredicates {
public static Predicate<RegisteredType> tag(final Object tag) {
return tags(CollectionFunctionals.any(Predicates.equalTo(tag)));
}
- public static Predicate<RegisteredType> tags(final Predicate<Iterable<Object>> filter) {
+ public static Predicate<RegisteredType> tags(final Predicate<? super Iterable<Object>> filter) {
return new TagsMatch(filter);
}
private static class TagsMatch implements Predicate<RegisteredType> {
- private final Predicate<Iterable<Object>> filter;
+ private final Predicate<? super Iterable<Object>> filter;
- public TagsMatch(Predicate<Iterable<Object>> filter) {
+ public TagsMatch(Predicate<? super Iterable<Object>> filter) {
this.filter = filter;
}
@Override
@@ -232,7 +232,7 @@ public class RegisteredTypePredicates {
}
public static boolean isBestVersion(ManagementContext mgmt, RegisteredType item) {
if (item==null) return false;
- Iterable<RegisteredType> matches = mgmt.getTypeRegistry().getAll(
+ Iterable<RegisteredType> matches = mgmt.getTypeRegistry().getMatching(
RegisteredTypePredicates.symbolicName(item.getSymbolicName()) );
if (!matches.iterator().hasNext()) return false;
RegisteredType best = RegisteredTypes.getBestVersion(matches);
@@ -250,7 +250,7 @@ public class RegisteredTypePredicates {
}
@Override
public boolean apply(@Nullable RegisteredType item) {
- return RegisteredTypes.validate(item, context).isPresent();
+ return RegisteredTypes.tryValidate(item, context).isPresent();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/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 3a89e60..2f792f0 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
@@ -19,12 +19,12 @@
package org.apache.brooklyn.core.typereg;
import java.lang.reflect.Method;
-import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.apache.brooklyn.api.catalog.CatalogItem;
@@ -40,7 +40,6 @@ import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.objs.BrooklynObjectInternal;
import org.apache.brooklyn.core.typereg.JavaClassNameTypePlanTransformer.JavaClassNameTypeImplementationPlan;
-import org.apache.brooklyn.util.collections.MutableList;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
import org.apache.brooklyn.util.text.NaturalOrderComparator;
@@ -52,6 +51,7 @@ import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.ComparisonChain;
+import com.google.common.collect.Ordering;
import com.google.common.reflect.TypeToken;
/**
@@ -96,7 +96,6 @@ public class RegisteredTypes {
type.description = item.getDescription();
type.iconUrl = item.getIconUrl();
- if (item.getLibraries()!=null) type.bundles.addAll(item.getLibraries());
type.disabled = item.isDisabled();
type.deprecated = item.isDeprecated();
if (item.getLibraries()!=null) type.bundles.addAll(item.getLibraries());
@@ -284,7 +283,13 @@ public class RegisteredTypes {
return false;
}
- public static Maybe<RegisteredType> validate(RegisteredType item, final RegisteredTypeLoadingContext constraint) {
+ /** Validates that the given type matches the context (if supplied);
+ * returns a Maybe(null) if the type is null. */
+ public static Maybe<RegisteredType> tryValidate(RegisteredType item, final RegisteredTypeLoadingContext constraint) {
+ // kept as a Maybe in case someone wants a wrapper around item validity;
+ // unclear what the contract should be, as this can return Maybe.Present(null)
+ // which is suprising, but it is more natural to callers otherwise they'll likely do a separate null check on the item
+ // (often handling null different to errors) so the Maybe.get() is redundant as they have an object for the input anyway.
if (item==null || constraint==null) return Maybe.of(item);
if (constraint.getExpectedKind()!=null && !constraint.getExpectedKind().equals(item.getKind()))
return Maybe.absent(item+" is not the expected kind "+constraint.getExpectedKind());
@@ -312,7 +317,7 @@ public class RegisteredTypes {
public static RegisteredType getBestVersion(Iterable<RegisteredType> types) {
if (types==null || !types.iterator().hasNext()) return null;
- return Collections.max(MutableList.copyOf(types), RegisteredTypeComparator.INSTANCE);
+ return Ordering.from(RegisteredTypeComparator.INSTANCE).max(types);
}
public static class RegisteredTypeComparator implements Comparator<RegisteredType> {
@@ -329,8 +334,13 @@ public class RegisteredTypes {
}
}
- public static <T> Maybe<T> validate(final T object, final RegisteredType type, final RegisteredTypeLoadingContext constraint) {
- RegisteredTypeKind kind = type!=null ? type.getKind() : constraint!=null ? constraint.getExpectedKind() : null;
+ /** validates that the given object (required) satisfies the constraints implied by the given
+ * type and context object, using {@link Maybe} as the result set absent containing the error(s)
+ * if not satisfied */
+ public static <T> Maybe<T> tryValidate(@Nonnull final T object, @Nullable final RegisteredType type, @Nullable final RegisteredTypeLoadingContext context) {
+ if (object==null) return Maybe.absent("object is null");
+
+ RegisteredTypeKind kind = type!=null ? type.getKind() : context!=null ? context.getExpectedKind() : null;
if (kind==null) {
if (object instanceof AbstractBrooklynObjectSpec) kind=RegisteredTypeKind.SPEC;
else kind=RegisteredTypeKind.BEAN;
@@ -338,17 +348,17 @@ public class RegisteredTypes {
return new RegisteredTypeKindVisitor<Maybe<T>>() {
@Override
protected Maybe<T> visitSpec() {
- return validateSpec(object, type, constraint);
+ return validateSpec(object, type, context);
}
@Override
protected Maybe<T> visitBean() {
- return validateBean(object, type, constraint);
+ return validateBean(object, type, context);
}
}.visit(kind);
}
- private static <T> Maybe<T> validateBean(T object, RegisteredType type, final RegisteredTypeLoadingContext constraint) {
+ private static <T> Maybe<T> validateBean(T object, RegisteredType type, final RegisteredTypeLoadingContext context) {
if (object==null) return Maybe.absent("object is null");
if (type!=null) {
@@ -358,11 +368,11 @@ public class RegisteredTypes {
return Maybe.absent(object+" does not have all the java supertypes of "+type);
}
- if (constraint!=null) {
- if (constraint.getExpectedKind()!=RegisteredTypeKind.BEAN)
- return Maybe.absent("Validating a bean when constraint expected "+constraint.getExpectedKind());
- if (constraint.getExpectedJavaSuperType()!=null && !constraint.getExpectedJavaSuperType().isInstance(object))
- return Maybe.absent(object+" is not of the expected java supertype "+constraint.getExpectedJavaSuperType());
+ if (context!=null) {
+ if (context.getExpectedKind()!=RegisteredTypeKind.BEAN)
+ return Maybe.absent("Validating a bean when constraint expected "+context.getExpectedKind());
+ if (context.getExpectedJavaSuperType()!=null && !context.getExpectedJavaSuperType().isInstance(object))
+ return Maybe.absent(object+" is not of the expected java supertype "+context.getExpectedJavaSuperType());
}
return Maybe.of(object);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/core/src/test/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistryTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistryTest.java b/core/src/test/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistryTest.java
index a62ab7e..6f2f573 100644
--- a/core/src/test/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistryTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/typereg/BasicBrooklynTypeRegistryTest.java
@@ -56,7 +56,7 @@ public class BasicBrooklynTypeRegistryTest extends BrooklynMgmtUnitTestSupport {
Assert.assertEquals( registry().get(SAMPLE_TYPE.getSymbolicName(), SAMPLE_TYPE.getVersion()), SAMPLE_TYPE );
Assert.assertEquals( registry().get(SAMPLE_TYPE.getId()), SAMPLE_TYPE );
- Assert.assertTrue( Iterables.contains(registry().getAll(
+ Assert.assertTrue( Iterables.contains(registry().getMatching(
RegisteredTypePredicates.symbolicName(SAMPLE_TYPE.getSymbolicName())), SAMPLE_TYPE) );
}
@@ -78,7 +78,7 @@ public class BasicBrooklynTypeRegistryTest extends BrooklynMgmtUnitTestSupport {
}
// only one entry
- Assert.assertEquals( Iterables.size(registry().getAll(
+ Assert.assertEquals( Iterables.size(registry().getMatching(
RegisteredTypePredicates.symbolicName(SAMPLE_TYPE.getSymbolicName()))), 1);
// unversioned request returns sample
Assert.assertEquals( registry().get(SAMPLE_TYPE.getSymbolicName()), SAMPLE_TYPE );
@@ -95,7 +95,7 @@ public class BasicBrooklynTypeRegistryTest extends BrooklynMgmtUnitTestSupport {
Assert.assertEquals( registry().get(SAMPLE_TYPE2.getId()), SAMPLE_TYPE2 );
Assert.assertNotEquals( registry().get(SAMPLE_TYPE2.getId()), SAMPLE_TYPE );
- Assert.assertEquals( Iterables.size(registry().getAll(
+ Assert.assertEquals( Iterables.size(registry().getMatching(
RegisteredTypePredicates.symbolicName(SAMPLE_TYPE.getSymbolicName()))), 2);
// unversioned request returns latest
@@ -106,11 +106,11 @@ public class BasicBrooklynTypeRegistryTest extends BrooklynMgmtUnitTestSupport {
public void testGetWithFilter() {
add(SAMPLE_TYPE);
- Assert.assertEquals( Iterables.size(registry().getAll(Predicates.and(
+ Assert.assertEquals( Iterables.size(registry().getMatching(Predicates.and(
RegisteredTypePredicates.symbolicName(SAMPLE_TYPE.getSymbolicName()),
RegisteredTypePredicates.subtypeOf(String.class)
))), 1 );
- Assert.assertTrue( Iterables.isEmpty(registry().getAll(Predicates.and(
+ Assert.assertTrue( Iterables.isEmpty(registry().getMatching(Predicates.and(
RegisteredTypePredicates.symbolicName(SAMPLE_TYPE.getSymbolicName()),
RegisteredTypePredicates.subtypeOf(Integer.class)
))) );
@@ -136,7 +136,7 @@ public class BasicBrooklynTypeRegistryTest extends BrooklynMgmtUnitTestSupport {
add(sampleType15WithAliases);
Assert.assertEquals(sampleType15WithAliases.getAliases(), MutableSet.of("my_a", "the_a"));
- Assert.assertEquals( Iterables.size(registry().getAll(
+ Assert.assertEquals( Iterables.size(registry().getMatching(
RegisteredTypePredicates.symbolicName(SAMPLE_TYPE.getSymbolicName()))), 3);
Assert.assertEquals( registry().get("my_a"), sampleType15WithAliases );
@@ -147,7 +147,7 @@ public class BasicBrooklynTypeRegistryTest extends BrooklynMgmtUnitTestSupport {
Assert.assertEquals( registry().get(sampleType15WithAliases.getSymbolicName()), SAMPLE_TYPE2 );
// and filters work
- Assert.assertEquals( registry().getAll(RegisteredTypePredicates.alias("the_a")),
+ Assert.assertEquals( registry().getMatching(RegisteredTypePredicates.alias("the_a")),
MutableList.of(sampleType15WithAliases) );
Assert.assertEquals( registry().get("my_a",
RegisteredTypeLoadingContexts.bean(String.class)), sampleType15WithAliases );
@@ -166,13 +166,13 @@ public class BasicBrooklynTypeRegistryTest extends BrooklynMgmtUnitTestSupport {
add(sampleType15WithTags);
Assert.assertEquals(sampleType15WithTags.getTags(), MutableSet.of("my_a", "the_a"));
- Assert.assertEquals( Iterables.size(registry().getAll(
+ Assert.assertEquals( Iterables.size(registry().getMatching(
RegisteredTypePredicates.symbolicName(SAMPLE_TYPE.getSymbolicName()))), 3);
Assert.assertEquals( registry().get(sampleType15WithTags.getId()), sampleType15WithTags );
// and filters work
- Assert.assertEquals( registry().getAll(RegisteredTypePredicates.tag("the_a")),
+ Assert.assertEquals( registry().getMatching(RegisteredTypePredicates.tag("the_a")),
MutableList.of(sampleType15WithTags) );
// but can't lookup by tag as a get
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/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 acde8ec..e4f500d 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
@@ -37,6 +37,7 @@ import org.apache.brooklyn.core.typereg.RegisteredTypeLoadingContexts;
import org.apache.brooklyn.core.typereg.RegisteredTypes;
import org.apache.brooklyn.util.collections.MutableList;
import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.guava.Maybe;
import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableList;
@@ -115,10 +116,10 @@ public abstract class BrooklynEntityDecorationResolver<DT> {
String policyType = decoLoader.getTypeName().get();
ManagementContext mgmt = instantiator.loader.getManagementContext();
- RegisteredType item = RegisteredTypes.validate(mgmt.getTypeRegistry().get(policyType), RegisteredTypeLoadingContexts.spec(Policy.class)).get();
+ Maybe<RegisteredType> item = RegisteredTypes.tryValidate(mgmt.getTypeRegistry().get(policyType), RegisteredTypeLoadingContexts.spec(Policy.class));
PolicySpec<?> spec;
- if (item!=null) {
- spec = mgmt.getTypeRegistry().createSpec(item, null, PolicySpec.class);
+ if (item.get()!=null) {
+ spec = mgmt.getTypeRegistry().createSpec(item.get(), null, PolicySpec.class);
} else {
Class<? extends Policy> type = decoLoader.getType(Policy.class);
spec = PolicySpec.create(type)
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlLocationTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlLocationTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlLocationTest.java
index 291a06a..47925e5 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlLocationTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlLocationTest.java
@@ -53,7 +53,7 @@ public class CatalogYamlLocationTest extends AbstractYamlTest {
@AfterMethod
public void tearDown() {
- for (RegisteredType ci : mgmt().getTypeRegistry().getAll(RegisteredTypePredicates.IS_LOCATION)) {
+ for (RegisteredType ci : mgmt().getTypeRegistry().getMatching(RegisteredTypePredicates.IS_LOCATION)) {
mgmt().getCatalog().deleteCatalogItem(ci.getSymbolicName(), ci.getVersion());
}
}
@@ -246,7 +246,7 @@ public class CatalogYamlLocationTest extends AbstractYamlTest {
}
private int countCatalogLocations() {
- return Iterables.size(mgmt().getTypeRegistry().getAll(RegisteredTypePredicates.IS_LOCATION));
+ return Iterables.size(mgmt().getTypeRegistry().getMatching(RegisteredTypePredicates.IS_LOCATION));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlVersioningTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlVersioningTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlVersioningTest.java
index f92f3a4..440c114 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlVersioningTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlVersioningTest.java
@@ -121,11 +121,11 @@ public class CatalogYamlVersioningTest extends AbstractYamlTest {
addCatalogEntity(symbolicName, version);
Iterable<RegisteredType> matches;
- matches = types.getAll(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
+ matches = types.getMatching(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
assertTrue(matches.iterator().hasNext());
mgmt().getCatalog().deleteCatalogItem(symbolicName, version);
- matches = types.getAll(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
+ matches = types.getMatching(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
assertFalse(matches.iterator().hasNext());
}
@@ -135,11 +135,11 @@ public class CatalogYamlVersioningTest extends AbstractYamlTest {
addCatalogEntity(symbolicName, null);
Iterable<RegisteredType> matches;
- matches = types.getAll(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
+ matches = types.getMatching(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
assertTrue(matches.iterator().hasNext());
mgmt().getCatalog().deleteCatalogItem(symbolicName, BasicBrooklynCatalog.NO_VERSION);
- matches = types.getAll(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
+ matches = types.getMatching(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
assertFalse(matches.iterator().hasNext());
}
@@ -150,7 +150,7 @@ public class CatalogYamlVersioningTest extends AbstractYamlTest {
String v2 = "0.2.0-SNAPSHOT";
addCatalogEntity(symbolicName, v1);
addCatalogEntity(symbolicName, v2);
- Iterable<RegisteredType> items = types.getAll(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
+ Iterable<RegisteredType> items = types.getMatching(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
assertEquals(Iterables.size(items), 2);
}
@@ -212,7 +212,7 @@ public class CatalogYamlVersioningTest extends AbstractYamlTest {
" type: referrent\n" +
" version: 1.1"));
- Iterable<RegisteredType> items = types.getAll(RegisteredTypePredicates.symbolicName(Predicates.equalTo("referrer")));
+ Iterable<RegisteredType> items = types.getMatching(RegisteredTypePredicates.symbolicName(Predicates.equalTo("referrer")));
Assert.assertEquals(Iterables.size(items), 1, "Wrong number of: "+items);
RegisteredType item = Iterables.getOnlyElement(items);
Assert.assertEquals(item.getVersion(), "1.0");
@@ -239,7 +239,7 @@ public class CatalogYamlVersioningTest extends AbstractYamlTest {
}
private void assertSingleCatalogItem(String symbolicName, String version) {
- Iterable<RegisteredType> items = types.getAll(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
+ Iterable<RegisteredType> items = types.getMatching(RegisteredTypePredicates.symbolicName(Predicates.equalTo(symbolicName)));
RegisteredType item = Iterables.getOnlyElement(items);
assertEquals(item.getSymbolicName(), symbolicName);
assertEquals(item.getVersion(), version);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/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 57adfeb..9cd6bc5 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
@@ -230,11 +230,13 @@ public class CampYamlLiteTest {
}
private void assertMgmtHasSampleMyCatalogApp(String symbolicName, String bundleUrl) {
- RegisteredType item = RegisteredTypes.validate(mgmt.getTypeRegistry().get(symbolicName), RegisteredTypeLoadingContexts.spec(Entity.class)).get();
+ RegisteredType item = mgmt.getTypeRegistry().get(symbolicName);
assertNotNull(item, "failed to load item with id=" + symbolicName + " from catalog. Entries were: " +
Joiner.on(",").join(mgmt.getTypeRegistry().getAll()));
assertEquals(item.getSymbolicName(), symbolicName);
+ RegisteredTypes.tryValidate(item, RegisteredTypeLoadingContexts.spec(Entity.class)).get();
+
// stored as yaml, not java
String planYaml = RegisteredTypes.getImplementationDataStringForSpec(item);
assertNotNull(planYaml);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/48bb7985/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 89f253a..83c6423 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
@@ -402,7 +402,7 @@ public class ApplicationResource extends AbstractBrooklynRestResource implements
}
private void checkSpecTypeIsValid(String type, Class<? extends BrooklynObject> subType) {
- if (RegisteredTypes.validate(mgmt().getTypeRegistry().get(type), RegisteredTypeLoadingContexts.spec(subType)) == null) {
+ if (RegisteredTypes.tryValidate(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/48bb7985/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 03b05f9..0993f16 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
@@ -149,10 +149,12 @@ public class CatalogResource extends AbstractBrooklynRestResource implements Cat
Entitlements.getEntitlementContext().user());
}
try {
- RegisteredType item = RegisteredTypes.validate(mgmt().getTypeRegistry().get(entityId), RegisteredTypeLoadingContexts.spec(Entity.class)).get();
+ RegisteredType item = mgmt().getTypeRegistry().get(entityId);
if (item==null) {
throw WebResourceUtils.notFound("Entity with id '%s' not found", entityId);
}
+ RegisteredTypes.tryValidate(item, RegisteredTypeLoadingContexts.spec(Entity.class));
+
brooklyn().getCatalog().deleteCatalogItem(item.getSymbolicName(), item.getVersion());
} catch (NoSuchElementException e) {
throw WebResourceUtils.notFound("Entity with id '%s' not found", entityId);