use of org.jboss.weld.injection.producer.BasicInjectionTarget in project core by weld.
the class ManagedBean method initHasPostConstructCallback.
private boolean initHasPostConstructCallback(InjectionTarget<T> producer) {
if (producer instanceof BasicInjectionTarget<?>) {
BasicInjectionTarget<?> weldProducer = (BasicInjectionTarget<?>) producer;
final InterceptionModel interceptors = getInterceptors();
if (interceptors == null || interceptors.getInterceptors(InterceptionType.POST_CONSTRUCT, null).isEmpty()) {
if (!weldProducer.getLifecycleCallbackInvoker().hasPostConstructCallback()) {
return false;
}
}
}
// otherwise we assume there is a post construct callback, just to be safe
return true;
}
use of org.jboss.weld.injection.producer.BasicInjectionTarget in project core by weld.
the class SubclassedComponentDescriptorTest method testInterceptionModelForConstructor.
@Test
public void testInterceptionModelForConstructor() {
BasicInjectionTarget<?> it = (BasicInjectionTarget<?>) manager.createInjectionTarget(manager.getEjbDescriptor(Foo.class.getSimpleName()));
InterceptionModel model = manager.getInterceptorModelRegistry().get(it.getAnnotated());
assertNotNull(model);
assertTrue(model.hasExternalConstructorInterceptors());
}
use of org.jboss.weld.injection.producer.BasicInjectionTarget in project core by weld.
the class Validator method validateInterceptors.
private void validateInterceptors(BeanManagerImpl beanManager, AbstractClassBean<?> classBean) {
InterceptionModel interceptionModel = beanManager.getInterceptorModelRegistry().get(classBean.getAnnotated());
if (interceptionModel != null) {
Set<? extends InterceptorClassMetadata<?>> interceptors = interceptionModel.getAllInterceptors();
if (interceptors.size() > 0) {
boolean passivationCapabilityCheckRequired = beanManager.isPassivatingScope(classBean.getScope());
for (InterceptorClassMetadata<?> interceptorMetadata : interceptors) {
// in the case of CDI interceptors we only need to additionally validate passivation capability (if required)
if (interceptorMetadata.getInterceptorFactory() instanceof CdiInterceptorFactory<?> && passivationCapabilityCheckRequired) {
CdiInterceptorFactory<?> cdiInterceptorFactory = (CdiInterceptorFactory<?>) interceptorMetadata.getInterceptorFactory();
Interceptor<?> interceptor = cdiInterceptorFactory.getInterceptor();
boolean isSerializable = (interceptor instanceof InterceptorImpl) ? ((InterceptorImpl<?>) interceptor).isSerializable() : Beans.isPassivationCapableDependency(interceptor);
if (!isSerializable) {
throw ValidatorLogger.LOG.passivatingBeanWithNonserializableInterceptor(classBean, interceptor);
}
if (interceptor instanceof InterceptorImpl) {
beanManager = ((InterceptorImpl<?>) interceptor).getBeanManager();
}
for (InjectionPoint injectionPoint : interceptor.getInjectionPoints()) {
Bean<?> resolvedBean = beanManager.resolve(beanManager.getBeans(injectionPoint));
validateInterceptorDecoratorInjectionPointPassivationCapable(injectionPoint, resolvedBean, beanManager, classBean);
}
}
if (interceptorMetadata.getInterceptorFactory() instanceof PlainInterceptorFactory<?>) {
PlainInterceptorFactory<?> factory = (PlainInterceptorFactory<?>) interceptorMetadata.getInterceptorFactory();
Class<?> interceptorClass = interceptorMetadata.getJavaClass();
if (passivationCapabilityCheckRequired && !Reflections.isSerializable(interceptorClass)) {
throw ValidatorLogger.LOG.passivatingBeanWithNonserializableInterceptor(this, interceptorClass.getName());
}
// if we can't get to the interceptor's BeanManager, we will use the bean's BM instead
InjectionTarget<?> injectionTarget = factory.getInjectionTarget();
if (injectionTarget instanceof BasicInjectionTarget<?>) {
beanManager = ((BasicInjectionTarget<?>) injectionTarget).getBeanManager();
}
for (InjectionPoint injectionPoint : factory.getInjectionTarget().getInjectionPoints()) {
validateInjectionPoint(injectionPoint, beanManager);
if (passivationCapabilityCheckRequired) {
Bean<?> resolvedBean = beanManager.resolve(beanManager.getBeans(injectionPoint));
validateInterceptorDecoratorInjectionPointPassivationCapable(injectionPoint, resolvedBean, beanManager, classBean);
}
}
}
}
}
}
}
Aggregations