[
http://issues.ops4j.org/browse/QI-231?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13273#action_13273
]
Niclas Hedhman commented on QI-231:
-----------------------------------
I have looked at this more closely and the mutable alternative is actually
quite easy. use() is only called in 4 places, and all of those at a location
where the instance is 'updatable';
- TransientBuilderInstance calls use() for each "uses()" method call from the
client.
- ObjectBuilderInstance likewise.
- ServiceModel creates a UsesInstance, calls use( this ) and then call
newMixins()
- UsesInjectionProvider updates the uses() in the InjectionContext after doing
a "default creation" of a Composite or Object.
> Cast problems in AssociationDecoratorTest
> -----------------------------------------
>
> Key: QI-231
> URL: http://issues.ops4j.org/browse/QI-231
> Project: Qi4j
> Issue Type: Bug
> Reporter: Niclas Hedhman
> Assignee: Rickard Öberg
> Priority: Blocker
> Fix For: 1.0
>
>
> It happens intermittently that the AssociationDecoratorTest fails with the
> exception below. This is very worrying to me, as it could be indeterministic
> code somewhere causing it.
> java.lang.IllegalArgumentException: method:
> org.qi4j.api.entity.association.ManyAssociation.add
> delegate: class org.qi4j.runtime.injection.UsesGenericClassTest
> delegateType: java.lang.Class
> arguments:
> java.lang.Integer
> $Proxy84
> at
> org.qi4j.runtime.entity.associations.DecoratorMixin.invoke(DecoratorMixin.java:67)
> at
> org.qi4j.runtime.composite.GenericFragmentInvocationHandler.invoke(GenericFragmentInvocationHandler.java:38)
> at $Proxy85.add(Unknown Source)
> at
> org.qi4j.runtime.entity.associations.AssociationDecoratorTest$EmployeesAuditConcern.add(AssociationDecoratorTest.java:119)
> at
> org.qi4j.runtime.entity.associations.AssociationDecoratorTest$EmployeesAuditConcern.add(AssociationDecoratorTest.java:112)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.qi4j.runtime.composite.TypedModifierInvocationHandler.invoke(TypedModifierInvocationHandler.java:39)
> at
> org.qi4j.runtime.composite.MethodConcernsInstance.invoke(MethodConcernsInstance.java:48)
> at
> org.qi4j.runtime.composite.CompositeMethodInstance.invoke(CompositeMethodInstance.java:59)
> at
> org.qi4j.runtime.composite.TransientInstance.invoke(TransientInstance.java:128)
> at
> org.qi4j.runtime.composite.CompositeMethodModel.invoke(CompositeMethodModel.java:148)
> at
> org.qi4j.runtime.composite.CompositeMethodsModel.invoke(CompositeMethodsModel.java:113)
> at
> org.qi4j.runtime.composite.AbstractCompositeModel.invoke(AbstractCompositeModel.java:115)
> at
> org.qi4j.runtime.composite.TransientInstance.invoke(TransientInstance.java:57)
> at $Proxy81.add(Unknown Source)
> at
> org.qi4j.runtime.entity.associations.AssociationDecoratorTest.testAssociationDecorator(AssociationDecoratorTest.java:71)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
> at
> org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
> at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
> at
> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
> at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
> at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
> at
> org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
> at
> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
> at
> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
> at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
> at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
> at
> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
> at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
> at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
> Caused by: java.lang.IllegalArgumentException: object is not an instance of
> declaring class
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.qi4j.runtime.entity.associations.DecoratorMixin.invoke(DecoratorMixin.java:57)
> ... 44 more
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.ops4j.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev