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 c6516ec006 per previous, also ensure search path is set even when 
there is no catalog id
c6516ec006 is described below

commit c6516ec0068b904d73ade308a4618d55b66df16b
Author: Alex Heneveld <[email protected]>
AuthorDate: Wed Mar 29 10:48:35 2023 +0100

    per previous, also ensure search path is set even when there is no catalog 
id
---
 .../java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java  | 2 +-
 .../org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java  | 2 ++
 .../apache/brooklyn/core/objs/proxy/InternalLocationFactory.java    | 2 ++
 .../org/apache/brooklyn/core/objs/proxy/InternalPolicyFactory.java  | 6 +++++-
 .../java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java    | 5 +++++
 5 files changed, 15 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java 
b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java
index a2d6897cc9..00574e5493 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractBrooklynObject.java
@@ -219,7 +219,7 @@ public abstract class AbstractBrooklynObject implements 
BrooklynObjectInternal {
 
     @Override
     public void addSearchPath(List<String> ids) {
-        synchronized (searchPath) {
+        if (ids!=null) synchronized (searchPath) {
             searchPath.addAll(ids);
         }
     }
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 393c99cfb8..32915efcbe 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
@@ -302,6 +302,8 @@ public class InternalEntityFactory extends InternalFactory {
 
                 if (spec.getCatalogItemId() != null) {
                     
theEntity.setCatalogItemIdAndSearchPath(spec.getCatalogItemId(), 
spec.getCatalogItemIdSearchPath());
+                } else {
+                    theEntity.addSearchPath(spec.getCatalogItemIdSearchPath());
                 }
 
                 entity.tags().addTags(spec.getTags());
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalLocationFactory.java
 
b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalLocationFactory.java
index 4aab6ed57f..8405cca0b6 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalLocationFactory.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalLocationFactory.java
@@ -79,6 +79,8 @@ public class InternalLocationFactory extends InternalFactory {
             
             if (spec.getCatalogItemId()!=null) {
                 
location.setCatalogItemIdAndSearchPath(spec.getCatalogItemId(), 
spec.getCatalogItemIdSearchPath());
+            } else {
+                location.addSearchPath(spec.getCatalogItemIdSearchPath());
             }
             
             loc.tags().addTags(spec.getTags());
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalPolicyFactory.java
 
b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalPolicyFactory.java
index afd0ea6c5c..5b18b2b726 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalPolicyFactory.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalPolicyFactory.java
@@ -67,8 +67,10 @@ public class InternalPolicyFactory extends InternalFactory {
             }
             if (spec.getCatalogItemId()!=null) {
                 policy.setCatalogItemIdAndSearchPath(spec.getCatalogItemId(), 
spec.getCatalogItemIdSearchPath());
+            } else {
+                policy.addSearchPath(spec.getCatalogItemIdSearchPath());
             }
-            
+
             pol.tags().addTags(spec.getTags());
             
             if (isNewStyle(clazz)) {
@@ -109,6 +111,8 @@ public class InternalPolicyFactory extends InternalFactory {
             
             if (spec.getCatalogItemId()!=null) {
                 
theEnricher.setCatalogItemIdAndSearchPath(spec.getCatalogItemId(), 
spec.getCatalogItemIdSearchPath());
+            } else {
+                theEnricher.addSearchPath(spec.getCatalogItemIdSearchPath());
             }
             
             enricher.tags().addTags(spec.getTags());
diff --git 
a/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java 
b/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java
index 6863fdf20a..efa0aea290 100644
--- a/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java
+++ b/core/src/test/java/org/apache/brooklyn/util/core/ClassLoaderUtilsTest.java
@@ -53,12 +53,14 @@ import org.apache.brooklyn.entity.stock.BasicEntity;
 import org.apache.brooklyn.test.Asserts;
 import org.apache.brooklyn.test.support.TestResourceUnavailableException;
 import org.apache.brooklyn.util.collections.MutableList;
+import org.apache.brooklyn.util.collections.MutableSet;
 import org.apache.brooklyn.util.core.osgi.Osgis;
 import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.guava.Maybe;
 import org.apache.brooklyn.util.maven.MavenArtifact;
 import org.apache.brooklyn.util.maven.MavenRetriever;
 import org.apache.brooklyn.util.osgi.OsgiTestResources;
+import org.apache.brooklyn.util.osgi.VersionedName;
 import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.launch.Framework;
@@ -133,6 +135,9 @@ public class ClassLoaderUtilsTest {
         // test load still works when we have the item in the search path only 
but not a catalog item id on the entity
         ((EntityInternal)entity).setCatalogItemIdAndSearchPath(null, 
MutableList.of(entity.getCatalogItemId()));
         
ResourceUtils.create(entity).getResourceAsString("classpath://"+classname.replaceAll("\\.",
 "/")+".class");
+
+        Entity e2 = 
mgmt.getEntityManager().createEntity(EntitySpec.create(BasicEntity.class).addSearchPath(MutableList.of(bundle.getSymbolicName()+":"+bundle.getVersion())));
+        
ResourceUtils.create(e2).getResourceAsString("classpath://"+classname.replaceAll("\\.",
 "/")+".class");
     }
 
     @Test

Reply via email to