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

Reply via email to