Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2010, Red Hat Inc., and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jboss.as.weld.injection;
 
 
 import java.util.Map;
 import java.util.Set;
Class that performs CDI injection and calls initializer methods after resource injection has been run

Author(s):
Stuart Douglas
 
 public class WeldInjectionInterceptor implements Interceptor {
 
 
     public WeldInjectionInterceptor(final AtomicReference<ManagedReferencetargetReferencefinal Map<Class<?>, AtomicReference<ManagedReference>> interceptorsfinal WeldManagedReferenceFactory managedReferenceFactory) {
         this. = targetReference;
         this. = interceptors;
         this. = managedReferenceFactory;
     }
 
     @Override
     public Object processInvocation(final InterceptorContext contextthrows Exception {
         final ManagedReference managedReference = .get();
         if (managedReference instanceof WeldManagedReference) {
             final WeldManagedReference reference = (WeldManagedReferencemanagedReference;
             reference.getInjectionTarget().inject(.get().getInstance(), reference.getContext());
             //now inject the interceptors
             for (final Map.Entry<Class<?>, AtomicReference<ManagedReference>> entry : .entrySet()) {
                 final ManagedReference instance = entry.getValue().get();
                 if (instance != null) {
                     reference.injectInterceptor(entry.getKey(), instance.getInstance());
                 }
             }
         } else if( != null){
             //this component was not created by the managed reference factory, this can happen in the case of JSF managed beans
             final ManagedReference newReference = .injectExistingReference(managedReference);
             .set(newReference);
         }
         return context.proceed();
     }
 
     public static class Factory implements InterceptorFactory {
 
         final ComponentConfiguration configuration;
         final Set<Class<?>> interceptorClasses;
 
         public Factory(final ComponentConfiguration configurationfinal Set<Class<?>> interceptorClasses) {
             this. = configuration;
             this. = interceptorClasses;
         }
 
         @Override
         public Interceptor create(final InterceptorFactoryContext context) {
             final AtomicReference<ManagedReferencetargetReference = (AtomicReference<ManagedReference>) context.getContextData().get(.);
             final Map<Class<?>, AtomicReference<ManagedReference>> interceptors = new HashMap<Class<?>, AtomicReference<ManagedReference>>();
             for (Class<?> clazz : ) {
                 final AtomicReference<ManagedReferenceinterceptor = (AtomicReference<ManagedReference>) context.getContextData().get(clazz);
                 if(interceptor != null) {
                     interceptors.put(clazzinterceptor);
                 }
 
             }
             WeldManagedReferenceFactory managedReferenceFactory = null;
             if(.getInstanceFactory() instanceof WeldManagedReferenceFactory) {
                 managedReferenceFactory = (WeldManagedReferenceFactory.getInstanceFactory();
            }
            return new WeldInjectionInterceptor(targetReferenceinterceptorsmanagedReferenceFactory);
        }
    }
New to GrepCode? Check out our FAQ X