Thank you Sam, look like that what I need to implement lifecycle @PostConstruct.
Aleksey. On Sep 16, 10:08 pm, Sam Berlin <[email protected]> wrote: > I've found this method useful for determining the ultimate scope of a > binding: > > /** > * Returns the scope of the binding, or the scope of the linked binding > if > * it was linked. > */ > public static Scope getLinkedScope(Binding<?> binding) { > BindingScopingVisitor<Scope> scoper = new > BindingScopingVisitor<Scope>() { > public Scope visitNoScoping() { > return Scopes.NO_SCOPE; > } > > public Scope visitScopeAnnotation(Class<? extends Annotation> > scopeAnnotation) { > throw new IllegalStateException("no annotations allowed > here"); > } > > public Scope visitScope(Scope scope) { > return scope; > } > > public Scope visitEagerSingleton() { > return Scopes.SINGLETON; > } > }; > > do { > Scope scope = binding.acceptScopingVisitor(scoper); > > if (scope != Scopes.NO_SCOPE) { > return scope; > } > > if (binding instanceof LinkedBindingImpl) { > LinkedBindingImpl<?> linkedBinding = (LinkedBindingImpl) > binding; > Injector injector = linkedBinding.getInjector(); > if (injector != null) { > binding = > injector.getBinding(linkedBinding.getLinkedKey()); > continue; > } > } > > return Scopes.NO_SCOPE; > } while (true); > } > > Obviously modeled after Scopes.isSingleton, except it returns the Scope > instead. This is useful for us because we're using introspection on > bindings to determine if it's safe to call binding.getInstance arbitrarily > (we only want to do it if it's a singleton binding, and we've internally > defined more than just Scopes.SINGLETON to be effectively a singleton). > > Another useful change would be to allow Scopes.isSingleton to take > additional Scope objects that can also mean "I am a singleton". > > Sam --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
