Code:
public class SpecialObjectHolder {
public static ThreadLocal< SpecialObject > holder = new ThreadLocal< SpecialObject >();
}
public class MyProvider implements Provider<SomeOtherClass> {
public SomeOtherClass get() {
SpecialObject obj = SpecialObjectHolder.holder.get();
return new SomeOtherClass(obj);
}
}
public class MyClass {
@Inject public SomeOtherClass otherClass;
public MyClass(SpecialObject obj) {
SpecialObjectHolder.holder.set(obj);
InjectorCreator.getInjector().injectMembers(this);
}
}
public class MyModule extends AbstractModule {
public void bind() {
bind(SomeOtherClass.class).toProvider(MyProvider.class);
}
}
That should be roughly what you are looking for.
-bp