Hi
Will this configurable provider return the same concrete type of object
during the whole live time of a running program?
Or will the returned type change during runtime?
Because if all you want to achieve is to be able to have mocks during
unit test and real implementations during runtime then there are other
ways to do this.
There are also possibilities to change the bindings at the time the
injector is constructed if you would need different types depending on
some environment.
The really tricky part is when you need to change the returned type
during runtime.
On 01/29/2015 08:10 AM, Igmar Palsenberg wrote:
Hi,
I'm using a Provider to dynamically provide a certain class. The
short(ed) code :
public class TemplateConfigurationModule extends AbstractModule {
void configure() {
bind(TemplateResolver.class).toProvider(TemplateResolverProvider.class).in(Singleton.class);
}
}
public class TemplateResolverProvider implements
Provider<TemplateResolver> {
@Override
public TemplateResolver get() {
String templateResolverClass = .......; /* some logic */
// FIXME : Wrong. Use the DI
Class<? extends TemplateResolver> templateResolver =
AppClassloader.classloader().loadClass(templateResolverClass).asSubclass(TemplateResolver.class);
return
templateResolver.getDeclaredConstructor(TemplateRendererConfig.class).newInstance(templateRendererConfig);
}
}
public interface TemplateResolver() {
.. Some stuff
}
public class MockTemplateResolver implements TemplateResolver {
@Inject
SomeObject obj;
}
So, the TemplateResolverProvider resolved a TemplateResolver class,
which then at the end wants to provide a MockTemplateResolver. I've
tried two things :
1) Use the normal classloader : In that case, no @Inject gets
fullfilled. Obviously.
2) Use Guice to give me a TemplateResolver class
The latter also fails : I want it to construct the object and do the
injections, but it uses the Provider. Also logica.
Then I'm kinda lost : Is there a way to solve this ? For now, I've
move the @Inject of SomeObject to the Provider, but that doesn't feel
right.
Any advise ?
Regards,
Igmar
--
You received this message because you are subscribed to the Google
Groups "google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at http://groups.google.com/group/google-guice.
To view this discussion on the web visit
https://groups.google.com/d/msgid/google-guice/6687a71a-5a3d-4e6c-87ed-170659d5c2d4%40googlegroups.com
<https://groups.google.com/d/msgid/google-guice/6687a71a-5a3d-4e6c-87ed-170659d5c2d4%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
To view this discussion on the web visit
https://groups.google.com/d/msgid/google-guice/54CA1BC4.3000505%40gmx.ch.
For more options, visit https://groups.google.com/d/optout.