You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/09/21 15:38:54 UTC
[1/2] brooklyn-server git commit: BROOKLYN-537: fix NPE listing
catalog items
Repository: brooklyn-server
Updated Branches:
refs/heads/master c92d5d533 -> 3ac961dbc
BROOKLYN-537: fix NPE listing catalog items
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/54d4633d
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/54d4633d
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/54d4633d
Branch: refs/heads/master
Commit: 54d4633dfaaa2ac7682667f6a02e22073ee8c18c
Parents: 2a63d8e
Author: Aled Sage <al...@gmail.com>
Authored: Thu Sep 21 09:51:25 2017 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Sep 21 09:51:25 2017 +0100
----------------------------------------------------------------------
.../brooklyn/api/typereg/RegisteredType.java | 5 ++++-
.../core/typereg/BasicBrooklynTypeRegistry.java | 20 ++++++++++----------
.../typereg/BasicTypeImplementationPlan.java | 4 +++-
.../typereg/RegisteredTypeLoadingContexts.java | 6 ++++--
4 files changed, 21 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/54d4633d/api/src/main/java/org/apache/brooklyn/api/typereg/RegisteredType.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/typereg/RegisteredType.java b/api/src/main/java/org/apache/brooklyn/api/typereg/RegisteredType.java
index b7158e2..fddcde3 100644
--- a/api/src/main/java/org/apache/brooklyn/api/typereg/RegisteredType.java
+++ b/api/src/main/java/org/apache/brooklyn/api/typereg/RegisteredType.java
@@ -21,6 +21,8 @@ package org.apache.brooklyn.api.typereg;
import java.util.Collection;
import java.util.Set;
+import javax.annotation.Nullable;
+
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.objs.BrooklynObject;
@@ -112,9 +114,10 @@ public interface RegisteredType extends Identifiable {
* this may be null if the relevant transformer was not declared when created,
* but in general we should look to determine the kind as early as possible
* and use that to retrieve the appropriate such transformer */
+ @Nullable
String getPlanFormat();
/** data for the implementation; may be more specific */
- Object getPlanData();
+ Object getPlanData(); // TODO unclear if this is allowed to return null; most (?) usages do a null check
@Override boolean equals(Object obj);
@Override int hashCode();
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/54d4633d/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 983403c..565e3f0 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
@@ -193,13 +193,13 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
}
@Override
- public <SpecT extends AbstractBrooklynObjectSpec<?,?>> SpecT createSpec(RegisteredType type, @Nullable RegisteredTypeLoadingContext constraint, Class<SpecT> specSuperType) {
+ public <SpecT extends AbstractBrooklynObjectSpec<?,?>> SpecT createSpec(RegisteredType type, @Nullable RegisteredTypeLoadingContext constraint, @Nullable Class<SpecT> specSuperType) {
Preconditions.checkNotNull(type, "type");
if (type.getKind()==RegisteredTypeKind.SPEC) {
return createSpec(type, type.getPlan(), type.getSymbolicName(), type.getVersion(), type.getSuperTypes(), constraint, specSuperType);
} else if (type.getKind()==RegisteredTypeKind.UNRESOLVED) {
- if (constraint.getAlreadyEncounteredTypes().contains(type.getSymbolicName())) {
+ if (constraint != null && constraint.getAlreadyEncounteredTypes().contains(type.getSymbolicName())) {
throw new UnsupportedTypePlanException("Cannot create spec from type "+type+" (kind "+type.getKind()+"), recursive reference following "+constraint.getAlreadyEncounteredTypes());
} else {
@@ -225,13 +225,13 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
RegisteredType type,
TypeImplementationPlan plan,
@Nullable String symbolicName, @Nullable String version, Set<Object> superTypes,
- @Nullable RegisteredTypeLoadingContext constraint, Class<SpecT> specSuperType) {
+ @Nullable RegisteredTypeLoadingContext constraint, @Nullable Class<SpecT> specSuperType) {
// TODO type is only used to call to "transform"; we should perhaps change transform so it doesn't need the type?
if (constraint!=null) {
if (constraint.getExpectedKind()!=null && constraint.getExpectedKind()!=RegisteredTypeKind.SPEC) {
throw new IllegalStateException("Cannot create spec with constraint "+constraint);
}
- if (constraint.getAlreadyEncounteredTypes().contains(symbolicName)) {
+ if (symbolicName != null && constraint.getAlreadyEncounteredTypes().contains(symbolicName)) {
// avoid recursive cycle
// TODO implement using java if permitted
}
@@ -254,7 +254,7 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
}
item = CatalogItemBuilder.newItem(ciType,
symbolicName!=null ? symbolicName : Identifiers.makeRandomId(8),
- version!=null ? version : BasicBrooklynCatalog.DEFAULT_VERSION)
+ version!=null ? version : BasicBrooklynCatalog.DEFAULT_VERSION)
.plan((String)plan.getPlanData())
.build();
}
@@ -284,13 +284,13 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
}
@Override
- public <SpecT extends AbstractBrooklynObjectSpec<?, ?>> SpecT createSpecFromPlan(String planFormat, Object planData, RegisteredTypeLoadingContext optionalConstraint, Class<SpecT> optionalSpecSuperType) {
+ public <SpecT extends AbstractBrooklynObjectSpec<?, ?>> SpecT createSpecFromPlan(@Nullable String planFormat, Object planData, @Nullable RegisteredTypeLoadingContext optionalConstraint, @Nullable Class<SpecT> optionalSpecSuperType) {
return createSpec(RegisteredTypes.anonymousRegisteredType(RegisteredTypeKind.SPEC, new BasicTypeImplementationPlan(planFormat, planData)),
optionalConstraint, optionalSpecSuperType);
}
@Override
- public <T> T createBean(RegisteredType type, RegisteredTypeLoadingContext constraint, Class<T> optionalResultSuperType) {
+ public <T> T createBean(RegisteredType type, @Nullable RegisteredTypeLoadingContext constraint, @Nullable Class<T> optionalResultSuperType) {
Preconditions.checkNotNull(type, "type");
if (type.getKind()!=RegisteredTypeKind.BEAN) {
if (type.getKind()==RegisteredTypeKind.UNRESOLVED) throw new ReferencedUnresolvedTypeException(type);
@@ -314,13 +314,13 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
}
@Override
- public <T> T createBeanFromPlan(String planFormat, Object planData, RegisteredTypeLoadingContext optionalConstraint, Class<T> optionalSuperType) {
+ public <T> T createBeanFromPlan(String planFormat, Object planData, @Nullable RegisteredTypeLoadingContext optionalConstraint, @Nullable Class<T> optionalSuperType) {
return createBean(RegisteredTypes.anonymousRegisteredType(RegisteredTypeKind.BEAN, new BasicTypeImplementationPlan(planFormat, planData)),
optionalConstraint, optionalSuperType);
}
@Override
- public <T> T create(RegisteredType type, RegisteredTypeLoadingContext constraint, Class<T> optionalResultSuperType) {
+ public <T> T create(RegisteredType type, @Nullable RegisteredTypeLoadingContext constraint, @Nullable Class<T> optionalResultSuperType) {
Preconditions.checkNotNull(type, "type");
return new RegisteredTypeKindVisitor<T>() {
@Override protected T visitBean() { return createBean(type, constraint, optionalResultSuperType); }
@@ -349,7 +349,7 @@ public class BasicBrooklynTypeRegistry implements BrooklynTypeRegistry {
}
@Override
- public <T> T createFromPlan(Class<T> requiredSuperTypeHint, String planFormat, Object planData, RegisteredTypeLoadingContext optionalConstraint) {
+ public <T> T createFromPlan(Class<T> requiredSuperTypeHint, @Nullable String planFormat, Object planData, @Nullable RegisteredTypeLoadingContext optionalConstraint) {
if (AbstractBrooklynObjectSpec.class.isAssignableFrom(requiredSuperTypeHint)) {
@SuppressWarnings({ "unchecked", "rawtypes" })
T result = (T) createSpecFromPlan(planFormat, planData, optionalConstraint, (Class)requiredSuperTypeHint);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/54d4633d/core/src/main/java/org/apache/brooklyn/core/typereg/BasicTypeImplementationPlan.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicTypeImplementationPlan.java b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicTypeImplementationPlan.java
index 206698f..43276bc 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/BasicTypeImplementationPlan.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/BasicTypeImplementationPlan.java
@@ -18,6 +18,8 @@
*/
package org.apache.brooklyn.core.typereg;
+import javax.annotation.Nullable;
+
import org.apache.brooklyn.api.typereg.RegisteredType.TypeImplementationPlan;
import com.google.common.base.Objects;
@@ -26,7 +28,7 @@ public class BasicTypeImplementationPlan implements TypeImplementationPlan {
final String format;
final Object data;
- public BasicTypeImplementationPlan(String format, Object data) {
+ public BasicTypeImplementationPlan(@Nullable String format, Object data) {
this.format = format;
this.data = data;
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/54d4633d/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
index f6ee347..7eab626 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypeLoadingContexts.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypeLoadingContexts.java
@@ -175,8 +175,10 @@ public class RegisteredTypeLoadingContexts {
}
/** 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) {
+ * see also {@link #lookupSpecTypeForTarget(Class)},
+ * If given null, returns {@link BrooklynObject}
+ */
+ static <T extends AbstractBrooklynObjectSpec<?,?>> Class<? extends BrooklynObject> lookupTargetTypeForSpec(@Nullable Class<T> specSuperType) {
if (specSuperType==null) return BrooklynObject.class;
BrooklynObjectType best = null;
[2/2] brooklyn-server git commit: This closes #839
Posted by dr...@apache.org.
This closes #839
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/3ac961db
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/3ac961db
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/3ac961db
Branch: refs/heads/master
Commit: 3ac961dbcad7a4600682e81ff36c83884a5391c3
Parents: c92d5d5 54d4633
Author: Duncan Godwin <dr...@googlemail.com>
Authored: Thu Sep 21 16:38:45 2017 +0100
Committer: Duncan Godwin <dr...@googlemail.com>
Committed: Thu Sep 21 16:38:45 2017 +0100
----------------------------------------------------------------------
.../brooklyn/api/typereg/RegisteredType.java | 5 ++++-
.../core/typereg/BasicBrooklynTypeRegistry.java | 20 ++++++++++----------
.../typereg/BasicTypeImplementationPlan.java | 4 +++-
.../typereg/RegisteredTypeLoadingContexts.java | 6 ++++--
4 files changed, 21 insertions(+), 14 deletions(-)
----------------------------------------------------------------------