TypeBinding deploymentType = schemaBinding.getType(deploymentTypeQName);
deploymentType.setHandler(new DefaultElementHandler()
{
public Object startElement(Object parent, QName name, ElementBinding element)
{
return new AbstractKernelDeployment();
}
});
// deployment has a classloader
deploymentType.pushInterceptor(classloaderQName, new DefaultElementInterceptor()
{
public void add(Object parent, Object child, QName name)
{
AbstractKernelDeployment deployment = (AbstractKernelDeployment) parent;
AbstractClassLoaderMetaData classloader = (AbstractClassLoaderMetaData) child;
deployment.setClassLoader(classloader);
// add classloaders as value beans
List<BeanMetaDataFactory> beans = deployment.getBeanFactories();
if (beans == null)
{
beans = new ArrayList<BeanMetaDataFactory>();
deployment.setBeanFactories(beans);
}
beans.add(classloader);
}
});
// deployment has a list beans
deploymentType.pushInterceptor(beanQName, new DefaultElementInterceptor()
{
public void add(Object parent, Object child, QName name)
{
AbstractKernelDeployment deployment = (AbstractKernelDeployment) parent;
AbstractBeanMetaData bean = (AbstractBeanMetaData) child;
List<BeanMetaDataFactory> beans = deployment.getBeanFactories();
if (beans == null)
{
beans = new ArrayList<BeanMetaDataFactory>();
deployment.setBeanFactories(beans);
}
beans.add(bean);
}
});
// deployment has a list beanfactorys
deploymentType.pushInterceptor(beanFactoryQName, new DefaultElementInterceptor()
{
public void add(Object parent, Object child, QName name)
{
AbstractKernelDeployment deployment = (AbstractKernelDeployment) parent;
AbstractBeanMetaData bean = (AbstractBeanMetaData) child;
List<BeanMetaDataFactory> beans = deployment.getBeanFactories();
if (beans == null)
{
beans = new ArrayList<BeanMetaDataFactory>();
deployment.setBeanFactories(beans);
}
beans.add(bean);
}
});