⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wsaendpoint.java

📁 bpel执行引擎用来执行bpel业务流程
💻 JAVA
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements.  See the NOTICE file * distributed with this work for additional information * regarding copyright ownership.  The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License.  You may obtain a copy of the License at * *    http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied.  See the License for the * specific language governing permissions and limitations * under the License. */package org.apache.ode.bpel.epr;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.ode.utils.DOMUtils;import org.apache.ode.utils.Namespaces;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import javax.xml.namespace.QName;import java.util.HashMap;import java.util.Map;/** * A service endpoint represented as a WS-Addressing EndpointReference. */public class WSAEndpoint implements MutableEndpoint {    private static final Log __log = LogFactory.getLog(WSAEndpoint.class);    private Element _eprElmt;    public WSAEndpoint() {    }    public WSAEndpoint(Map map) {        this();        fromMap(map);    }    public String getSessionId() {        NodeList idNodes = _eprElmt.getElementsByTagNameNS(Namespaces.INTALIO_SESSION_NS, "session");        if (idNodes.getLength() > 0)            return idNodes.item(0).getTextContent();        else            return null;    }    public void setSessionId(String sessionId) {        NodeList idList = _eprElmt.getElementsByTagNameNS(Namespaces.INTALIO_SESSION_NS, "session");        if (idList.getLength() > 0)            idList.item(0).setTextContent(sessionId);        else {            Element sessElmt = _eprElmt.getOwnerDocument().createElementNS(Namespaces.INTALIO_SESSION_NS, "session");            sessElmt.setTextContent(sessionId);            _eprElmt.appendChild(sessElmt);        }    }    public String getUrl() {        return _eprElmt.getElementsByTagNameNS(Namespaces.WS_ADDRESSING_NS, "Address").item(0).getTextContent();    }    public void setUrl(String url) {        NodeList addrList = _eprElmt.getElementsByTagNameNS(Namespaces.WS_ADDRESSING_NS, "Address");        if (addrList.getLength() > 0)            addrList.item(0).setTextContent(url);        else {            Element addrElmt = _eprElmt.getOwnerDocument().createElementNS(Namespaces.WS_ADDRESSING_NS, "Address");            addrElmt.setTextContent(url);            _eprElmt.appendChild(addrElmt);        }    }    public QName getServiceName() {        NodeList metadataList = _eprElmt.getElementsByTagNameNS(Namespaces.WS_ADDRESSING_NS, "Metadata");        if (metadataList.getLength() > 0) {            Element metadata = (Element) metadataList.item(0);            Element service = DOMUtils.getFirstChildElement(metadata);            String serviceTextQName = service.getTextContent();            int twoDotsIdx = serviceTextQName.indexOf(":");            String prefix = serviceTextQName.substring(0, twoDotsIdx);            String serviceNS = _eprElmt.getOwnerDocument().lookupNamespaceURI(prefix);            // Lookup failed, checking directly on our element            if (serviceNS == null) {                serviceNS = service.getAttribute("xmlns:" + prefix);            }            if (serviceNS == null)                __log.warn("Couldn't find an appropriate namespace for service!");            QName result = new QName(serviceNS, serviceTextQName.substring(twoDotsIdx + 1, serviceTextQName.length()));            if (__log.isDebugEnabled())                __log.debug("Got service name from WSAEndpoint: " + result);            return result;        }        return null;    }    public String getPortName() {        NodeList metadataList = _eprElmt.getElementsByTagNameNS(Namespaces.WS_ADDRESSING_NS, "Metadata");        if (metadataList.getLength() > 0) {            Element metadata = (Element) metadataList.item(0);            Element service = DOMUtils.getFirstChildElement(metadata);            return service.getAttribute("EndpointName");        }        return null;    }    public boolean accept(Node node) {        if (node.getNodeType() == Node.ELEMENT_NODE) {            Element elmt = (Element) node;            if (elmt.getLocalName().equals(SERVICE_REF_QNAME.getLocalPart())                    && elmt.getNamespaceURI().equals(SERVICE_REF_QNAME.getNamespaceURI()))                elmt = DOMUtils.getFirstChildElement(elmt);            if (elmt != null && elmt.getLocalName().equals("EndpointReference")                    && elmt.getNamespaceURI().equals(Namespaces.WS_ADDRESSING_NS))                return true;        }        return false;    }    public void set(Node node) {        if (node.getNamespaceURI().equals(SERVICE_REF_QNAME.getNamespaceURI()))            _eprElmt = DOMUtils.getFirstChildElement((Element) node);        else            _eprElmt = (Element) node;        if (__log.isDebugEnabled())            __log.debug("Setting a WSAEndpoint value: " + DOMUtils.domToString(_eprElmt));    }    public Document toXML() {        // Wrapping        Document doc = DOMUtils.newDocument();        Element serviceRef = doc.createElementNS(SERVICE_REF_QNAME.getNamespaceURI(), SERVICE_REF_QNAME.getLocalPart());        doc.appendChild(serviceRef);        serviceRef.appendChild(doc.importNode(_eprElmt, true));        return _eprElmt.getOwnerDocument();    }    public Map toMap() {        HashMap<String, Object> result = new HashMap<String, Object>();        result.put(ADDRESS, getUrl());        String sid = getSessionId();        if (sid != null)            result.put(SESSION, sid);        NodeList metadataList = _eprElmt.getElementsByTagNameNS(Namespaces.WS_ADDRESSING_NS, "Metadata");        if (metadataList.getLength() > 0) {            Element metadata = (Element) metadataList.item(0);            Element service = DOMUtils.getFirstChildElement(metadata);            String serviceTextQName = service.getTextContent();            int twoDotsIdx = serviceTextQName.indexOf(":");            String prefix = serviceTextQName.substring(0, twoDotsIdx);            String serviceNS = null;            try {                serviceNS = _eprElmt.getOwnerDocument().lookupNamespaceURI(prefix);            } catch (Exception e) {                e.printStackTrace();            }            // Lookup failed, checking directly on our element            if (serviceNS == null) {                serviceNS = service.getAttribute("xmlns:" + prefix);            }            result.put(SERVICE_QNAME, new QName(serviceNS, serviceTextQName.substring(twoDotsIdx + 1, serviceTextQName                    .length())));            result.put(PORT_NAME, service.getAttribute("EndpointName"));            if (__log.isDebugEnabled()) {                __log.debug("Filled transfo map with service: " + result.get(SERVICE_QNAME));                __log.debug("Filled transfo map with port: " + result.get(PORT_NAME));            }        }        return result;    }    public void fromMap(Map eprMap) {        Document doc = DOMUtils.newDocument();        Element serviceRef = doc.createElementNS(SERVICE_REF_QNAME.getNamespaceURI(), SERVICE_REF_QNAME.getLocalPart());        doc.appendChild(serviceRef);        _eprElmt = doc.createElementNS(Namespaces.WS_ADDRESSING_NS, "EndpointReference");        serviceRef.appendChild(_eprElmt);        Element addrElmt = doc.createElementNS(Namespaces.WS_ADDRESSING_NS, "Address");        addrElmt.setTextContent((String) eprMap.get(ADDRESS));        if (eprMap.get(SESSION) != null) {            Element sessElmt = doc.createElementNS(Namespaces.INTALIO_SESSION_NS, "session");            sessElmt.setTextContent((String) eprMap.get(SESSION));            _eprElmt.appendChild(sessElmt);        }        if (eprMap.get(SERVICE_QNAME) != null) {            Element metadataElmt = doc.createElementNS(Namespaces.WS_ADDRESSING_NS, "Metadata");            _eprElmt.appendChild(metadataElmt);            Element serviceElmt = doc.createElementNS(Namespaces.WS_ADDRESSING_WSDL_NS, "ServiceName");            metadataElmt.appendChild(serviceElmt);            QName serviceQName = (QName) eprMap.get(SERVICE_QNAME);            serviceElmt.setAttribute("xmlns:servicens", serviceQName.getNamespaceURI());            serviceElmt.setTextContent("servicens:" + serviceQName.getLocalPart());            serviceElmt.setAttribute("EndpointName", (String) eprMap.get(PORT_NAME));        }        _eprElmt.appendChild(addrElmt);        if (__log.isDebugEnabled())            __log.debug("Constructed a new WSAEndpoint: " + DOMUtils.domToString(_eprElmt));    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -