soapheaderimpl.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 399 行 · 第 1/2 页
JAVA
399 行
Collection elements = new ArrayList();
for (Iterator iterator = omSOAPHeader.extractHeaderBlocks(actor); iterator.hasNext();) {
elements.add(toSAAJNode((NodeImpl)iterator.next()));
}
return elements.iterator();
}
/**
* Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects in this
* <code>SOAPHeader</code> object that have the specified actor and that have a MustUnderstand
* attribute whose value is equivalent to <code>true</code>.
*
* @param actor a <code>String</code> giving the URI of the actor for which to search
* @return an <code>Iterator</code> object over all the <code>SOAPHeaderElement</code> objects
* that contain the specified actor and are marked as MustUnderstand
*/
public Iterator examineMustUnderstandHeaderElements(String actor) {
Collection elements = new ArrayList();
for (Iterator iterator = omSOAPHeader.examineMustUnderstandHeaderBlocks(actor);
iterator.hasNext();) {
elements.add(toSAAJNode((NodeImpl)iterator.next()));
}
return elements.iterator();
}
/**
* Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects in this
* <code>SOAPHeader</code> object.
*
* @return an <code>Iterator</code> object over all the <code>SOAPHeaderElement</code> objects
* contained by this <code>SOAPHeader</code>
*/
public Iterator examineAllHeaderElements() {
Collection elements = new ArrayList();
for (Iterator iterator = omSOAPHeader.examineAllHeaderBlocks(); iterator.hasNext();) {
elements.add(toSAAJNode((NodeImpl)iterator.next()));
}
return elements.iterator();
}
/**
* Returns an <code>Iterator</code> over all the <code>SOAPHeaderElement</code> objects in this
* <code>SOAPHeader </code> object and detaches them from this <code>SOAPHeader</code> object.
*
* @return an <code>Iterator</code> object over all the <code>SOAPHeaderElement</code> objects
* contained by this <code>SOAPHeader</code>
*/
public Iterator extractAllHeaderElements() {
Collection elements = new ArrayList();
for (Iterator iterator = omSOAPHeader.extractAllHeaderBlocks(); iterator.hasNext();) {
elements.add(toSAAJNode((NodeImpl)iterator.next()));
}
return elements.iterator();
}
public SOAPHeaderElement addHeaderElement(QName qname) throws SOAPException {
return (SOAPHeaderElement)addChildElement(qname.getLocalPart(), qname.getPrefix()
, qname.getNamespaceURI());
}
/**
* Creates a new NotUnderstood SOAPHeaderElement object initialized with the specified name and
* adds it to this SOAPHeader object. This operation is supported only by SOAP 1.2
*
* @param name - a QName object with the name of the SOAPHeaderElement object that was not
* understood.
* @return the new SOAPHeaderElement object that was inserted into this SOAPHeader object
* @throws SOAPException- if a SOAP error occurs. java.lang.UnsupportedOperationException - if
* this is a SOAP 1.1 Header.
*/
public SOAPHeaderElement addNotUnderstoodHeaderElement(QName qname) throws SOAPException {
SOAPHeaderBlock soapHeaderBlock = null;
OMNamespace ns = new NamespaceImpl(qname.getNamespaceURI(), qname.getPrefix());
if (this.element.getOMFactory() instanceof SOAP11Factory) {
throw new UnsupportedOperationException();
} else {
soapHeaderBlock = this.omSOAPHeader.addHeaderBlock(
Constants.ELEM_NOTUNDERSTOOD, this.element.getNamespace());
soapHeaderBlock.addAttribute(qname.getLocalPart(), qname.getPrefix(), ns);
}
SOAPHeaderElementImpl soapHeaderElementImpl = new SOAPHeaderElementImpl(soapHeaderBlock);
return soapHeaderElementImpl;
}
/**
* Creates a new Upgrade SOAPHeaderElement object initialized with the specified List of
* supported SOAP URIs and adds it to this SOAPHeader object. This operation is supported on
* both SOAP 1.1 and SOAP 1.2 header.
*
* @param supportedSOAPURIs - an Iterator object with the URIs of SOAP versions supported.
* @return the new SOAPHeaderElement object that was inserted into this SOAPHeader object
* @throws SOAPException - if a SOAP error occurs.
*/
public SOAPHeaderElement addUpgradeHeaderElement(Iterator iterator) throws SOAPException {
SOAPHeaderBlock upgrade = this.omSOAPHeader.addHeaderBlock(
Constants.ELEM_UPGRADE, this.element.getNamespace());
int index = 0;
String prefix = "ns";
while (iterator.hasNext()) {
index++;
String supported = (String)iterator.next();
OMNamespace namespace = new NamespaceImpl(supported, prefix + index);
if (this.element.getOMFactory() instanceof SOAP11Factory) {
SOAP11HeaderBlockImpl supportedEnvelop =
new SOAP11HeaderBlockImpl(Constants.ELEM_SUPPORTEDENVELOPE,
namespace,
(SOAPFactory)this.element.getOMFactory());
supportedEnvelop.addAttribute(Constants.ATTR_QNAME, prefix + index + ":"
+ Constants.ELEM_ENVELOPE, null);
upgrade.addChild(supportedEnvelop);
} else {
SOAP12HeaderBlockImpl supportedEnvelop =
new SOAP12HeaderBlockImpl(Constants.ELEM_SUPPORTEDENVELOPE,
namespace,
(SOAPFactory)this.element.getOMFactory());
supportedEnvelop.addAttribute(Constants.ATTR_QNAME, prefix + index + ":"
+ Constants.ELEM_ENVELOPE, null);
upgrade.addChild(supportedEnvelop);
}
}
SOAPHeaderElementImpl soapHeaderElementImpl = new SOAPHeaderElementImpl(upgrade);
return soapHeaderElementImpl;
}
public SOAPHeaderElement addUpgradeHeaderElement(String[] as) throws SOAPException {
ArrayList supportedEnvelops = new ArrayList();
for (int a = 0; a < as.length; a++) {
String supported = (String)as[a];
supportedEnvelops.add(supported);
}
if (supportedEnvelops.size() > 0) {
return addUpgradeHeaderElement(supportedEnvelops.iterator());
}
return null;
}
public SOAPHeaderElement addUpgradeHeaderElement(String s) throws SOAPException {
if (s == null && s.trim().length() > 0) {
return null;
}
ArrayList supportedEnvelops = new ArrayList();
supportedEnvelops.add(s);
return addUpgradeHeaderElement(supportedEnvelops.iterator());
}
public SOAPElement addTextNode(String text) throws SOAPException {
if (this.element.getOMFactory() instanceof SOAP11Factory) {
return super.addTextNode(text);
} else if (this.element.getOMFactory() instanceof SOAP12Factory) {
throw new SOAPException("Cannot add text node to SOAPHeader");
} else {
return null;
}
}
public Iterator getChildElements(Name name) {
QName qName = new QName(name.getURI(), name.getLocalName());
return getChildren(element.getChildrenWithName(qName));
}
public Iterator getChildElements() {
return getChildren(element.getChildren());
}
private Iterator getChildren(Iterator childIter) {
Collection childElements = new ArrayList();
while (childIter.hasNext()) {
org.w3c.dom.Node domNode = (org.w3c.dom.Node)childIter.next();
Node saajNode = toSAAJNode(domNode);
if (saajNode instanceof javax.xml.soap.Text) {
childElements.add(saajNode);
} else if (!(saajNode instanceof SOAPHeaderElement)) {
// silently replace node, as per saaj 1.2 spec
SOAPHeaderElement headerEle = new SOAPHeaderElementImpl((SOAPHeaderBlock)domNode);
((NodeImpl)domNode).setUserData(SAAJ_NODE, headerEle, null);
childElements.add(headerEle);
} else {
childElements.add(saajNode);
}
}
return childElements.iterator();
}
public void detachNode() {
this.detach();
}
public OMNode detach() {
OMNode omNode = omSOAPHeader.detach();
parentElement = null;
return omNode;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?