package org.switchyard.component.bean.deploy;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import org.switchyard.component.bean.ClientProxyBean;
import org.switchyard.exception.SwitchYardException;
private BeanManager _beanManager;
private ClassLoader _deploymentClassLoader;
private List<ServiceDescriptor> _serviceDescriptors = new ArrayList<ServiceDescriptor>();
private List<ClientProxyBean> _clientProxies = new ArrayList<ClientProxyBean>();
private List<CDIBean> _deploymentBeans = new ArrayList<CDIBean>();
public BeanDeploymentMetaData
setBeanManager(BeanManager beanManager) {
_beanManager = beanManager;
return this;
}
return _beanManager;
}
_deploymentClassLoader = deploymentClassLoader;
return this;
}
return _deploymentClassLoader;
}
_serviceDescriptors.add(serviceDescriptor);
}
_clientProxies.add(proxy);
}
_deploymentBeans.add(bean);
}
return Collections.unmodifiableList(_serviceDescriptors);
}
return Collections.unmodifiableList(_clientProxies);
}
return Collections.unmodifiableList(_deploymentBeans);
}
try {
BeanManager beanManager = getCDIBeanManager();
Set<Bean<?>> beans = beanManager.getBeans(BeanDeploymentMetaData.class);
if (beans.isEmpty()) {
throw new SwitchYardException("Failed to lookup BeanDeploymentMetaData from BeanManager. Must be bound into BeanManager. Perhaps SwitchYard CDI Extensions not properly installed in container.");
}
if (beans.size() > 1) {
throw new SwitchYardException("Failed to lookup BeanDeploymentMetaData from BeanManager. Multiple beans resolved for type '" + BeanDeploymentMetaData.class.getName() + "'.");
}
BeanDeploymentMetaDataCDIBean bean = (BeanDeploymentMetaDataCDIBean) beans.iterator().next();
return bean.getBeanMetaData();
} catch (NamingException e) {
throw new SwitchYardException("Failed to lookup BeanManager. Must be bound into java:comp as per CDI specification.", e);
}
}
BeanManager beanManager = getCDIBeanManager("java:comp");
if (beanManager == null) {
beanManager = getCDIBeanManager("java:comp/env");
if (beanManager == null) {
throw new NameNotFoundException("Name BeanManager is not bound in this Context");
}
}
return beanManager;
}
Context javaComp = getJavaComp(jndiLocation);
if (javaComp != null) {
try {
return (BeanManager) javaComp.lookup("BeanManager");
} catch (NamingException e) {
return null;
}
} else {
return null;
}
}
InitialContext initialContext = null;
try {
initialContext = new InitialContext();
return (Context) initialContext.lookup(jndiName);
} catch (NamingException e) {
return null;
} catch (Exception e) {
throw new SwitchYardException("Unexpected Exception retrieving '" + jndiName + "' from JNDI namespace.", e);
} finally {
if (initialContext != null) {
try {
initialContext.close();
} catch (NamingException e) {
throw new SwitchYardException("Unexpected error closing InitialContext.", e);
}
}
}
}
}