addressingheadersfactory200508.java

来自「Xfire文件 用于开发web service 的一个开源工具 很好用的」· Java 代码 · 共 267 行

JAVA
267
字号
package org.codehaus.xfire.addressing;import java.util.ArrayList;import java.util.List;import javax.xml.namespace.QName;import org.codehaus.xfire.fault.XFireFault;import org.jdom.Attribute;import org.jdom.DefaultJDOMFactory;import org.jdom.Element;import org.jdom.Namespace;public class AddressingHeadersFactory200508    extends AbstactAddressingHeadersFactory{      public String getAnonymousUri()    {        return WSA_200508_ANONYMOUS_URI;    }    protected Namespace getNamespace()    {        return Namespace.getNamespace(WSA_PREFIX, WSA_NAMESPACE_200508);    }    public String getNoneUri()    {        return "http://www.w3.org/2005/08/addressing/none";    }    public AddressingHeaders createHeaders(Element root)        throws XFireFault    {        AddressingHeaders headers = new AddressingHeaders();            Namespace wsa = getNamespace();            Element from = root.getChild(WSA_FROM, wsa);        if (from != null)        {            headers.setFrom(createEPR(from));        }else{            headers.setFrom(createDefaultEPR());        }            Element replyTo = root.getChild(WSA_REPLY_TO, wsa);        if (replyTo != null)        {            headers.setReplyTo(createEPR(replyTo));        }else{            headers.setReplyTo(createDefaultEPR());        }        assertSingle(root,WSA_FAULT_TO,wsa);        Element faultTo = root.getChild(WSA_FAULT_TO, wsa);         if (faultTo != null)        {            headers.setFaultTo(createEPR(faultTo));        }else{            headers.setFaultTo(createDefaultEPR());        }            Element messageId = root.getChild(WSA_MESSAGE_ID, wsa);        if (messageId != null)        {            headers.setMessageID(messageId.getValue());        }            Element relatesTo = root.getChild(WSA_RELATES_TO, wsa);        if (relatesTo != null)        {            headers.setRelatesTo(relatesTo.getValue());        }                Element to = root.getChild(WSA_TO, wsa);        if (to != null)        {            headers.setTo(to.getValue());        }            Element action = root.getChild(WSA_ACTION, wsa);        if (action != null)        {            headers.setAction(action.getValue().trim());        }            return headers;    }    private void assertSingle(Element root, String tagName, Namespace wsa)        throws XFireFault    {        List list = root.getChildren(tagName,wsa);        if( list!= null ){            if(list.size()> 1){                                XFireFault fault = new XFireFault("Invalid header",new QName(wsa.getURI(),"Sender"));                fault.addNamespace("wsa",wsa.getURI());                fault.setSubCode(new QName(wsa.getURI(),"InvalidAddressingHeader"));                Element detail = new Element("ProblemHeaderQName",wsa);                detail.addContent(tagName);                fault.setDetail(detail);                throw fault;            }        }            }    public EndpointReference createDefaultEPR()    {        DefaultJDOMFactory factory = new DefaultJDOMFactory();        Element eprElem = factory.element("EPR", getNamespace());        Element addressElem = factory.element(WSA_ADDRESS, getNamespace());         addressElem.addContent(factory.text(getAnonymousUri()));        eprElem.addContent(addressElem);                            return createEPR(eprElem);    }    public EndpointReference createEPR(Element eprElement)    {        EndpointReference epr = new EndpointReference();            List elements = eprElement.getChildren();        String version = eprElement.getNamespaceURI();            epr.setElement(eprElement);                    // This will be removed.. but later :)        for (int i = 0; i < elements.size(); i++)        {            Element e = (Element) elements.get(i);            if (e.getNamespaceURI().equals(version))            {                    if (e.getName().equals(WSA_SERVICE_NAME))                {                    epr.setServiceName(elementToQName(e));                    epr.setEndpointName(e.getAttributeValue(WSA_ENDPOINT_NAME, version));                }                else if (e.getName().equals(WSA_INTERFACE_NAME))                {                    epr.setInterfaceName(elementToQName(e));                }                else if (e.getName().equals(WSA_POLICIES))                {                    List policies = new ArrayList();                        List polEls = e.getChildren();                    for (int j = 0; j < polEls.size(); j++)                    {                        policies.add(polEls.get(j));                    }                    epr.setPolicies(policies);                }            }        }            return epr;    }    public boolean hasHeaders(Element root)    {        return root.getChild(WSA_ACTION, getNamespace()) != null;    }    public void writeHeaders(Element root, AddressingHeaders headers)    {        final Namespace ns = getNamespace();            root.addNamespaceDeclaration(ns);            if (headers.getTo() != null)        {            Element to = new Element(WSA_TO, ns);            to.addContent(headers.getTo());            root.addContent(to);        }            if (headers.getAction() != null)        {            Element action = new Element(WSA_ACTION, ns);            action.addContent(headers.getAction());            root.addContent(action);        }            if (headers.getFaultTo() != null)        {            Element faultTo = new Element(WSA_FAULT_TO, ns);            root.addContent(faultTo);                writeEPR(faultTo, headers.getFaultTo());        }            if (headers.getFrom() != null)        {            Element from = new Element(WSA_FROM, ns);            root.addContent(from);                writeEPR(from, headers.getFrom());        }            if (headers.getMessageID() != null)        {            Element messageId = new Element(WSA_MESSAGE_ID, ns);            messageId.addContent(headers.getMessageID());            root.addContent(messageId);        }            if (headers.getRelatesTo() != null)        {            Element relatesTo = new Element(WSA_RELATES_TO, ns);            relatesTo.addContent(headers.getRelatesTo());            root.addContent(relatesTo);                if (headers.getRelationshipType() != null)            {                String value = qnameToString(root, headers.getRelationshipType());                relatesTo.setAttribute(new Attribute(WSA_RELATIONSHIP_TYPE, value));            }        }            if (headers.getReplyTo() != null)        {            Element replyTo = new Element(WSA_REPLY_TO, ns);            root.addContent(replyTo);                writeEPR(replyTo, headers.getReplyTo());            }        if (headers.getReferenceParameters() != null)        {            root.addContent(headers.getReferenceParameters());        }        }    public void writeEPR(Element root, EndpointReference epr)    {        final Namespace ns = getNamespace();            Element address = new Element(WSA_ADDRESS, ns);        address.addContent(epr.getAddress());        root.addContent(address);            if (epr.getServiceName() != null)        {            Element serviceName = new Element(WSA_SERVICE_NAME, ns);            serviceName.addContent(qnameToString((Element) root.getParent(), epr.getServiceName()));            root.addContent(serviceName);                if (epr.getInterfaceName() != null)            {                String value = qnameToString((Element) root.getParent(), epr.getInterfaceName());                serviceName.setAttribute(new Attribute(WSA_INTERFACE_NAME, value));            }        }    }  }

⌨️ 快捷键说明

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