[ 
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

Reply via email to