I'm not sure I understand the flow, but what I tend to do is load the 3rd-party dependency in a Module.
For example, when using JPA, I might instantiate an EntityManagerFactory and pass it to bind(EntityManagerFactory.class).toInstance(emf). Could you do the same with the call to Dependency Container? On Sep 19, 2013 5:47 PM, "Jared Martin" <[email protected]> wrote: > I am using a 3rd party library that, among other things, loads classes > specified in an xml file. Something like: > > <element class="some.package.name.MyClass"> > > The documentation specifies when writing custom classes to be loaded by > their API, you should use a no-args constructor. In the source code, they > call Class.newInstance(). > > I would like to write a custom class for use with their API, because I > want the custom behavior to do something with a dependency written by me. > However, because of the way the object is created, I cannot use Guice to > inject this dependency. > > The solution I came up with is to do something like this: > > public class DependencyContainer { > @Inject private volatile static DependencyContainer instance; > @Inject private volatile TheDependency dep; > > public TheDependency getDependency() { > return dep; > } > > public static DependencyContainer getInstance() { > return instance; > } > } > > public class MyImpl extends ThirdPartyInterface { > private TheDependency dep = null; > > public void doThirdPartyTask() { > if (dep == null) { > if(attemptGetDependency() == null) return; > } > // behavior > } > > private TheDependency attemptGetDependency() { > dep = DependencyContainer.getInstance().getDependency(); > return dep; > } > } > > I can then load the dependency with requestStaticInjection. Is this the > preferred way to do this task? Is there a better, less ugly way? > > -- > 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. > For more options, visit https://groups.google.com/groups/opt_out. > -- 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. For more options, visit https://groups.google.com/groups/opt_out.
