private static ServiceAssembly parseServiceAssembly()

in core/servicemix-core/src/main/java/org/apache/servicemix/jbi/deployment/DescriptorFactory.java [172:225]


    private static ServiceAssembly parseServiceAssembly(Element child) {
        ServiceAssembly serviceAssembly = new ServiceAssembly();
        List<ServiceUnit> sus = new ArrayList<ServiceUnit>();
        for (Element e = DOMUtil.getFirstChildElement(child); e != null; e = DOMUtil.getNextSiblingElement(e)) {
            if ("identification".equals(e.getLocalName())) {
                serviceAssembly.setIdentification(readIdentification(e));
            } else if ("service-unit".equals(e.getLocalName())) {
                ServiceUnit su = new ServiceUnit();
                for (Element e2 = DOMUtil.getFirstChildElement(e); e2 != null; e2 = DOMUtil.getNextSiblingElement(e2)) {
                    if ("identification".equals(e2.getLocalName())) {
                        su.setIdentification(readIdentification(e2));
                    } else if ("target".equals(e2.getLocalName())) {
                        Target target = new Target();
                        for (Element e3 = DOMUtil.getFirstChildElement(e2); e3 != null; e3 = DOMUtil.getNextSiblingElement(e3)) {
                            if ("artifacts-zip".equals(e3.getLocalName())) {
                                target.setArtifactsZip(getText(e3));
                            } else if ("component-name".equals(e3.getLocalName())) {
                                target.setComponentName(getText(e3));
                            }
                        }
                        su.setTarget(target);
                    }
                }
                sus.add(su);
            } else if ("connections".equals(e.getLocalName())) {
                Connections connections = new Connections();
                List<Connection> cns = new ArrayList<Connection>();
                for (Element e2 = DOMUtil.getFirstChildElement(e); e2 != null; e2 = DOMUtil.getNextSiblingElement(e2)) {
                    if ("connection".equals(e2.getLocalName())) {
                        Connection cn = new Connection();
                        for (Element e3 = DOMUtil.getFirstChildElement(e2); e3 != null; e3 = DOMUtil.getNextSiblingElement(e3)) {
                            if ("consumer".equals(e3.getLocalName())) {
                                Consumer consumer = new Consumer();
                                consumer.setInterfaceName(readAttributeQName(e3, "interface-name"));
                                consumer.setServiceName(readAttributeQName(e3, "service-name"));
                                consumer.setEndpointName(getAttribute(e3, "endpoint-name"));
                                cn.setConsumer(consumer);
                            } else if ("provider".equals(e3.getLocalName())) {
                                Provider provider = new Provider();
                                provider.setServiceName(readAttributeQName(e3, "service-name"));
                                provider.setEndpointName(getAttribute(e3, "endpoint-name"));
                                cn.setProvider(provider);
                            }
                        }
                        cns.add(cn);
                    }
                }
                connections.setConnections(cns.toArray(new Connection[cns.size()]));
                serviceAssembly.setConnections(connections);
            }
        }
        serviceAssembly.setServiceUnits(sus.toArray(new ServiceUnit[sus.size()]));
        return serviceAssembly;
    }