public ServiceEndpoint resolveStandardEPR()

in core/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/Registry.java [350:393]


    public ServiceEndpoint resolveStandardEPR(DocumentFragment epr) {
        try {
            NodeList children = epr.getChildNodes();
            for (int i = 0; i < children.getLength(); ++i) {
                Node n = children.item(i);
                if (n.getNodeType() != Node.ELEMENT_NODE) {
                    continue;
                }
                Element elem = (Element) n;
                String[] namespaces = new String[] {WSAddressingConstants.WSA_NAMESPACE_200508,
                                                    WSAddressingConstants.WSA_NAMESPACE_200408,
                                                    WSAddressingConstants.WSA_NAMESPACE_200403,
                                                    WSAddressingConstants.WSA_NAMESPACE_200303 };
                NodeList nl = null;
                for (int ns = 0; ns < namespaces.length; ns++) {
                    NodeList tnl = elem.getElementsByTagNameNS(namespaces[ns], WSAddressingConstants.EL_ADDRESS);
                    if (tnl.getLength() == 1) {
                        nl = tnl;
                        break;
                    }
                }
                if (nl != null) {
                    Element address = (Element) nl.item(0);
                    String uri = DOMUtil.getElementText(address);
                    if (uri != null) {
                        uri = uri.trim();
                    }
                    if (uri.startsWith("endpoint:")) {
                        uri = uri.substring("endpoint:".length());
                        String[] parts = URIResolver.split3(uri);
                        return getInternalEndpoint(new QName(parts[0], parts[1]), parts[2]);
                    } else if (uri.startsWith("service:")) {
                        uri = uri.substring("service:".length());
                        String[] parts = URIResolver.split2(uri);
                        return getEndpoint(new QName(parts[0], parts[1]), parts[1]);
                    }
                    // TODO should we support interface: and operation: here?
                }
            }
        } catch (Exception e) {
            LOGGER.debug("Unable to resolve EPR: " + e);
        }
        return null;
    }