This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
The following commit(s) were added to refs/heads/master by this push:
new f66ffb8 let java-type-name accept a type: prefix added for consistency
f66ffb8 is described below
commit f66ffb801138ec9c8f1c9c800e7fd64143c5ace9
Author: Alex Heneveld <[email protected]>
AuthorDate: Mon Oct 18 11:48:05 2021 +0100
let java-type-name accept a type: prefix added for consistency
and better errors and comments
---
.../brooklyn/core/catalog/internal/BasicBrooklynCatalog.java | 2 +-
.../apache/brooklyn/core/objs/proxy/InternalEntityFactory.java | 9 +++++++--
.../core/typereg/JavaClassNameTypePlanTransformer.java | 10 +++++++++-
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
index a739c0e..cf21aaf 100644
---
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
+++
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
@@ -1262,7 +1262,7 @@ public class BasicBrooklynCatalog implements
BrooklynCatalog {
if (itemDefinitionParsedToStringOrMap instanceof String) {
if
(((String)itemDefinitionParsedToStringOrMap).trim().indexOf("\n")<0) {
- // if just a one-line string supplied, treat at type
unless it parses as a map
+ // if just a one-line string supplied, treat as type
unless it parses as a map
Object reparsed = null;
try {
reparsed = Iterables.getOnlyElement( Yamls.parseAll(
(String) itemDefinitionParsedToStringOrMap ) );
diff --git
a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
index 003da32..aedd617 100644
---
a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
+++
b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
@@ -526,7 +526,8 @@ public class InternalEntityFactory extends InternalFactory {
.map(className -> managementContext.getTypeRegistry()
.getMaybe(className, null)
.map(registeredType -> (EntityInitializer)
managementContext.getTypeRegistry().create(registeredType, null, null))
-
.or(JavaBrooklynClassLoadingContext.create(managementContext)
+ .or(() ->
+
JavaBrooklynClassLoadingContext.create(managementContext)
.tryLoadClass(className)
.map(aClass -> {
try {
@@ -534,8 +535,12 @@ public class InternalEntityFactory extends InternalFactory
{
} catch (InstantiationException |
IllegalAccessException e) {
throw new IllegalStateException(e);
}
+ })
+ .or(() -> {
+ log.warn("Cannot find initializer
'"+className+"'; not in type registry and not found on default classpath;
ignoring");
+ return null;
}))
- .orNull())
+ )
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
diff --git
a/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
b/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
index dc95695..a66f370 100644
---
a/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
+++
b/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
@@ -26,6 +26,7 @@ import org.apache.brooklyn.api.typereg.RegisteredType;
import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.text.Identifiers;
+import org.apache.brooklyn.util.text.Strings;
/**
* Instantiates classes from a registered type which simply
@@ -80,7 +81,14 @@ public class JavaClassNameTypePlanTransformer extends
AbstractTypePlanTransforme
}
private Class<?> getType(RegisteredType type, RegisteredTypeLoadingContext
context) throws Exception {
- return
RegisteredTypes.loadActualJavaType((String)type.getPlan().getPlanData(), mgmt,
type, context);
+ String planData = ((String)type.getPlan().getPlanData()).trim();
+
+ // if catalog, or user, makes it look like yaml type: ... then remove
that prefix
+ if (!Strings.isMultiLine(planData) && planData.startsWith("type: ")) {
+ planData = Strings.removeFromStart(planData, "type:").trim();
+ }
+
+ return RegisteredTypes.loadActualJavaType(planData, mgmt, type,
context);
}