[ 
http://issues.ops4j.org/browse/QI-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13288#action_13288
 ] 

Niclas Hedhman commented on QI-230:
-----------------------------------

And it is still the same here... 

As it is written above; No Exception.

By moving the 2 comments  I get the following (with -Dqi4j.compacttrace=off);

java.lang.ClassCastException: $Proxy18
        at 
org.qi4j.tests.jira.qi230.Qi230IssueTest$OtherConcern.other(Qi230IssueTest.java:127)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        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:129)
        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:58)
        at $Proxy18.other(Unknown Source)
        at 
org.qi4j.tests.jira.qi230.Qi230IssueTest$SomeMixin.method(Qi230IssueTest.java:107)
        at 
org.qi4j.tests.jira.qi230.Qi230IssueTest$SomeMixin$$EnhancerByCGLIB$$3ba706a0.CGLIB$method$0(<generated>)
        at 
org.qi4j.tests.jira.qi230.Qi230IssueTest$SomeMixin$$EnhancerByCGLIB$$3ba706a0$$FastClassByCGLIB$$3b49f78f.invoke(<generated>)
        at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:167)
        at 
org.qi4j.runtime.composite.TypedMixinInvocationHandler.invoke(TypedMixinInvocationHandler.java:40)
        at 
org.qi4j.runtime.composite.CompositeMethodInstance.invoke(CompositeMethodInstance.java:59)
        at 
org.qi4j.runtime.composite.TransientInstance.invoke(TransientInstance.java:129)
        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:58)
        at 
org.qi4j.runtime.service.ServiceReferenceInstance$ServiceInvocationHandler.invoke(ServiceReferenceInstance.java:156)
        at $Proxy16.method(Unknown Source)
        at 
org.qi4j.tests.jira.qi230.Qi230IssueTest.whenDerefencingInsideConcernThisExpectItToWork(Qi230IssueTest.java:53)


> Qi4j.dereference() does not work inside Concerns/SideEffects, if Concern 
> added withConcerns() in bootstrap.
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: QI-230
>                 URL: http://issues.ops4j.org/browse/QI-230
>             Project: Qi4j
>          Issue Type: Bug
>            Reporter: Niclas Hedhman
>            Assignee: Rickard Öberg
>             Fix For: 1.0
>
>
> If I add a Concern with ServiceDeclaration.withConcerns() and dereferences 
> the Composite pointer inside that Concern with Qi4j.dereference(), then a 
> ClassCastException happens on the following line;
> class Qi4jRuntimeImpl
> {code:java}
>     public <T> T dereference( T composite )
>     {
>         InvocationHandler handler = getInvocationHandler( composite );
>         if( handler instanceof ProxyReferenceInvocationHandler )
>         {
>             return (T) ( (ProxyReferenceInvocationHandler) handler ).proxy(); 
>  <--- HERE
>         }
>         if( handler instanceof CompositeInstance )
>         {
>             return composite;
>         }
>         return null;
>     }
> {code}
> Because the ProxyReferenceInvocationHandler.proxy is not a Composite, but a 
> $Proxy that can not be cast to a Composite.

-- 
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