All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ocpsoft.rewrite.cdi.manager.BeanManagerUtils Maven / Gradle / Ivy

There is a newer version: 10.0.2.Final
Show newest version
package org.ocpsoft.rewrite.cdi.manager;

import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.InjectionTarget;
import java.lang.annotation.Annotation;

/**
 * @author Lincoln Baxter, III
 */
public abstract class BeanManagerUtils
{
   @SuppressWarnings("unchecked")
   public static  T getContextualInstance(final BeanManager manager, final Class type, Annotation... qualifiers)
   {
      T result = null;
      Bean bean = (Bean) manager.resolve(manager.getBeans(type, qualifiers));
      if (bean != null)
      {
         CreationalContext context = manager.createCreationalContext(bean);
         if (context != null)
         {
            result = (T) manager.getReference(bean, type, context);
         }
      }
      return result;
   }

   @SuppressWarnings("unchecked")
   public static CreationalContext injectNonContextualInstance(final BeanManager manager, final Object instance)
   {
      if (instance != null)
      {
         CreationalContext creationalContext = manager.createCreationalContext(null);
         InjectionTarget injectionTarget = (InjectionTarget) manager
                  .createInjectionTarget(manager.createAnnotatedType(instance.getClass()));
         injectionTarget.inject(instance, creationalContext);
         return creationalContext;
      }
      return null;
   }
}