Repository: brooklyn-server Updated Branches: refs/heads/master a9047f64c -> c5fc588c3
BROOKLYN-426: avoid propagating NoClassDefFoundError Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/1c20df25 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/1c20df25 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/1c20df25 Branch: refs/heads/master Commit: 1c20df2590f7b2104d3f6f70b68a586d15bbc3f7 Parents: 4d2f7cc Author: Aled Sage <aled.s...@gmail.com> Authored: Thu Jan 19 12:38:52 2017 +0000 Committer: Aled Sage <aled.s...@gmail.com> Committed: Thu Jan 19 12:38:52 2017 +0000 ---------------------------------------------------------------------- .../org/apache/brooklyn/util/core/LoaderDispatcher.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1c20df25/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java b/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java index f45c6d1..8fffa9d 100644 --- a/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java +++ b/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java @@ -44,6 +44,10 @@ public interface LoaderDispatcher<T> { return Maybe.<Class<?>>of(SystemFrameworkLoader.get().loadClassFromBundle(className, bundle)); } catch (ClassNotFoundException e) { return Maybe.absent("Failed to load class " + className + " from bundle " + bundle, e); + } catch (NoClassDefFoundError e) { + // Can happen if a bundle misbehaves (e.g. it doesn't include Import-Package for + // all the packages it really needs. + return Maybe.absent("Failed to load class " + className + " from bundle " + bundle, e); } } @@ -54,6 +58,10 @@ public interface LoaderDispatcher<T> { } catch (IllegalStateException e) { propagateIfCauseNotClassNotFound(e); return Maybe.absent("Failed to load class " + className + " from loader " + loader, e); + } catch (NoClassDefFoundError e) { + // Can happen if a bundle misbehaves (e.g. it doesn't include Import-Package for + // all the packages it really needs. + return Maybe.absent("Failed to load class " + className + " from loader " + loader, e); } } @@ -68,6 +76,10 @@ public interface LoaderDispatcher<T> { return Maybe.absent("Failed to load class " + className + " from class loader " + classLoader, e); } catch (ClassNotFoundException e) { return Maybe.absent("Failed to load class " + className + " from class loader " + classLoader, e); + } catch (NoClassDefFoundError e) { + // Can happen if a bundle misbehaves (e.g. it doesn't include Import-Package for + // all the packages it really needs. + return Maybe.absent("Failed to load class " + className + " from class loader " + classLoader, e); } }