Tim Cleaver
2008-11-10 08:26:28 UTC
PicoContainer devs,
I have just moved onto PicoContainer 2.6 in the hope of using the ENABLE_CIRCULAR characteristic.
However, in doing so I am coming across the following problem that was not present in PicoContainer 2.4 and
prior (It also fails in PicoContainer 2.5).
java.lang.IllegalArgumentException: Unable to get collection type from I
at org.picocontainer.parameters.CollectionComponentParameter.getCollectionType(CollectionComponentParameter.java:180)
at org.picocontainer.parameters.CollectionComponentParameter.isResolvable(CollectionComponentParameter.java:166)
at org.picocontainer.parameters.ComponentParameter.isResolvable(ComponentParameter.java:139)
at org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableConstructor(ConstructorInjector.java:123)
at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:173)
at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:284)
at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:218)
at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:574)
at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:535)
at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:547)
at TestCase.main(TestCase.java:22)
The code is as follows:
import org.picocontainer.DefaultPicoContainer;
class TestCase {
interface Interface {
}
public class Generic {
public Generic(final I iface) {
}
}
public class Implementation implements Interface {
}
public static void main(final String[] args) {
DefaultPicoContainer container = new DefaultPicoContainer();
try {
container.addComponent(Implementation.class);
container.addComponent(Generic.class);
container.getComponent(Generic.class);
} catch (final Exception exception) {
exception.printStackTrace();
}
}
}
I must admit my surprise at the inclusion of CollectionComponentParameter in the stack trace
considering no collections are used. Any assistance in resolving this issue (be it with my code or
picocontainer) is greatly appreciated. To ensure that hotmail does not mangle the code I am also
attaching it as a file.
regards,
Tim Cleaver
_________________________________________________________________
Net yourself a bargain. Find great deals on eBay.
http://a.ninemsn.com.au/b.aspx?URL=http%3A%2F%2Frover%2Eebay%2Ecom%2Frover%2F1%2F705%2D10129%2D5668%2D323%2F4%3Fid%3D10&_t=763807330&_r=hotmailTAGLINES&_m=EXT
I have just moved onto PicoContainer 2.6 in the hope of using the ENABLE_CIRCULAR characteristic.
However, in doing so I am coming across the following problem that was not present in PicoContainer 2.4 and
prior (It also fails in PicoContainer 2.5).
java.lang.IllegalArgumentException: Unable to get collection type from I
at org.picocontainer.parameters.CollectionComponentParameter.getCollectionType(CollectionComponentParameter.java:180)
at org.picocontainer.parameters.CollectionComponentParameter.isResolvable(CollectionComponentParameter.java:166)
at org.picocontainer.parameters.ComponentParameter.isResolvable(ComponentParameter.java:139)
at org.picocontainer.injectors.ConstructorInjector.getGreediestSatisfiableConstructor(ConstructorInjector.java:123)
at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:173)
at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:284)
at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:218)
at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:574)
at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:535)
at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:547)
at TestCase.main(TestCase.java:22)
The code is as follows:
import org.picocontainer.DefaultPicoContainer;
class TestCase {
interface Interface {
}
public class Generic {
public Generic(final I iface) {
}
}
public class Implementation implements Interface {
}
public static void main(final String[] args) {
DefaultPicoContainer container = new DefaultPicoContainer();
try {
container.addComponent(Implementation.class);
container.addComponent(Generic.class);
container.getComponent(Generic.class);
} catch (final Exception exception) {
exception.printStackTrace();
}
}
}
I must admit my surprise at the inclusion of CollectionComponentParameter in the stack trace
considering no collections are used. Any assistance in resolving this issue (be it with my code or
picocontainer) is greatly appreciated. To ensure that hotmail does not mangle the code I am also
attaching it as a file.
regards,
Tim Cleaver
_________________________________________________________________
Net yourself a bargain. Find great deals on eBay.
http://a.ninemsn.com.au/b.aspx?URL=http%3A%2F%2Frover%2Eebay%2Ecom%2Frover%2F1%2F705%2D10129%2D5668%2D323%2F4%3Fid%3D10&_t=763807330&_r=hotmailTAGLINES&_m=EXT