/**
* Copyright 2011 Intuit Inc. All Rights Reserved
*/
package com.intuit.tank.service.util;
/*
* #%L
* Rest Service Common Classes
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.servlet.ServletContext;
/**
* InjectorUtil
*
* @author dangleton
*
*/
public class ServletInjector<T> {
private BeanManager getBeanManager(ServletContext servletContext) {
BeanManager result = null;
result = (BeanManager) servletContext
.getAttribute("org.jboss.weld.environment.servlet.javax.enterprise.inject.spi.BeanManager");
return result;
}
@SuppressWarnings({ "unchecked" })
public T getManagedBean(ServletContext servletContext, Class<T> beanClass) {
BeanManager beanManager = getBeanManager(servletContext);
Bean<?> bean = beanManager.getBeans(beanClass).iterator().next();
CreationalContext<?> cc = beanManager.createCreationalContext(bean);
return (T) beanManager.getReference(bean, beanClass, cc);
}
}