[jbossws-commits] JBossWS SVN: r3567 - branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap.
jbossws-commits at lists.jboss.org
jbossws-commits at lists.jboss.org
Wed Jun 13 10:29:21 EDT 2007
Author: heiko.braun at jboss.com
Date: 2007-06-13 10:29:21 -0400 (Wed, 13 Jun 2007)
New Revision: 3567
Modified:
branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap/SOAPAddressingPropertiesImpl.java
Log:
Implement setMu(boolean)
Modified: branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap/SOAPAddressingPropertiesImpl.java
===================================================================
--- branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap/SOAPAddressingPropertiesImpl.java 2007-06-13 14:28:26 UTC (rev 3566)
+++ branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/extensions/addressing/soap/SOAPAddressingPropertiesImpl.java 2007-06-13 14:29:21 UTC (rev 3567)
@@ -37,10 +37,7 @@
import javax.xml.namespace.QName;
import javax.xml.soap.*;
-import javax.xml.ws.addressing.AddressingConstants;
-import javax.xml.ws.addressing.AddressingException;
-import javax.xml.ws.addressing.ReferenceParameters;
-import javax.xml.ws.addressing.Relationship;
+import javax.xml.ws.addressing.*;
import javax.xml.ws.addressing.soap.SOAPAddressingBuilder;
import javax.xml.ws.addressing.soap.SOAPAddressingProperties;
import java.lang.reflect.Array;
@@ -65,6 +62,8 @@
private NamespaceRegistry nsRegistry = new NamespaceRegistry();
+ private boolean mustunderstand;
+
private String getRequiredHeaderContent(SOAPHeader soapHeader, QName qname)
{
Element element = DOMUtils.getFirstChildElement(soapHeader, qname);
@@ -221,21 +220,20 @@
try
{
SOAPFactoryImpl factory = (SOAPFactoryImpl)SOAPFactory.newInstance();
-
SOAPHeader soapHeader = message.getSOAPHeader();
+ // Assert on REQUIRED elements wsa:Action and wsa:To
if (getAction() == null)
- throw new AddressingException("Required addressing property wsa:Action");
+ throw new AddressingException("Required addressing header missing: " + ADDR.getActionQName());
+ if (getTo() == null)
+ throw new AddressingException("Required addressing header missing: " + ADDR.getToQName());
// Add the xmlns:wsa declaration
soapHeader.addNamespaceDeclaration(ADDR.getNamespacePrefix(), ADDR.getNamespaceURI());
- // Write wsa:To
- if (getTo() != null)
- {
- SOAPElement wsaTo = soapHeader.addChildElement(new NameImpl(ADDR.getToQName()));
- wsaTo.addTextNode(getTo().getURI().toString());
- }
+ // Write REQUIRED wsa:Action and wsa:To
+ appendRequiredHeader(soapHeader, ADDR.getActionQName(), getAction());
+ appendRequiredHeader(soapHeader, ADDR.getToQName(), getTo());
// Write wsa:From
if (getFrom() != null)
@@ -266,13 +264,13 @@
soapElement.removeNamespaceDeclaration(ADDR.getNamespacePrefix());
soapHeader.addChildElement(soapElement);
}
-
- // Write wsa:Action
- SOAPElement wsaAction = soapHeader.addChildElement(new NameImpl(ADDR.getActionQName()));
- wsaAction.addTextNode(getAction().getURI().toString());
-
+
// Write wsa:MessageID
- if (getMessageID() != null)
+ if( (getReplyTo()!=null || getFaultTo()!=null) && null==getMessageID())
+ {
+ throw new AddressingException("Required addressing header missing:" + ADDR.getMessageIDQName());
+ }
+ else if (getMessageID() != null)
{
SOAPElement wsaMessageId = soapHeader.addChildElement(new NameImpl(ADDR.getMessageIDQName()));
wsaMessageId.addTextNode(getMessageID().getURI().toString());
@@ -309,9 +307,23 @@
}
}
+ private void appendRequiredHeader(SOAPHeader soapHeader, QName name, AttributedURI value) throws SOAPException
+ {
+ SOAPElement element = soapHeader.addChildElement(new NameImpl(name));
+ element.addTextNode(value.getURI().toString());
+
+ if(mustunderstand)
+ {
+ // add soap:mustUnderstand=1
+ String envNS = soapHeader.getParentElement().getNamespaceURI();
+ element.addNamespaceDeclaration("soap", envNS);
+ element.addAttribute(new QName(envNS, "mustUnderstand", "soap"), "1");
+ }
+ }
+
public void setMu(boolean mu)
{
- throw new NotImplementedException();
+ this.mustunderstand = mu;
}
private void appendAttributes(SOAPElement soapElement, Map<QName, String> attributes)
More information about the jbossws-commits
mailing list