Check class loader for entity if not in catalog

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/1bdb1821
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/1bdb1821
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/1bdb1821

Branch: refs/heads/0.5.0
Commit: 1bdb1821d61b3ea88026cb3d6019ac1e49efded7
Parents: 41c5bbd
Author: Andrew Kennedy <[email protected]>
Authored: Thu Apr 25 18:00:36 2013 +0100
Committer: Andrew Kennedy <[email protected]>
Committed: Thu Apr 25 18:00:36 2013 +0100

----------------------------------------------------------------------
 .../rest/util/BrooklynRestResourceUtils.java        | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1bdb1821/usage/rest/src/main/java/brooklyn/rest/util/BrooklynRestResourceUtils.java
----------------------------------------------------------------------
diff --git 
a/usage/rest/src/main/java/brooklyn/rest/util/BrooklynRestResourceUtils.java 
b/usage/rest/src/main/java/brooklyn/rest/util/BrooklynRestResourceUtils.java
index 54e4a94..93b3b29 100644
--- a/usage/rest/src/main/java/brooklyn/rest/util/BrooklynRestResourceUtils.java
+++ b/usage/rest/src/main/java/brooklyn/rest/util/BrooklynRestResourceUtils.java
@@ -256,8 +256,20 @@ public class BrooklynRestResourceUtils {
         String type = spec.getType();
         String name = spec.getName();
         Map<String, String> config = (spec.getConfig() == null) ? 
Maps.<String,String>newLinkedHashMap() : 
Maps.newLinkedHashMap(spec.getConfig());
-        
-        final Class<? extends Entity> clazz = 
getCatalog().loadClassByType(type, Entity.class);
+
+        Class<? extends Entity> tempclazz;
+        try {
+            tempclazz = getCatalog().loadClassByType(type, Entity.class);
+        } catch (NoSuchElementException e) {
+            try {
+                tempclazz = (Class<? extends Entity>) 
getCatalog().getRootClassLoader().loadClass(type);
+                log.info("Catalog does not contain item for type {}; loaded 
class directly instead", type);
+            } catch (ClassNotFoundException e2) {
+                log.warn("No catalog item for type {}, and could not load 
class directly; rethrowing", type);
+                throw e;
+            }
+        }
+        final Class<? extends Entity> clazz = tempclazz;
         BasicEntitySpec<? extends Entity, ?> result;
         if (clazz.isInterface()) {
             result = EntitySpecs.spec(clazz);

Reply via email to