Thank you Jozef! Glad to know that we eventually synced up. It will be great if this bug is fixed soon.
On Thu, Jun 4, 2015 at 8:03 AM, Jozef Hartinger <[email protected]> wrote: > Hi Emily, > > thanks for your patience :-) You are right that this is a bug in Weld. I > filed https://issues.jboss.org/browse/WELD-1963 to track this issue. > > Jozef > > > On 06/03/2015 03:41 PM, Emily Jiang wrote: > > Hi Jozef, > The non-CDI interceptor was created by Weld when I called > injectionTarget.produce() on a ManagedBean class. I have no control of it. > Please see above for the stack. The stack shows the creation sequence > (managed bean creation -> non-cdi interceptor creation). I used the > following snippet to create injection Target for the ManagedBean. > > Bean<T> bean = getBean(); // returns null for managed bean > with dependent scope > > AnnotatedType<T> annotatedType = > beanManager.createAnnotatedType(clazz); > InjectionTargetFactory<T> itf= > beanManager.getInjectionTargetFactory(annotatedType); > injectionTarget = itf.createInjectionTarget(bean); > injectionTarget.produce(context); //produce an instance with > all non-cdi and cdi interceptors... but the non-cdi interceptors without > any ee injection > > Thanks > Emily > > On Wed, Jun 3, 2015 at 2:02 PM, Jozef Hartinger <[email protected]> > wrote: > >> Oops, sorry. Ignore my last e-mail. How do you obtain the >> InjectionTarget for the non-CDI interceptor? >> >> >> On 06/03/2015 12:52 PM, Emily Jiang wrote: >> >> Jozef, >> The PlainInterceptorFactory is weld class. Here is the stack when we >> created an instance for a managed bean class (@ManagedBean) by calling >> injectionTarget.produce(); You are not asking me to override >> PlainInterceptorFactory, right? >> >> >> Caused by: java.lang.Exception >> at >> org.jboss.weld.injection.producer.BasicInjectionTarget.createNonCdiInterceptor(BasicInjectionTarget.java:69) >> at >> org.jboss.weld.manager.InjectionTargetFactoryImpl.chooseInjectionTarget(InjectionTargetFactoryImpl.java:126) >> at >> org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:87) >> at >> org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:80) >> at >> org.jboss.weld.manager.InjectionTargetFactoryImpl.createInterceptorInjectionTarget(InjectionTargetFactoryImpl.java:75) >> at >> org.jboss.weld.interceptor.reader.PlainInterceptorFactory.of(PlainInterceptorFactory.java:41) >> at >> org.jboss.weld.interceptor.reader.InterceptorMetadataReader$1.load(InterceptorMetadataReader.java:44) >> at >> org.jboss.weld.interceptor.reader.InterceptorMetadataReader$1.load(InterceptorMetadataReader.java:39) >> at >> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599) >> at >> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379) >> at >> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342) >> at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257) >> at com.google.common.cache.LocalCache.get(LocalCache.java:4000) >> at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4004) >> at >> com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874) >> at >> org.jboss.weld.util.cache.LoadingCacheUtils.getCacheValue(LoadingCacheUtils.java:49) >> at >> org.jboss.weld.util.cache.LoadingCacheUtils.getCastCacheValue(LoadingCacheUtils.java:74) >> at >> org.jboss.weld.interceptor.reader.InterceptorMetadataReader.getPlainInterceptorMetadata(InterceptorMetadataReader.java:64) >> at >> org.jboss.weld.injection.producer.InterceptionModelInitializer.initClassDeclaredEjbInterceptors(InterceptionModelInitializer.java:233) >> at >> org.jboss.weld.injection.producer.InterceptionModelInitializer.initEjbInterceptors(InterceptionModelInitializer.java:217) >> at >> org.jboss.weld.injection.producer.InterceptionModelInitializer.init(InterceptionModelInitializer.java:103) >> at >> org.jboss.weld.injection.producer.BeanInjectionTarget.buildInterceptionModel(BeanInjectionTarget.java:93) >> at >> org.jboss.weld.injection.producer.BeanInjectionTarget.initializeInterceptionModel(BeanInjectionTarget.java:88) >> at >> org.jboss.weld.injection.producer.BeanInjectionTarget.initializeAfterBeanDiscovery(BeanInjectionTarget.java:98) >> at >> org.jboss.weld.injection.producer.InjectionTargetInitializationContext.initialize(InjectionTargetInitializationContext.java:42) >> at >> org.jboss.weld.injection.producer.InjectionTargetService.addInjectionTargetToBeInitialized(InjectionTargetService.java:55) >> at >> org.jboss.weld.injection.producer.InjectionTargetService.addInjectionTargetToBeInitialized(InjectionTargetService.java:49) >> at >> org.jboss.weld.manager.InjectionTargetFactoryImpl.initialize(InjectionTargetFactoryImpl.java:145) >> at >> org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:92) >> at >> org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:80) >> at >> org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:70) >> at >> org.jboss.weld.manager.InjectionTargetFactoryImpl.createInjectionTarget(InjectionTargetFactoryImpl.java:54) >> >> On Wed, Jun 3, 2015 at 10:50 AM, Jozef Hartinger <[email protected]> >> wrote: >> >>> What I meant was that your PlainInterceptorFactory should in this case, >>> instead of calling createInterceptorInjectionTarget(), call >>> >>> beanManager.createInjectionTargetBuilder(type) >>> .setDecorationEnabled(false) >>> .setInterceptionEnabled(false) >>> .setTargetClassLifecycleCallbacksEnabled(false) >>> .setResourceInjectionEnabled(true) >>> .build() >>> >>> The InjectionTarget you get should be the same except for resource >>> injection which will be provided by Weld. >>> >>> Jozef >>> >>> >>> On 06/03/2015 11:25 AM, Emily Jiang wrote: >>> >>>> I might have missed your point. Please elaborate a bit more. >>>> >>> >>> >> >> >> -- >> Thanks >> Emily >> ================= >> Emily Jiang >> [email protected] >> >> >> > > > -- > Thanks > Emily > ================= > Emily Jiang > [email protected] > > > -- Thanks Emily ================= Emily Jiang [email protected]
_______________________________________________ weld-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/weld-dev
