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;
}