[ https://issues.apache.org/jira/browse/FELIX-953?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12675959#action_12675959 ]
Guillaume Nodet commented on FELIX-953: --------------------------------------- I might see why IWire sometimes returns null and sometimes throw an exception (though not really confident about that yet), but but afaik, IModule really represents the bundle, so I don't really see why that one would return a null value instead of throwing a CNFE. Would that makes sense to you that IModule#getClassByDelegation() always throw an exception ? Looking deeper in the code, i've just found another possible NPE in ServiceRegistrationImpl#isClassAccessible where the clazz parameter can be null from a call to ServiceRegistrationImpl#isAssignableTo(). That one is harmless because catched, but it could be avoided nevertheless (which is good when debugging when i sometimes but a breakpoint exception on NPE). > 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 > 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.