common-gcore-stubs/src/main/java/org/gcube/common/clients/stubs/jaxws/handlers/LegacyWSAddressingHandler.java

34 lines
1.2 KiB
Java

package org.gcube.common.clients.stubs.jaxws.handlers;
import java.util.Iterator;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.ws.handler.soap.SOAPMessageContext;
import org.gcube.common.clients.stubs.jaxws.GCoreService;
/**
* A {@link CallHandler} that transforms WS-Addressing information in outgoing calls into MemberSubmission form.
* @author Fabio Simeoni
*
*/
public class LegacyWSAddressingHandler extends AbstractHandler {
//helper: adapts ws-addressing headers to member submission's. brutal but there is no support for member submission in
//jdk 1.6
@Override
public void handleRequest(GCoreService<?> target, SOAPHeader header, SOAPMessageContext context) throws Exception {
Iterator<?> it = header.examineAllHeaderElements();
while (it.hasNext()) {
SOAPHeaderElement e = (SOAPHeaderElement) it.next();
if (e.getElementQName().getNamespaceURI().equals("http://www.w3.org/2005/08/addressing")) {
e.detachNode();
addHeader(header,new QName("http://schemas.xmlsoap.org/ws/2004/03/addressing",e.getElementQName().getLocalPart()), e.getTextContent());
}
}
}
}