1 17 package org.apache.servicemix.jbi.config; 18 19 import org.apache.commons.logging.Log; 20 import org.apache.commons.logging.LogFactory; 21 import org.apache.servicemix.jbi.config.spring.CompositeElementProcessor; 22 import org.apache.servicemix.jbi.config.spring.ElementProcessor; 23 import org.apache.servicemix.jbi.config.spring.QNameElementProcessor; 24 import org.apache.servicemix.jbi.util.DOMUtil; 25 import org.springframework.beans.factory.support.BeanDefinitionReader; 26 import org.w3c.dom.Document ; 27 import org.w3c.dom.Element ; 28 29 34 public class ContainerElementProcessor extends QNameElementProcessor implements ElementProcessor { 35 36 private static final transient Log log = LogFactory.getLog(ContainerElementProcessor.class); 37 38 private static final CompositeElementProcessor compositeProcessor = new CompositeElementProcessor("", null) { 39 protected void loadLocalNameToProcessorMap() { 40 registerProcessor("component", new ComponentElementProcessor()); 41 registerProcessor("components", new ComponentsElementProcessor()); 42 registerProcessor("subscription", new SubscriptionElementProcessor()); 43 registerProcessor("qname", new QNameElementProcessor()); 44 } 45 }; 46 47 public static CompositeElementProcessor getCompositeprocessor() { 48 return compositeProcessor; 49 } 50 51 public void processElement(Element element, BeanDefinitionReader beanDefinitionReader) { 52 Document document = element.getOwnerDocument(); 54 55 Element root = (Element ) element.getParentNode(); 56 57 Element bean = document.createElement("bean"); 58 root.appendChild(bean); 59 DOMUtil.copyAttributes(element, bean); 60 DOMUtil.moveContent(element, bean); 61 root.removeChild(element); 62 63 String id = bean.getAttribute("id"); 64 if (id == null || id.length() == 0) { 65 bean.setAttribute("id", "jbi"); 66 } 67 68 String className = bean.getAttribute("class"); 69 if (className == null || className.length() == 0) { 70 bean.setAttribute("class", "org.apache.servicemix.jbi.container.SpringJBIContainer"); 71 } 72 73 processChildren(compositeProcessor, bean, beanDefinitionReader); 74 75 logXmlGenerated(log, "container generated", bean); 76 } 77 78 } 79 | Popular Tags |