34 lines
1.2 KiB
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());
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|