Hi, I'm new to GIN but have a few questions
1. For the Remote Services example do you still need to define this in a
module somewhere or is the point that you can just annotate with @Inject
and it will work.
2. When using MVP, where is the best place to use dependency injection.
Should I use it to create my presenters, so I can do
injector.getPresenter();
3. Is it possible to inject simple objects such as strings.
1. Nope, nothing to do, just put your remote service as a parameter on an
@Inject constructor.
2. I've seen lots of debate on this issue.
3. Yes, use binding annotations.
(http://code.google.com/p/google-gin/source/browse/trunk/samples/HigherLower/src/com/google/gwt/gin/higherlower/client/gin/HigherOrLowerModule.java)
I am new to Gin and using GWT 2.2, I added all the dependencies including
guice-assistedinject-snapshot.jar, but I get this error on compile:
Generator 'com.google.gwt.inject.rebind.GinjectorGenerator' threw an
exception while
rebinding 'com.omnex.dashboard.prototype.gwt.widget.TxnTopLevelWidget.OnePageWidgetGinjector'
[java] com.google.inject.internal.ComputationException:
com.google.inject.internal.ComputationException:
com.google.inject.internal.ComputationException:
java.lang.NoClassDefFoundError: com.google.inject.assistedinject.Assisted
[java] at
com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:553)
[java] at
com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:419)
[java] at
com.google.inject.internal.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
[java] at
com.google.inject.internal.FailableCache.get(FailableCache.java:46)
[java] at
com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:48)
[java] at
com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:121)
[java] at
com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:443)
[java] at
com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:698)
[java] at
com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
[java] at
com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
[java] at
com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
[java] at
com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:704)
[java] at
com.google.inject.internal.FactoryProxy.notify(FactoryProxy.java:45)
[java] at
com.google.inject.internal.BindingProcessor.runCreationListeners(BindingProcessor.java:238)
[java] at
com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:143)
[java] at
com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:116)
[java] at
com.google.inject.InjectorBuilder.build(InjectorBuilder.java:101)
[java] at com.google.inject.Guice.createInjector(Guice.java:105)
[java] at com.google.inject.Guice.createInjector(Guice.java:90)
[java] at
com.google.gwt.inject.rebind.GinjectorGenerator.generate(GinjectorGenerator.java:47)
[java] at
com.google.gwt.core.ext.GeneratorExtWrapper.generate(GeneratorExtWrapper.java:48)
[java] at
com.google.gwt.core.ext.GeneratorExtWrapper.generateIncrementally(GeneratorExtWrapper.java:60)
[java] at
com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:662)
[java] at
com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41)
[java] at
com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:74)
[java] at
com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:259)
[java] at
com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:248)
[java] at
com.google.gwt.dev.DistillerRebindPermutationOracle.getAllPossibleRebindAnswers(DistillerRebindPermutationOracle.java:91)
[java] at
com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.doFindAdditionalTypesUsingRebinds(WebModeCompilerFrontEnd.java:106)
[java] at
com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.process(AbstractCompiler.java:254)
[java] at
org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:444)
[java] at
com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.compile(AbstractCompiler.java:175)
[java] at
com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.compile(AbstractCompiler.java:288)
[java] at
com.google.gwt.dev.jdt.AbstractCompiler$Sandbox$CompilerImpl.access$400(AbstractCompiler.java:145)
[java] at
com.google.gwt.dev.jdt.AbstractCompiler.compile(AbstractCompiler.java:632)
[java] at
com.google.gwt.dev.jdt.BasicWebModeCompiler.getCompilationUnitDeclarations(BasicWebModeCompiler.java:124)
[java] at
com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.getCompilationUnitDeclarations(WebModeCompilerFrontEnd.java:54)
[java] at
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:517)
[java] at
com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:35)
[java] at
com.google.gwt.dev.Precompile.precompile(Precompile.java:541)
[java] at
com.google.gwt.dev.Precompile.precompile(Precompile.java:495)
[java] at
com.google.gwt.dev.Precompile.precompile(Precompile.java:407)
[java] at com.google.gwt.dev.Compiler.run(Compiler.java:215)
[java] at com.google.gwt.dev.Compiler.run(Compiler.java:187)
[java] at com.google.gwt.dev.Compiler$1.run(Compiler.java:159)
[java] at
com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:87)
[java] at
com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:81)
[java] at com.google.gwt.dev.Compiler.main(Compiler.java:166)
[java] Caused by: com.google.inject.internal.ComputationException:
com.google.inject.internal.ComputationException:
java.lang.NoClassDefFoundError: com.google.inject.assistedinject.Assisted
[java] at
com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:553)
[java] at
com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:419)
[java] at
com.google.inject.internal.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
[java] at
com.google.inject.internal.FailableCache.get(FailableCache.java:46)
[java] at
com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:48)
[java] at
com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:121)
[java] at
com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:443)
[java] at
com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:698)
[java] at
com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
[java] at
com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
[java] at
com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
[java] at
com.google.inject.internal.InjectorImpl.createProviderBinding(InjectorImpl.java:281)
[java] at
com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:662)
[java] at
com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:630)
[java] at
com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:223)
[java] at
com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:174)
[java] at
com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:704)
[java] at
com.google.inject.internal.InjectorImpl.createParameterInjector(InjectorImpl.java:772)
[java] at
com.google.inject.internal.InjectorImpl.getParametersInjectors(InjectorImpl.java:760)
[java] at
com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:55)
[java] at
com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:27)
[java] at
com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:35)
[java] at
com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33)
[java] at
com.google.inject.internal.FailableCache$1.apply(FailableCache.java:35)
[java] at
com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:549)
[java] ... 47 more
[java] Caused by: com.google.inject.internal.ComputationException:
java.lang.NoClassDefFoundError: com.google.inject.assistedinject.Assisted
[java] at
com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:553)
[java] at
com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:419)
[java] at
com.google.inject.internal.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
[java] at
com.google.inject.internal.FailableCache.get(FailableCache.java:46)
[java] at
com.google.inject.internal.MembersInjectorStore.get(MembersInjectorStore.java:63)
[java] at
com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:59)
[java] at
com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:27)
[java] at
com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:35)
[java] at
com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33)
[java] at
com.google.inject.internal.FailableCache$1.apply(FailableCache.java:35)
[java] at
com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:549)
[java] ... 71 more
[java] Caused by: java.lang.NoClassDefFoundError:
com.google.inject.assistedinject.Assisted
[java] at java.lang.Class.getDeclaredFieldsImpl(Native Method)
[java] at java.lang.Class.getDeclaredFields(Class.java:534)
[java] at
com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:605)
[java] at
com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:345)
[java] at
com.google.inject.internal.MembersInjectorStore.createWithListeners(MembersInjectorStore.java:75)
[java] at
com.google.inject.internal.MembersInjectorStore.access$000(MembersInjectorStore.java:32)
[java] at
com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:40)
[java] at
com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:38)
[java] at
com.google.inject.internal.FailableCache$1.apply(FailableCache.java:35)
[java] at
com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:549)
[java] ... 81 more
[java] Caused by: java.lang.ClassNotFoundException:
com.google.inject.assistedinject.Assisted
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:496)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:631)
[java] at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
Just make sure you do not bind any type called "Cache". You will
errors/exceptions, but it will just not work... silently!!
Hi, I'm new to GIN, just trying to integrate GIN into an existing maven
project. My problem ist that I get a ClassCastException when trying to
create my injector in my EntryPoint:
private final PooledGinjector _injector =
GWT.create(PooledGinjector.class);
although it looks to me that the injector is of the required type:
@GinModules(PooledGinModule.class)
public interface PooledGinjector extends Ginjector {
// SimplePanel getMainPanel();
}
The exception looks like this:
ERROR: Deferred binding failed
for 'net.mbc.contentpool.gwt.client.PooledGinjector'; expect subsequent
failures.
ERROR: Failed to create an instance
of 'net.mbc.contentpool.gwt.client.ContentPoolEntryPoint' via deferred
binding . java.lang.RuntimeException: Deferred binding failed
for 'net.mbc.contentpool.gwt.client.PooledGinjector' (did you forget to
inherit a required module?)
at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:53)
at com.google.gwt.core.client.GWT.create(GWT.java:98)
at
net.mbc.contentpool.gwt.client.ContentPoolEntryPoint.<init>(ContentPoolEntryPoint.java:35)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at
com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:465)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:375)
at
com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:193)
at
com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510)
at
com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
at java.lang.Thread.run(Thread.java:680)
Caused by: com.google.gwt.core.ext.UnableToCompleteException: (see previous
log entries)
at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:595)
at
com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:455)
at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
at com.google.gwt.core.client.GWT.create(GWT.java:98)
at
net.mbc.contentpool.gwt.client.ContentPoolEntryPoint.<init>(ContentPoolEntryPoint.java:35)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at
com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:465)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:375)
at
com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:193)
at
com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510)
at
com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
at java.lang.Thread.run(Thread.java:680)
DEBUG: Invoking generator com.google.gwt.inject.rebind.GinjectorGenerator.
ERROR: Generator 'com.google.gwt.inject.rebind.GinjectorGenerator'
threw an exception while
rebinding 'net.mbc.contentpool.gwt.client.PooledGinjector'.
java.lang.ClassCastException:
net.mbc.contentpool.gwt.client.PooledGinModule cannot be cast to
com.google.gwt.inject.client.GinModule
at
com.google.gwt.inject.rebind.BindingsProcessor.instantiateGModuleClass(BindingsProcessor.java:471)
at
com.google.gwt.inject.rebind.BindingsProcessor.populateModulesFromInjectorInterface(BindingsProcessor.java:453)
at
com.google.gwt.inject.rebind.BindingsProcessor.createModules(BindingsProcessor.java:426)
at
com.google.gwt.inject.rebind.BindingsProcessor.process(BindingsProcessor.java:236)
at
com.google.gwt.inject.rebind.GinjectorGeneratorImpl.generate(GinjectorGeneratorImpl.java:76)
at
com.google.gwt.inject.rebind.GinjectorGenerator.generate(GinjectorGenerator.java:47)
at
com.google.gwt.core.ext.GeneratorExtWrapper.generate(GeneratorExtWrapper.java:48)
at
com.google.gwt.core.ext.GeneratorExtWrapper.generateIncrementally(GeneratorExtWrapper.java:60)
at
com.google.gwt.dev.javac.StandardGeneratorContext.runGeneratorIncrementally(StandardGeneratorContext.java:681)
at
com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:41)
at
com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:74)
at
com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:285)
at
com.google.gwt.dev.shell.ShellModuleSpaceHost.rebind(ShellModuleSpaceHost.java:141)
at com.google.gwt.dev.shell.ModuleSpace.rebind(ModuleSpace.java:585)
at
com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:455)
at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
at com.google.gwt.core.client.GWT.create(GWT.java:98)
at
net.mbc.contentpool.gwt.client.ContentPoolEntryPoint.<init>(ContentPoolEntryPoint.java:35)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at
com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:465)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:375)
at
com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:193)
at
com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510)
at
com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)
at java.lang.Thread.run(Thread.java:680)
Do you have any idea what might go wrong?
Thanks in advance, Mo
Hi, I'm new to GIN, just trying to integrate GIN into an existing maven
project. My problem ist that I get a ClassCastException? when trying to
create my injector in my EntryPoint?:
{{{
private final PooledGinjector injector =
GWT.create(PooledGinjector.class);
}}}
although it looks to me that the injector is of the required type:
{{{
@GinModules(PooledGinModule.class)
public interface PooledGinjector extends Ginjector {
// SimplePanel? getMainPanel();
}
}}}
The exception looks like this:
{{{
ERROR: Deferred binding failed
for 'net.mbc.contentpool.gwt.client.PooledGinjector'; expect subsequent
failures. ERROR: Failed to create an instance
of 'net.mbc.contentpool.gwt.client.ContentPoolEntryPoint' via deferred
binding . java.lang.RuntimeException: Deferred binding failed
for 'net.mbc.contentpool.gwt.client.PooledGinjector' (did you forget to
inherit a required module)
<inherits name="com.google.gwt.inject.Inject"/>
in your gwt application xml?
> --
> You received this message because you are subscribed to the Google Groups
> "google-gin" group.
> To post to this group, send email to googl...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-gin+...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-gin?hl=en.
>
--
Jon Gorrono
PGP Key: 0x5434509D -
http{pgp.mit.edu:11371/pks/lookup?search=0x5434509D&op=index}
GSWoT Introducer - {GSWoT:US75 5434509D Jon P. Gorrono <jpgorrono -
www.gswot.org>}
http{middleware.ucdavis.edu}
I was going through the sample HigherLower and encountered this line
// TODO we could probably use a generator instead of this nonsense.
in com.google.gwt.gin.higherlower.client.gin.DeckProvider.
May be a dumb question but I would really like to know how I can implement
a generator here.