Author: eglynn
Date: Tue Jul 10 07:19:34 2007
New Revision: 554957
URL: http://svn.apache.org/viewvc?view=rev&rev=554957
Log:
Added mechanism to selectively duplicate WS-A headers.
Modified:
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/AddressingPropertiesImpl.java
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
Modified:
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/AddressingPropertiesImpl.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/AddressingPropertiesImpl.java?view=diff&rev=554957&r1=554956&r2=554957
==============================================================================
---
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/AddressingPropertiesImpl.java
(original)
+++
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/AddressingPropertiesImpl.java
Tue Jul 10 07:19:34 2007
@@ -19,6 +19,8 @@
package org.apache.cxf.ws.addressing;
+import javax.xml.namespace.QName;
+
/**
* Abstraction of Message Addressing Properties.
*/
@@ -31,6 +33,7 @@
private RelatesToType relatesTo;
private AttributedURIType action;
private String namespaceURI;
+ private QName duplicate;
/**
* Constructor, defaults to 2005/08 namespace.
@@ -181,6 +184,14 @@
*/
public void exposeAs(String uri) {
namespaceURI = uri;
+ }
+
+ public void setDuplicate(QName dup) {
+ duplicate = dup;
+ }
+
+ public QName getDuplicate() {
+ return duplicate;
}
public String toString() {
Modified:
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
URL:
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java?view=diff&rev=554957&r1=554956&r2=554957
==============================================================================
---
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
(original)
+++
incubator/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
Tue Jul 10 07:19:34 2007
@@ -154,6 +154,8 @@
VersionTransformer.getExposedJAXBContext(
maps.getNamespaceURI());
Marshaller marshaller = jaxbContext.createMarshaller();
+ QName duplicate =
+ ((AddressingPropertiesImpl)maps).getDuplicate();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
encodeAsExposed(maps.getNamespaceURI(),
maps.getMessageID(),
@@ -161,42 +163,98 @@
AttributedURIType.class,
hdr,
marshaller);
+ if (Names.WSA_MESSAGEID_QNAME.equals(duplicate)) {
+ encodeAsExposed(maps.getNamespaceURI(),
+ maps.getMessageID(),
+ Names.WSA_MESSAGEID_NAME,
+ AttributedURIType.class,
+ hdr,
+ marshaller);
+ }
encodeAsExposed(maps.getNamespaceURI(),
maps.getTo(),
Names.WSA_TO_NAME,
AttributedURIType.class,
hdr,
marshaller);
+ if (Names.WSA_TO_QNAME.equals(duplicate)) {
+ encodeAsExposed(maps.getNamespaceURI(),
+ maps.getTo(),
+ Names.WSA_TO_NAME,
+ AttributedURIType.class,
+ hdr,
+ marshaller);
+ }
encodeAsExposed(maps.getNamespaceURI(),
maps.getFrom(),
Names.WSA_FROM_NAME,
EndpointReferenceType.class,
hdr,
marshaller);
+ if (Names.WSA_FROM_QNAME.equals(duplicate)) {
+ encodeAsExposed(maps.getNamespaceURI(),
+ maps.getFrom(),
+ Names.WSA_FROM_NAME,
+ EndpointReferenceType.class,
+ hdr,
+ marshaller);
+ }
encodeAsExposed(maps.getNamespaceURI(),
maps.getReplyTo(),
Names.WSA_REPLYTO_NAME,
EndpointReferenceType.class,
hdr,
marshaller);
+ if (Names.WSA_REPLYTO_QNAME.equals(duplicate)) {
+ encodeAsExposed(maps.getNamespaceURI(),
+ maps.getReplyTo(),
+ Names.WSA_REPLYTO_NAME,
+ EndpointReferenceType.class,
+ hdr,
+ marshaller);
+ }
encodeAsExposed(maps.getNamespaceURI(),
maps.getFaultTo(),
Names.WSA_FAULTTO_NAME,
EndpointReferenceType.class,
hdr,
marshaller);
+ if (Names.WSA_FAULTTO_QNAME.equals(duplicate)) {
+ encodeAsExposed(maps.getNamespaceURI(),
+ maps.getFaultTo(),
+ Names.WSA_FAULTTO_NAME,
+ EndpointReferenceType.class,
+ hdr,
+ marshaller);
+ }
encodeAsExposed(maps.getNamespaceURI(),
maps.getRelatesTo(),
Names.WSA_RELATESTO_NAME,
RelatesToType.class,
hdr,
marshaller);
+ if (Names.WSA_RELATESTO_QNAME.equals(duplicate)) {
+ encodeAsExposed(maps.getNamespaceURI(),
+ maps.getRelatesTo(),
+ Names.WSA_RELATESTO_NAME,
+ RelatesToType.class,
+ hdr,
+ marshaller);
+ }
encodeAsExposed(maps.getNamespaceURI(),
maps.getAction(),
Names.WSA_ACTION_NAME,
AttributedURIType.class,
hdr,
marshaller);
+ if (Names.WSA_ACTION_QNAME.equals(duplicate)) {
+ encodeAsExposed(maps.getNamespaceURI(),
+ maps.getAction(),
+ Names.WSA_ACTION_NAME,
+ AttributedURIType.class,
+ hdr,
+ marshaller);
+ }
encodeReferenceParameters(maps, hdr, marshaller);
NodeList children = hdr.getChildNodes();
@@ -209,7 +267,7 @@
node);
header.add(holder);
}
-
+ ((AddressingPropertiesImpl)maps).setDuplicate(null);
propogateAction(maps.getAction(), message);
applyMAPValidation(message);