You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ms...@apache.org on 2007/04/09 22:05:18 UTC
svn commit: r526902 -
/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java
Author: mszefler
Date: Mon Apr 9 13:05:17 2007
New Revision: 526902
URL: http://svn.apache.org/viewvc?view=rev&rev=526902
Log:
Foreign header mapping extension.
Modified:
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java
Modified: incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java?view=diff&rev=526902&r1=526901&r2=526902
==============================================================================
--- incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java (original)
+++ incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/util/SoapMessageConverter.java Mon Apr 9 13:05:17 2007
@@ -70,8 +70,11 @@
private static final Log __log = LogFactory.getLog(SoapMessageConverter.class);
- /** Namespace (in the ODE <message>) for parts that are in the header but not in the payload message. */
- private static final String FOREIGN_HEADER_PART_NS = "urn:ode.apache.org/axis2-il/header";
+ /** Namespace (in the ODE <message>) for received parts that are in the header but not in the payload. */
+ private static final QName FOREIGN_HEADER_IN = new QName("urn:ode.apache.org/axis2-il/headers/","in");
+
+ /** Namespace (in the ODE <message>) for headers that should be sent but are not in the payload. */
+ private static final QName FOREIGN_HEADER_OUT = new QName("urn:ode.apache.org/axis2-il/headers/","out");
SOAPFactory _soapFactory;
@@ -202,8 +205,16 @@
if (payloadMessageHeader && msgdef.getPart(headerdef.getPart()) == null)
throw new OdeFault(__msgs.msgSoapHeaderReferencesUnkownPart(headerdef.getPart()));
- Element srcPartEl = DOMUtils.findChildByName(message, new QName(payloadMessageHeader
- ? null : FOREIGN_HEADER_PART_NS, headerdef.getPart()));
+ Element srcPartEl = null;
+ if (payloadMessageHeader)
+ srcPartEl = DOMUtils.findChildByName(message, new QName(null, headerdef.getPart()));
+ else {
+ Element fho = DOMUtils.findChildByName(message, FOREIGN_HEADER_OUT);
+ if (fho != null) {
+ srcPartEl = DOMUtils.findChildByName(fho, headerdef.getElementType());
+ }
+ }
+
// We don't complain about missing header data unless they are part of the message payload. This is
// because AXIS may be providing these headers.
@@ -380,12 +391,26 @@
if (headerEl == null)
return;
- Element destPart = odeMessage.getOwnerDocument().createElementNS(
- payloadMessageHeader ? null : FOREIGN_HEADER_PART_NS, headerdef.getPart());
- odeMessage.appendChild(destPart);
+
+ Element destPart = getForeignIn(odeMessage);
destPart.appendChild(odeMessage.getOwnerDocument().importNode(OMUtils.toDOM(headerEl), true));
}
+
+ /**
+ * Get the "FOREIGN_IN" message extension if it exists, otherwise create it.
+ * @param odeMessage
+ * @return the FOREING_IN extension element.
+ */
+ private Element getForeignIn(Element odeMessage) {
+ Element fi = DOMUtils.findChildByName(odeMessage, FOREIGN_HEADER_IN);
+ if (fi == null) {
+ fi = odeMessage.getOwnerDocument().createElementNS(FOREIGN_HEADER_IN.getNamespaceURI(),FOREIGN_HEADER_IN.getLocalPart());
+ odeMessage.appendChild(fi);
+ }
+ return fi;
+ }
+
public static SOAPBody getSOAPBody(ElementExtensible ee) {
return getFirstExtensibilityElement(ee, SOAPBody.class);