diff options
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/scheme/SOAPUtils.java')
-rw-r--r-- | src/main/java/at/gv/egiz/moazs/scheme/SOAPUtils.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/scheme/SOAPUtils.java b/src/main/java/at/gv/egiz/moazs/scheme/SOAPUtils.java new file mode 100644 index 0000000..2d4df4b --- /dev/null +++ b/src/main/java/at/gv/egiz/moazs/scheme/SOAPUtils.java @@ -0,0 +1,44 @@ +package at.gv.egiz.moazs.scheme; + +import at.gv.egiz.moazs.MoaZSException; +import at.gv.util.DOMUtils; +import org.apache.cxf.binding.soap.Soap11; +import org.springframework.stereotype.Component; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +@Component +public class SOAPUtils { + + public Element toDOM(byte[] bytes) throws IOException, SAXException, ParserConfigurationException { + var stream = new ByteArrayInputStream(bytes); + return DOMUtils.parseXmlNonValidating(stream); + } + + public byte[] unwrapSoapEnvelope(Element document) { + try { + var body = document.getElementsByTagNameNS(Soap11.SOAP_NAMESPACE, "Body"); + var item = body.item(0).getFirstChild(); + + return DOMUtils.serializeNode(item, true) + .getBytes(StandardCharsets.UTF_8); + + } catch (IOException | TransformerException e) { + throw new MoaZSException("Error while parsing message. ", e); + } + } + + public String getAppDeliveryIDFrom(Element document) { + var elements = document.getElementsByTagNameNS(NameSpace.MSG, "AppDeliveryID"); + + var appDeliveryIdElement = elements.item(0).getFirstChild(); + + return appDeliveryIdElement.getNodeValue(); + } +} |