/*
* Copyright 2012 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.forge.furnace.container.cdi.util;
import java.lang.annotation.Annotation;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
/**
* Warning: ***DO NOT USE THIS CLASS***
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*
*/
public abstract class BeanManagerUtils
{
@SuppressWarnings("unchecked")
public static <T> T getContextualInstance(final BeanManager manager, final Class<T> type)
{
T result = null;
Bean<T> bean = (Bean<T>) manager.resolve(manager.getBeans(type));
if (bean != null)
{
CreationalContext<T> context = manager.createCreationalContext(bean);
if (context != null)
{
result = (T) manager.getReference(bean, type, context);
}
}
return result;
}
@SuppressWarnings("unchecked")
public static <T> T getContextualInstance(final BeanManager manager, final Class<T> type, Annotation... qualifiers)
{
T result = null;
Bean<T> bean = (Bean<T>) manager.resolve(manager.getBeans(type, qualifiers));
if (bean != null)
{
CreationalContext<T> context = manager.createCreationalContext(bean);
if (context != null)
{
result = (T) manager.getReference(bean, type, context);
}
}
return result;
}
}