static <T> Provider<T> decorate(BeanSpec spec, Provider<T> realProvider, Genie genie) { if (realProvider instanceof ScopedProvider) { return realProvider; } ScopeCache cache = resolve(spec.scope(), genie); return null == cache ? realProvider : new ScopedProvider<>(spec, cache, realProvider); }
static ScopeCache resolve(Class<? extends Annotation> annoClass, Genie genie) { ScopeCache cache = resolveBuiltIn(annoClass, genie); if (null != cache) { return cache; } Class<? extends Annotation> alias = genie.scopeByAlias(annoClass); if (null != alias) { cache = resolveBuiltIn(alias, genie); } if (null == cache) { cache = genie.scopeCache(annoClass); } return cache; }
private Provider<?> decorate(final BeanSpec spec, Provider provider, final boolean isFactory) { if (BEAN_SPEC_PROVIDER == provider) { return provider; } final Provider postConstructed = PostConstructProcessorInvoker.decorate(spec, PostConstructorInvoker.decorate(spec, ElementLoaderProvider.decorate(spec, provider, this), this), this); Provider eventFired = new Provider() { @Override public Object get() { if (supportInjectionPoint && !isFactory) { TGT_SPEC.set(spec); } try { Object bean = postConstructed.get(); fireInjectEvent(bean, spec); return bean; } finally { if (supportInjectionPoint && !isFactory) { TGT_SPEC.remove(); } } } }; return ScopedProvider.decorate(spec, eventFired, this); }
private Provider<?> decorate(final BeanSpec spec, Provider provider, final boolean isFactory) { if (BEAN_SPEC_PROVIDER == provider) { return provider; } final Provider postConstructed = PostConstructProcessorInvoker.decorate(spec, PostConstructorInvoker.decorate(spec, ElementLoaderProvider.decorate(spec, provider, this), this), this); Provider eventFired = new Provider() { @Override public Object get() { if (supportInjectionPoint && !isFactory) { TGT_SPEC.set(spec); } try { Object bean = postConstructed.get(); fireInjectEvent(bean, spec); return bean; } finally { if (supportInjectionPoint && !isFactory) { TGT_SPEC.remove(); } } } }; return ScopedProvider.decorate(spec, eventFired, this); }
static <T> Provider<T> decorate(BeanSpec spec, Provider<T> realProvider, Genie genie) { if (realProvider instanceof ScopedProvider) { return realProvider; } ScopeCache cache = resolve(spec.scope(), genie); return null == cache ? realProvider : new ScopedProvider<>(spec, cache, realProvider); }
static ScopeCache resolve(Class<? extends Annotation> annoClass, Genie genie) { ScopeCache cache = resolveBuiltIn(annoClass, genie); if (null != cache) { return cache; } Class<? extends Annotation> alias = genie.scopeByAlias(annoClass); if (null != alias) { cache = resolveBuiltIn(alias, genie); } if (null == cache) { cache = genie.scopeCache(annoClass); } return cache; }