public Iterator getFaultSubcodes() { if (Constants.NS_SOAP11_ENV.equals(getNamespaceURI())) throw new UnsupportedOperationException(BundleUtils.getMessage(bundle, "NOT_SUPPORT_SUBCODE")); ArrayList<QName> subcodes = new ArrayList<QName>(); SOAPElement baseCodeElement = faultcode; SOAPElement subcodeElement; for (subcodeElement = getChildSubcodeElement(baseCodeElement); subcodeElement != null; subcodeElement = getChildSubcodeElement(baseCodeElement)) { SOAPElement valueElement = getChildValueElement(subcodeElement); QName subcode = QNameBuilder.buildQName(valueElement, valueElement.getValue()); subcodes.add(subcode); baseCodeElement = subcodeElement; } // this iterator should not support the remove method return Collections.unmodifiableList(subcodes).iterator(); }
public void removeAllFaultSubcodes() { if (Constants.NS_SOAP11_ENV.equals(getNamespaceURI())) throw new UnsupportedOperationException(BundleUtils.getMessage(bundle, "NOT_SUPPORT_SUBCODE")); if (faultcode == null) findFaultCodeElement(); SOAPElement subcodeElement = getChildSubcodeElement(faultcode); if (subcodeElement != null) subcodeElement.detachNode(); }
public void appendFaultSubcode(QName subcode) throws SOAPException { if (Constants.NS_SOAP11_ENV.equals(getNamespaceURI())) throw new UnsupportedOperationException(BundleUtils.getMessage(bundle, "NOT_SUPPORT_SUBCODE")); String nsURI = subcode.getNamespaceURI(); if (nsURI.length() == 0) throw new SOAPException(BundleUtils.getMessage(bundle, "SUBCODE_MUST_BE_NAMESPACE_QUALIFIED", subcode)); if (faultcode == null) findCodeElement(); // find innermost subcode element SOAPElement baseCodeElement = faultcode; for (SOAPElement subcodeElement = getChildSubcodeElement(baseCodeElement); subcodeElement != null; subcodeElement = getChildSubcodeElement(baseCodeElement)) baseCodeElement = subcodeElement; SOAPElement subcodeElement = baseCodeElement.addChildElement("Subcode", baseCodeElement.getPrefix(), baseCodeElement.getNamespaceURI()); SOAPElement valueElement = addChildValueElement(subcodeElement); setCode(valueElement, subcode); }