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);
     }
     
     

Reply via email to