Java tutorial
/** * The MIT License * Copyright (c) 2016, Population Register Centre (VRK) * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package fi.vrk.xroad.catalog.lister; import org.springframework.ws.WebServiceMessage; import org.springframework.ws.context.MessageContext; import org.springframework.ws.server.EndpointInterceptor; import org.springframework.ws.soap.saaj.SaajSoapMessage; import org.w3c.dom.CDATASection; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import javax.xml.namespace.QName; import javax.xml.soap.*; import java.util.Iterator; /** * Changes wsdl element to CDATASection */ public class WsdlCdataInterceptor implements EndpointInterceptor { @Override public boolean handleRequest(MessageContext messageContext, Object o) throws Exception { return true; } @Override public boolean handleResponse(MessageContext messageContext, Object o) throws Exception { WebServiceMessage response = messageContext.getResponse(); SaajSoapMessage saajSoapMessage = (SaajSoapMessage) response; SOAPMessage soapMessage = saajSoapMessage.getSaajMessage(); SOAPPart soapPart = soapMessage.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); SOAPBody body = envelope.getBody(); Iterator responses = body .getChildElements(new QName("http://xroad.vrk.fi/xroad-catalog-lister", "GetWsdlResponse")); while (responses.hasNext()) { Node wsdlResponse = (Node) responses.next(); NodeList children = wsdlResponse.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node child = children.item(i); if (child.getLocalName().equals("wsdl")) { CDATASection cdat = soapPart.createCDATASection(child.getFirstChild().getNodeValue()); child.removeChild(child.getFirstChild()); child.appendChild(cdat); } } } return true; } @Override public boolean handleFault(MessageContext messageContext, Object o) throws Exception { return true; } @Override public void afterCompletion(MessageContext messageContext, Object o, Exception e) throws Exception { } }