Hi again Stuart,
sorry for the silly question but I tried following your suggestion:

        try {
            Provider<XXX> myProvider = MyProviderFactory.newProvider(
[some input] ); // that's the component that uses AMS to generate
components on the fly
            Binder childBinder = binder.withSource(myProvider);
            childBinder.bind(XXX.class).toProvider(myProvider);
        } catch (Exception e) {
            binder.addError(e);
        }

and throws the same exception. What did I do wrong?
Many thanks in advance,
Simo

http://people.apache.org/~simonetripodi/
http://www.99soft.org/



On Wed, Nov 24, 2010 at 3:12 PM, Simone Tripodi
<[email protected]> wrote:
> Done, is the Issue number 574 :)
> Simo
>
> http://people.apache.org/~simonetripodi/
> http://www.99soft.org/
>
>
>
> On Wed, Nov 24, 2010 at 3:02 PM, Simone Tripodi
> <[email protected]> wrote:
>> Sure, going to open it now!
>> Thanks for your support :)
>> Simo
>>
>> http://people.apache.org/~simonetripodi/
>> http://www.99soft.org/
>>
>>
>>
>> On Wed, Nov 24, 2010 at 3:00 PM, Stuart McCulloch <[email protected]> wrote:
>>> On 24 November 2010 13:58, Simone Tripodi <[email protected]> wrote:
>>>>
>>>> Hi Stuart!!! :)
>>>> I received your reply just after a second I reposted :)
>>>> Thanks a lot for your suggestions, I'll try do follow them as well!!!
>>>
>>> cool - could you also raise an issue over
>>> at http://code.google.com/p/google-guice/issues/list to track this?
>>>>
>>>> Simo
>>>>
>>>> http://people.apache.org/~simonetripodi/
>>>> http://www.99soft.org/
>>>>
>>>>
>>>>
>>>> On Wed, Nov 24, 2010 at 2:55 PM, Stuart McCulloch <[email protected]>
>>>> wrote:
>>>> > On 24 November 2010 13:33, Simone Tripodi <[email protected]>
>>>> > wrote:
>>>> >>
>>>> >> Hi all guys,
>>>> >> I need to bind a Provider generated by ASM with injection points
>>>> >> generated on the fly, everything gone fine until injection points
>>>> >> resolution by Guice, and got the errors below; I tried to hack the
>>>> >> com.google.inject.internal.MapMaker class loader, adding the new class
>>>> >> definition, but without success.
>>>> >
>>>> > it's not an issue with MapMaker as such, but the Guice
>>>> > LineNumbers utility
>>>> > that attempts to supply meaningful source locations for debugging
>>>> > bindings
>>>> >   public LineNumbers(Class type) throws IOException {
>>>> >     this.type = type;
>>>> >     if (!type.isArray()) {
>>>> >       InputStream in = type.getResourceAsStream("/" +
>>>> > type.getName().replace('.', '/') + ".class");
>>>> >       Preconditions.checkArgument(in != null, "Cannot find bytecode for
>>>> > %s",
>>>> > type);
>>>> >       new ClassReader(in).accept(new LineNumberReader(),
>>>> > ClassReader.SKIP_FRAMES);
>>>> >     }
>>>> >   }
>>>> > ^ this expects to find a class resource - but of course if you're
>>>> > generating
>>>> > the provider class completely from scratch with ASM then it won't exist
>>>> > :/
>>>> > to workaround this issue you could supply your own source when binding
>>>> > your generated provider - this should then bypass the LineNumber code:
>>>> >   Binder generatedCodeBinder = binder.withSource( "[generated]" );
>>>> >   generatedCodeBinder.bind( ...etc...
>>>> > HTH
>>>> >>
>>>> >> Does someone know how guice resolved that issue when enhancing the
>>>> >> classes with AOP?
>>>> >
>>>> > it's not an issue with Guice's internal AOP because that's applied on
>>>> > top
>>>> > of classes already registered with the injector - so the
>>>> > LineNumbers code
>>>> > never has to handle internal proxies
>>>> >
>>>> >>
>>>> >> Many thanks in advance, have a nice day!
>>>> >> Simo
>>>> >>
>>>> >> com.google.inject.internal.ComputationException:
>>>> >> java.lang.IllegalArgumentException: Cannot find bytecode for class
>>>> >> org.mybatis.guice.datasource.helper.FormattedProvider
>>>> >>        at
>>>> >>
>>>> >> com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:553)
>>>> >>        at
>>>> >>
>>>> >> com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:419)
>>>> >>        at
>>>> >>
>>>> >> com.google.inject.internal.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
>>>> >>        at
>>>> >>
>>>> >> com.google.inject.internal.StackTraceElements.forMember(StackTraceElements.java:53)
>>>> >>        at
>>>> >> com.google.inject.internal.Errors.formatInjectionPoint(Errors.java:635)
>>>> >>        at
>>>> >> com.google.inject.internal.Errors.formatSource(Errors.java:597)
>>>> >>        at com.google.inject.internal.Errors.format(Errors.java:474)
>>>> >>        at
>>>> >>
>>>> >> com.google.inject.CreationException.getMessage(CreationException.java:48)
>>>> >>        at java.lang.Throwable.getLocalizedMessage(Throwable.java:267)
>>>> >>        at java.lang.Throwable.toString(Throwable.java:344)
>>>> >>        at java.lang.String.valueOf(String.java:2615)
>>>> >>        at java.io.PrintWriter.print(PrintWriter.java:546)
>>>> >>        at java.io.PrintWriter.println(PrintWriter.java:683)
>>>> >>        at java.lang.Throwable.printStackTrace(Throwable.java:510)
>>>> >>        at
>>>> >> org.junit.runner.notification.Failure.getTrace(Failure.java:65)
>>>> >>        at
>>>> >>
>>>> >> org.eclipse.jdt.internal.junit4.runner.JUnit4TestListener.testFailure(JUnit4TestListener.java:68)
>>>> >>        at
>>>> >>
>>>> >> org.junit.runner.notification.RunNotifier$4.notifyListener(RunNotifier.java:100)
>>>> >>        at
>>>> >>
>>>> >> org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:41)
>>>> >>        at
>>>> >>
>>>> >> org.junit.runner.notification.RunNotifier.fireTestFailure(RunNotifier.java:97)
>>>> >>        at
>>>> >>
>>>> >> org.junit.internal.runners.ErrorReportingRunner.runCause(ErrorReportingRunner.java:57)
>>>> >>        at
>>>> >>
>>>> >> org.junit.internal.runners.ErrorReportingRunner.run(ErrorReportingRunner.java:34)
>>>> >>        at
>>>> >>
>>>> >> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
>>>> >>        at
>>>> >>
>>>> >> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>>> >>        at
>>>> >>
>>>> >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>>> >>        at
>>>> >>
>>>> >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>>> >>        at
>>>> >>
>>>> >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>>> >>        at
>>>> >>
>>>> >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>>>> >> Caused by: java.lang.IllegalArgumentException: Cannot find bytecode
>>>> >> for class org.mybatis.guice.datasource.helper.FormattedProvider
>>>> >>        at
>>>> >>
>>>> >> com.google.inject.internal.Preconditions.checkArgument(Preconditions.java:113)
>>>> >>        at
>>>> >> com.google.inject.internal.LineNumbers.<init>(LineNumbers.java:57)
>>>> >>        at
>>>> >>
>>>> >> com.google.inject.internal.StackTraceElements$1.apply(StackTraceElements.java:36)
>>>> >>        at
>>>> >>
>>>> >> com.google.inject.internal.StackTraceElements$1.apply(StackTraceElements.java:33)
>>>> >>        at
>>>> >>
>>>> >> com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:549)
>>>> >>        ... 26 more
>>>> >>
>>>> >>
>>>> >>
>>>> >> http://people.apache.org/~simonetripodi/
>>>> >> http://www.99soft.org/
>>>> >>
>>>> >> --
>>>> >> You received this message because you are subscribed to the Google
>>>> >> Groups
>>>> >> "google-guice" group.
>>>> >> To post to this group, send email to [email protected].
>>>> >> To unsubscribe from this group, send email to
>>>> >> [email protected].
>>>> >> For more options, visit this group at
>>>> >> http://groups.google.com/group/google-guice?hl=en.
>>>> >>
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > Cheers, Stuart
>>>> >
>>>> > --
>>>> > You received this message because you are subscribed to the Google
>>>> > Groups
>>>> > "google-guice" group.
>>>> > To post to this group, send email to [email protected].
>>>> > To unsubscribe from this group, send email to
>>>> > [email protected].
>>>> > For more options, visit this group at
>>>> > http://groups.google.com/group/google-guice?hl=en.
>>>> >
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google Groups
>>>> "google-guice" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected].
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/google-guice?hl=en.
>>>>
>>>
>>> --
>>> Cheers, Stuart
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "google-guice" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected].
>>> For more options, visit this group at
>>> http://groups.google.com/group/google-guice?hl=en.
>>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to