Update;

The problem seems to reside in CompositeMethodsModel, or more likely
the code that determine that its invoke() method should be called. The
   CompositeMethodModel compositeMethod = methods.get( method );

will retrieve a SomeLogic.getNumbers() method, which on
compositeMethod.invoke() in turn will come all the way back to the
same place...

-- Niclas


On Fri, Oct 2, 2009 at 12:07 PM, Niclas Hedhman <[email protected]> wrote:
> Rickard,
>
> The 'actual' recursion of the stack trace is;
>
>        at 
> org.qi4j.cornercase.covariantReturn.SomeLogicMixin.numbers(SomeLogicMixin.java:15)
>        at 
> org.qi4j.cornercase.covariantReturn.SomeLogicMixin$$EnhancerByCGLIB$$6443530a.CGLIB$numbers$1(<generated>)
>        at 
> org.qi4j.cornercase.covariantReturn.SomeLogicMixin$$EnhancerByCGLIB$$6443530a$$FastClassByCGLIB$$5e0d1c63.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:127)
>        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:110)
>        at 
> org.qi4j.runtime.composite.TransientInstance.invokeProxy(TransientInstance.java:73)
>        at 
> org.qi4j.runtime.composite.ThisCompositeInvoker.intercept(ThisCompositeInvoker.java:37)
>        at 
> org.qi4j.cornercase.covariantReturn.SomeLogicMixin$$EnhancerByCGLIB$$6443530a.numbers(<generated>)
>        at 
> org.qi4j.cornercase.covariantReturn.SomeLogicMixin.numbers(SomeLogicMixin.java:15)
>
> This is in case you can spot the problem "just like that". Meanwhile,
> I'll keep digging.
>
>
> 2009/10/2 Łukasz Zieliński <[email protected]>:
>> Hello,
>>  I've been reading the list for some time now and decided to give Qi4j a
>> try. While playing around with services I found following issue:
>> service interface is defined as:
>> interface SomeLogic {
>>     Collection<Integer> getNumbers();
>> }
>> and mixin is implemented as:
>> class SomeLogicMixin implements SomeLogic {
>>     public List<Integer> getNumbers() {
>>         ....
>>     }
>> }
>> When I obtain service from ServiceFinder a call to getNumbers() causes
>> stackoverflow. When implementation signature matches interface everything is
>> working fine.
>> Using  IDEA Debug run configuration (exception from normal Run is not really
>> usable) I narrowed down culprits to following lines:
>> Exception in thread "main" java.lang.StackOverflowError
>> at
>> org.qi4j.runtime.composite.TypedMixinInvocationHandler.invoke(TypedMixinInvocationHandler.java:52)
>> at
>> org.qi4j.runtime.composite.CompositeMethodInstance.invoke(CompositeMethodInstance.java:59)
>> I looks like invocation handler gets called over and over.
>> Attached is a simple test application.
>> Cheers,
>>  Lukasz
>> _______________________________________________
>> qi4j-dev mailing list
>> [email protected]
>> http://lists.ops4j.org/mailman/listinfo/qi4j-dev
>>
>>
>
>
>
> --
> Niclas Hedhman, Software Developer
> http://www.qi4j.org - New Energy for Java
>
> I  live here; http://tinyurl.com/2qq9er
> I  work here; http://tinyurl.com/2ymelc
> I relax here; http://tinyurl.com/2cgsug
>



-- 
Niclas Hedhman, Software Developer
http://www.qi4j.org - New Energy for Java

I  live here; http://tinyurl.com/2qq9er
I  work here; http://tinyurl.com/2ymelc
I relax here; http://tinyurl.com/2cgsug

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to