use own classloader as fallback if class not found e.g. if the consuming bundle does not import service exception we can look the class up from our own classloader
Project: http://git-wip-us.apache.org/repos/asf/aries-rsa/repo Commit: http://git-wip-us.apache.org/repos/asf/aries-rsa/commit/09771c94 Tree: http://git-wip-us.apache.org/repos/asf/aries-rsa/tree/09771c94 Diff: http://git-wip-us.apache.org/repos/asf/aries-rsa/diff/09771c94 Branch: refs/heads/master Commit: 09771c940422a3f83d3779d6d8b482959605f95a Parents: 2331e82 Author: Johannes Utzig <[email protected]> Authored: Mon Jan 30 17:13:59 2017 +0100 Committer: Johannes Utzig <[email protected]> Committed: Tue Jan 31 11:45:14 2017 +0100 ---------------------------------------------------------------------- .../provider/fastbin/util/ClassLoaderObjectInputStream.java | 6 ++++++ 1 file changed, 6 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/aries-rsa/blob/09771c94/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/util/ClassLoaderObjectInputStream.java ---------------------------------------------------------------------- diff --git a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/util/ClassLoaderObjectInputStream.java b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/util/ClassLoaderObjectInputStream.java index e9f1d9c..6740938 100644 --- a/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/util/ClassLoaderObjectInputStream.java +++ b/provider/fastbin/src/main/java/org/apache/aries/rsa/provider/fastbin/util/ClassLoaderObjectInputStream.java @@ -70,6 +70,12 @@ public class ClassLoaderObjectInputStream extends ObjectInputStream { if (clazz != null) { return clazz; } else { + try{ + //try to load it with our own classloader (could be e.g. a service exception) + return Class.forName(className, false, this.getClassLoader()); + } catch(ClassNotFoundException e2) { + //ignore + } throw e; } }
