I am trying to run cdi 1.2 tck:
In test:
org.jboss.cdi.tck.tests.event.observer.conditional.ConditionalObserverTest
Method:
testConditionalObserverMethodNotInvokedIfNoActiveContext
I got this following failure:
java.lang.IllegalStateException:
Singleton not set for STATIC_INSTANCE =>
[29478a84-0d13-49f5-b140-34a6cd92ab71,
0dd30cdc-10f4-4ec0-a8c5-d8fa3a82fc25,
bbc59ac1-4747-49d0-96a3-12f0d4987829,
3459400f-dd41-473c-a4db-94d60fe5899b,
10795c17-3611-41d5-b7ca-497709c2ad53,
f10c929f-5314-44ba-aeb4-99888f6b4611,
a22c5a8f-bf26-4f54-a847-d1c7b5532426,
00c3de8d-65d9-4ba7-804a-9c3c515e59d7,
d7c8be7e-8b52-4c88-97e1-5ba6925fb794,
72ac8455-7c21-4090-b7ec-13d70c75a7d7,
dbe7255d-5485-4c2a-b547-058815660144,
d3bb3d00-3214-48a5-b662-499010197e12]
at
org.jboss.weld.bootstrap.api.helpers.RegistrySingletonProvider$RegistrySingleton.get(RegistrySingletonProvider.java:28)
at org.jboss.weld.Container.instance(Container.java:55)
at
org.jboss.weld.tck.ContextsImpl.getRequestContext(ContextsImpl.java:33)
at
org.jboss.weld.tck.ContextsImpl.getRequestContext(ContextsImpl.java:30)
at
org.jboss.cdi.tck.tests.event.observer.conditional.ConditionalObserverTest.testConditionalObserverMethodNotInvokedIfNoActiveContext(ConditionalObserverTest.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
From the stack trace, two strange things are happening:
1) the TCK code is calling into
org.jboss.weld.Container which is an internal Weld class
which should not be visible to application so the
application should not need to load them
2) the TCK code is calling
Container.instance() with no arguments, which should not be
called. We always use Container.instance(contextId), in
accordance with Weld doc A.3.2.4. Singleton SPI (this
should be used in OSGi environment).
Can someone help to explain why the tck test was done this way?
Is it accurate?