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 ServiceUnitElementProcessor extends QNameElementProcessor implements ElementProcessor { 35 36 private static final transient Log log = LogFactory.getLog(ServiceUnitElementProcessor.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("qname", new QNameElementProcessor()); 43 } 44 }; 45 46 public static CompositeElementProcessor getCompositeprocessor() { 47 return compositeProcessor; 48 } 49 50 public void processElement(Element element, BeanDefinitionReader beanDefinitionReader) { 51 Document document = element.getOwnerDocument(); 53 54 Element root = (Element ) element.getParentNode(); 55 56 Element bean = document.createElement("bean"); 57 root.appendChild(bean); 58 DOMUtil.copyAttributes(element, bean); 59 DOMUtil.moveContent(element, bean); 60 root.removeChild(element); 61 62 String id = bean.getAttribute("id"); 63 if (id == null || id.length() == 0) { 64 bean.setAttribute("id", "jbi"); 65 } 66 67 String className = bean.getAttribute("class"); 68 if (className == null || className.length() == 0) { 69 bean.setAttribute("class", "org.apache.servicemix.jbi.container.SpringServiceUnitContainer"); 70 } 71 72 processChildren(compositeProcessor, bean, beanDefinitionReader); 73 74 logXmlGenerated(log, "container generated", bean); 75 } 76 77 } 78 | Popular Tags |