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