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

Reply via email to