[ https://issues.apache.org/jira/browse/FELIX-953?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12676051#action_12676051 ]
Guillaume Nodet commented on FELIX-953: --------------------------------------- I suspect the problem mainly comes from ExtensionManager. The following code should return null: {code} bundleContext.getBundle(0).loadClass("foo.bar"); {code} In ServiceMix 4, we're creating our own classloaders so that we can be compliant with the JBI spec (though we do push people to use plain OSGi bundles). In doing so, the system bundle is used as a parent for those classloaders. It may be just about fixing ExtensionManager.ExtensionManagerModule.getClassByDelegation() to not return null. > Bundle#loadClass sometimes return null instead of throwing a CNFE > ----------------------------------------------------------------- > > Key: FELIX-953 > URL: https://issues.apache.org/jira/browse/FELIX-953 > Project: Felix > Issue Type: Bug > Components: Framework > Reporter: Guillaume Nodet > Assignee: Richard S. Hall > Priority: Blocker > Attachments: FELIX-953.patch > > > Here is a patch: > {code} > Index: src/main/java/org/apache/felix/framework/Felix.java > =================================================================== > --- src/main/java/org/apache/felix/framework/Felix.java (revision 746347) > +++ src/main/java/org/apache/felix/framework/Felix.java (working copy) > @@ -1338,7 +1338,12 @@ > throw new ClassNotFoundException(name, ex); > } > } > - return bundle.getCurrentModule().getClassByDelegation(name); > + Class clazz = bundle.getCurrentModule().getClassByDelegation(name); > + if (clazz == null) > + { > + throw new ClassNotFoundException(name); > + } > + return clazz; > } > > /** > {code} > I'm wondering if there any reason why ModuleImpl#getClassByDelegation(String) > returns null instead of throwing a NPE. > Browsing through the code, it seems there are several places where a null > value is checked, then a CNFE thrown. > This would also avoid possible NPE in felix code as in > Felix#createBundleActivator. > I think it would be nice to iron the definition of > IModule#getClassByDelegation to either remove the thrown CNFE or never > returns null, as currently both can happen. > The IWire interface has exactly the same problem. > I will try to come up with a patch which will never return a null value for > both interfaces. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.