Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Fixed
-
None
-
None
Description
Here is a patch:
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; } /**
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.
Attachments
Attachments
Issue Links
- is part of
-
FELIX-851 Refactor the module abstraction layer to align more closely to OSGi concepts
- Closed