Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2012, Red Hat, Inc., and individual contributors
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
  * http://www.apache.org/licenses/LICENSE-2.0
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.jboss.weld.injection.producer;
 
 import java.util.List;
 
 
Common functionality for an instantiator capable of applying decorators to a given instance.

Author(s):
Jozef Hartinger
See also:
SubclassDecoratorApplyingInstantiator
ProxyDecoratorApplyingSessionBeanInstantiator
 
 public abstract class AbstractDecoratorApplyingInstantiator<T> extends ForwardingInstantiator<T> {
 
     private final Bean<T> bean;
     private final Class<T> proxyClass;
     private final List<Decorator<?>> decorators;
 
     public AbstractDecoratorApplyingInstantiator(String contextIdInstantiator<T> delegateBean<T> beanList<Decorator<?>> decoratorsClass<? extends T> implementationClass) {
         super(delegate);
         this. = bean;
         this. = decorators;
         ProxyFactory<T> factory = new ProxyFactory<T>(contextIdimplementationClassbean.getTypes(), beantrue);
         // eagerly generate the proxy class
         this. = factory.getProxyClass();
     }
 
     @Override
     public T newInstance(CreationalContext<T> ctxBeanManagerImpl manager) {
         InjectionPoint originalInjectionPoint = manager.getServices().get(CurrentInjectionPoint.class).peek();
         return applyDecorators(delegate().newInstance(ctxmanager), ctxoriginalInjectionPointmanager);
     }
 
     protected abstract T applyDecorators(T instanceCreationalContext<T> creationalContextInjectionPoint originalInjectionPointBeanManagerImpl manager);
 
     protected T getOuterDelegate(T instanceCreationalContext<T> creationalContextInjectionPoint originalInjectionPointBeanManagerImpl manager) {
         TargetBeanInstance beanInstance = new TargetBeanInstance(instance);
         DecorationHelper<T> decorationHelper = new DecorationHelper<T>(beanInstancemanagermanager.getServices().get(ContextualStore.class), );
         DecorationHelper.push(decorationHelper);
         try {
             final T outerDelegate = decorationHelper.getNextDelegate(originalInjectionPointcreationalContext);
             if (outerDelegate == null) {
                 throw new WeldException(..proxyInstantiationFailed(this));
             }
             return outerDelegate;
         } finally {
             DecorationHelper.pop();
         }
     }
 
     protected void registerOuterDecorator(ProxyObject instance, T outerDelegate) {
         wrapperMethodHandler.setOuterDecorator(outerDelegate);
     }
 
     public Bean<T> getBean() {
         return ;
     }
 
     public Class<T> getProxyClass() {
         return ;
     }
 
     public List<Decorator<?>> getDecorators() {
         return ;
     }
 
    @Override
    public boolean hasDecoratorSupport() {
        return true;
    }
New to GrepCode? Check out our FAQ X