Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 1.0
-
Fix Version/s: 1.1
-
Component/s: PicoContainer (Java)
-
Labels:None
-
Number of attachments :
Description
Currently we have a class that has protected constructors (used mostly for testing purposes), however, Pico tries to instantiate that object using those constructors, instead of the less greedy (but still public) other constructors.
A work around it to register it with params to indicate to use the noarg constructor:
internalContainer.registerComponentImplementation(
UpgradeManager.class,
UpgradeManagerImpl.class,
Collections.EMPTY_LIST);
The problem appears to be that ConstructorInjectionComponentAdapter.getGreediestSatisifableConstructor() can return a constructor which then barfs in InstantiatingComponentAdapter.newInstance().
I think that this could be solved by making allowNonPublicClasses protected in InstantiatingComponentAdapter ?
On another note - is Satisifable the correct spelling?
Issue Links
| This issue is duplicated by: | ||||
| PICO-205 | greedy non-public constructors are prefered over public constructors leading to IllegalAccessExceptions [patch] |
|
|
|
Hi Scott,
I fixed it in your proposed way setting "allowNonPublicClasses" to protected and using it in CICA.
Regards,
Jörg