Search in sources :

Example 1 with DecoratorProxy

use of org.jboss.weld.bean.proxy.DecoratorProxy in project core by weld.

the class DecoratorInjectionTarget method inject.

@Override
public void inject(T instance, CreationalContext<T> ctx) {
    super.inject(instance, ctx);
    if (accessibleField != null && instance instanceof DecoratorProxy) {
        // this code is only applicable if the delegate is injected into a field
        // as the proxy can't intercept the delegate when setting the field
        // we need to now read the delegate from the field
        // this is only needed for fields, as constructor and method injection are handed
        // at injection time
        Object delegate;
        try {
            delegate = accessibleField.get(instance);
        } catch (IllegalAccessException e) {
            throw UtilLogger.LOG.accessErrorOnField(accessibleField.getName(), accessibleField.getDeclaringClass(), e);
        }
        final ProxyMethodHandler handler = new ProxyMethodHandler(beanManager.getContextId(), new TargetBeanInstance(delegate), getBean());
        ((ProxyObject) instance).setHandler(handler);
    }
}
Also used : ProxyObject(org.jboss.weld.bean.proxy.ProxyObject) DecoratorProxy(org.jboss.weld.bean.proxy.DecoratorProxy) ProxyObject(org.jboss.weld.bean.proxy.ProxyObject) TargetBeanInstance(org.jboss.weld.bean.proxy.TargetBeanInstance) ProxyMethodHandler(org.jboss.weld.bean.proxy.ProxyMethodHandler)

Aggregations

DecoratorProxy (org.jboss.weld.bean.proxy.DecoratorProxy)1 ProxyMethodHandler (org.jboss.weld.bean.proxy.ProxyMethodHandler)1 ProxyObject (org.jboss.weld.bean.proxy.ProxyObject)1 TargetBeanInstance (org.jboss.weld.bean.proxy.TargetBeanInstance)1