Author: richard.opalka(a)jboss.com
Date: 2007-09-11 09:11:53 -0400 (Tue, 11 Sep 2007)
New Revision: 4548
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceAcknowledgementSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java
Log:
adding SequenceAcknowledgement de/serializer + refactoring + source code documentation
improved
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -21,6 +21,7 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.stringToLong;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
@@ -63,29 +64,24 @@
SOAPHeader soapHeader = soapMessage.getSOAPPart().getEnvelope().getHeader();
Constants wsrmConstants = provider.getConstants();
- // read wsrm:AckRequested
+ // read required wsrm:AckRequested element
QName ackRequestedQName = wsrmConstants.getAckRequestedQName();
SOAPElement ackRequestedElement = getRequiredElement(soapHeader,
ackRequestedQName, "soap header");
- // read wsrm:Identifier
+ // read required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
SOAPElement identifierElement = getRequiredElement(ackRequestedElement,
identifierQName, ackRequestedQName);
String identifier = getRequiredTextContent(identifierElement, identifierQName);
object.setIdentifier(identifier);
- // read wsrm:MessageNumber
+ // read optional wsrm:MessageNumber element
QName messageNumberQName = wsrmConstants.getMessageNumberQName();
SOAPElement messageNumberElement = getOptionalElement(ackRequestedElement,
messageNumberQName, ackRequestedQName);
if (messageNumberElement != null)
{
- try
- {
- long messageNumber =
Long.valueOf(getRequiredTextContent(messageNumberElement, messageNumberQName));
- object.setMessageNumber(messageNumber);
- } catch (NumberFormatException nfe)
- {
- throw new ReliableMessagingException("Unable to parse MessageNumber
element text content", nfe);
- }
+ String messageNumberString = getRequiredTextContent(messageNumberElement,
messageNumberQName);
+ long messageNumberValue = stringToLong(messageNumberString, "Unable to
parse MessageNumber element text content");
+ object.setMessageNumber(messageNumberValue);
}
}
catch (SOAPException se)
@@ -111,17 +107,17 @@
// Add xmlns:wsrm declaration
soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(),
wsrmConstants.getNamespaceURI());
- // write wsrm:AckRequested
+ // write required wsrm:AckRequested element
QName ackRequestedQName = wsrmConstants.getAckRequestedQName();
SOAPElement ackRequestedElement =
soapEnvelope.getHeader().addChildElement(ackRequestedQName);
- // write wsrm:Identifier
+ // write required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
ackRequestedElement.addChildElement(identifierQName).setValue(object.getIdentifier());
if (object.getMessageNumber() != 0)
{
- // write wsrm:MessageNumber
+ // write optional wsrm:MessageNumber element
QName messageNumberQName = wsrmConstants.getMessageNumberQName();
SOAPElement messageNumberElement =
ackRequestedElement.addChildElement(messageNumberQName);
messageNumberElement.setValue(String.valueOf(object.getMessageNumber()));
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -62,11 +62,11 @@
SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
Constants wsrmConstants = provider.getConstants();
- // read wsrm:CloseSequenceResponse
+ // read required wsrm:CloseSequenceResponse element
QName closeSequenceResponseQName =
wsrmConstants.getCloseSequenceResponseQName();
SOAPElement closeSequenceResponseElement = getRequiredElement(soapBody,
closeSequenceResponseQName, "soap body");
- // read wsrm:Identifier
+ // read required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
SOAPElement identifierElement = getRequiredElement(closeSequenceResponseElement,
identifierQName, closeSequenceResponseQName);
String identifier = getRequiredTextContent(identifierElement, identifierQName);
@@ -95,11 +95,11 @@
// Add xmlns:wsrm declaration
soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(),
wsrmConstants.getNamespaceURI());
- // write wsrm:CloseSequenceResponse
+ // write required wsrm:CloseSequenceResponse element
QName closeSequenceResponseQName =
wsrmConstants.getCloseSequenceResponseQName();
SOAPElement closeSequenceResponseElement =
soapEnvelope.getBody().addChildElement(closeSequenceResponseQName);
- // write wsrm:Identifier
+ // write required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
closeSequenceResponseElement.addChildElement(identifierQName).setValue(object.getIdentifier());
}
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -21,6 +21,7 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.stringToLong;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
@@ -63,29 +64,24 @@
SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
Constants wsrmConstants = provider.getConstants();
- // read wsrm:CloseSequence
+ // read required wsrm:CloseSequence element
QName closeSequenceQName = wsrmConstants.getCloseSequenceQName();
SOAPElement closeSequenceElement = getRequiredElement(soapBody,
closeSequenceQName, "soap body");
- // read wsrm:Identifier
+ // read required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
SOAPElement identifierElement = getRequiredElement(closeSequenceElement,
identifierQName, closeSequenceQName);
String identifier = getRequiredTextContent(identifierElement, identifierQName);
object.setIdentifier(identifier);
- // read wsrm:LastMsgNumber
+ // read optional wsrm:LastMsgNumber element
QName lastMsgNumberQName = wsrmConstants.getLastMsgNumberQName();
SOAPElement lastMsgNumberElement = getOptionalElement(closeSequenceElement,
lastMsgNumberQName, closeSequenceQName);
if (lastMsgNumberElement != null)
{
- try
- {
- long lastMsgNumber =
Long.valueOf(getRequiredTextContent(lastMsgNumberElement, lastMsgNumberQName));
- object.setLastMsgNumber(lastMsgNumber);
- } catch (NumberFormatException nfe)
- {
- throw new ReliableMessagingException("Unable to parse LastMsgNumber
element text content", nfe);
- }
+ String lastMsgNumberString = getRequiredTextContent(lastMsgNumberElement,
lastMsgNumberQName);
+ long lastMsgNumberValue = stringToLong(lastMsgNumberString, "Unable to
parse LastMsgNumber element text content");
+ object.setLastMsgNumber(lastMsgNumberValue);
}
}
catch (SOAPException se)
@@ -111,17 +107,17 @@
// Add xmlns:wsrm declaration
soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(),
wsrmConstants.getNamespaceURI());
- // write wsrm:CloseSequence
+ // write required wsrm:CloseSequence element
QName closeSequenceQName = wsrmConstants.getCloseSequenceQName();
SOAPElement closeSequenceElement =
soapEnvelope.getBody().addChildElement(closeSequenceQName);
- // write wsrm:Identifier
+ // write required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
closeSequenceElement.addChildElement(identifierQName).setValue(object.getIdentifier());
if (object.getLastMsgNumber() != 0)
{
- // write wsrm:LastMsgNumber
+ // write optional wsrm:LastMsgNumber element
QName lastMsgNumberQName = wsrmConstants.getLastMsgNumberQName();
SOAPElement lastMsgNumberElement =
closeSequenceElement.addChildElement(lastMsgNumberQName);
lastMsgNumberElement.setValue(String.valueOf(object.getLastMsgNumber()));
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -69,17 +69,17 @@
SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
Constants wsrmConstants = provider.getConstants();
- // read wsrm:CreateSequenceResponse
+ // read required wsrm:CreateSequenceResponse element
QName createSequenceResponseQName =
wsrmConstants.getCreateSequenceResponseQName();
SOAPElement createSequenceResponseElement = getRequiredElement(soapBody,
createSequenceResponseQName, "soap body");
- // read wsrm:identifier
+ // read required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
SOAPElement identifierElement =
getRequiredElement(createSequenceResponseElement, identifierQName,
createSequenceResponseQName);
String identifier = getRequiredTextContent(identifierElement, identifierQName);
object.setIdentifier(identifier);
- // read wsrm:Expires
+ // read optional wsrm:Expires element
QName expiresQName = wsrmConstants.getExpiresQName();
SOAPElement expiresElement = getOptionalElement(createSequenceResponseElement,
expiresQName, createSequenceResponseQName);
if (expiresElement != null)
@@ -88,7 +88,7 @@
object.setExpires(duration);
}
- // read wsrm:IncompleteSequenceBehavior
+ // read optional wsrm:IncompleteSequenceBehavior element
QName behaviorQName = wsrmConstants.getIncompleteSequenceBehaviorQName();
SOAPElement behaviorElement = getOptionalElement(createSequenceResponseElement,
behaviorQName, createSequenceResponseQName);
if (behaviorElement != null)
@@ -97,14 +97,14 @@
object.setIncompleteSequenceBehavior(IncompleteSequenceBehavior.getValue(behaviorString));
}
- // read wsrm:Accept
+ // read optional wsrm:Accept element
QName acceptQName = wsrmConstants.getAcceptQName();
SOAPElement acceptElement = getOptionalElement(createSequenceResponseElement,
acceptQName, createSequenceResponseQName);
if (acceptElement != null)
{
CreateSequenceResponse.Accept accept = object.newAccept();
- // read wsrm:AcksTo
+ // read required wsrm:AcksTo element
QName acksToQName = wsrmConstants.getAcksToQName();
SOAPElement acksToElement = getRequiredElement(acceptElement, acksToQName,
acceptQName);
QName addressQName = ADDRESSING_CONSTANTS.getAddressQName();
@@ -112,6 +112,7 @@
String acksToAddress = getRequiredTextContent(acksToAddressElement,
addressQName);
accept.setAcksTo(acksToAddress);
+ // set created accept
object.setAccept(accept);
}
}
@@ -138,24 +139,24 @@
// Add xmlns:wsrm declaration
soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(),
wsrmConstants.getNamespaceURI());
- // write wsrm:CreateSequenceResponse
+ // write required wsrm:CreateSequenceResponse element
QName createSequenceResponseQName =
wsrmConstants.getCreateSequenceResponseQName();
SOAPElement createSequenceResponseElement =
soapEnvelope.getBody().addChildElement(createSequenceResponseQName);
- // write wsrm:Identifier
+ // write required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
createSequenceResponseElement.addChildElement(identifierQName).setValue(object.getIdentifier());
if (object.getExpires() != null)
{
- // write wsrm:Expires
+ // write optional wsrm:Expires element
QName expiresQName = wsrmConstants.getExpiresQName();
createSequenceResponseElement.addChildElement(expiresQName).setValue(object.getExpires());
}
if (object.getIncompleteSequenceBehavior() != null)
{
- // write wsrm:IncompleteSequenceBehavior
+ // write optional wsrm:IncompleteSequenceBehavior element
IncompleteSequenceBehavior behavior =
object.getIncompleteSequenceBehavior();
QName behaviorQName = wsrmConstants.getIncompleteSequenceBehaviorQName();
SOAPElement behaviorElement =
createSequenceResponseElement.addChildElement(behaviorQName);
@@ -164,11 +165,11 @@
if (object.getAccept() != null)
{
- // write wsrm:Accept
+ // write optional wsrm:Accept element
QName acceptQName = wsrmConstants.getAcceptQName();
SOAPElement acceptElement =
createSequenceResponseElement.addChildElement(acceptQName);
- // write wsrm:AcksTo
+ // write required wsrm:AcksTo element
QName acksToQName = wsrmConstants.getAcksToQName();
QName addressQName = ADDRESSING_CONSTANTS.getAddressQName();
acceptElement.addChildElement(acksToQName)
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -69,11 +69,11 @@
SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
Constants wsrmConstants = provider.getConstants();
- // read wsrm:CreateSequence
+ // read required wsrm:CreateSequence element
QName createSequenceQName = wsrmConstants.getCreateSequenceQName();
SOAPElement createSequenceElement = getRequiredElement(soapBody,
createSequenceQName, "soap body");
- // read wsrm:AcksTo
+ // read required wsrm:AcksTo element
QName acksToQName = wsrmConstants.getAcksToQName();
SOAPElement acksToElement = getRequiredElement(createSequenceElement,
acksToQName, createSequenceQName);
QName addressQName = ADDRESSING_CONSTANTS.getAddressQName();
@@ -81,7 +81,7 @@
String acksToAddress = getRequiredTextContent(acksToAddressElement,
addressQName);
object.setAcksTo(acksToAddress);
- // read wsrm:Expires
+ // read optional wsrm:Expires element
QName expiresQName = wsrmConstants.getExpiresQName();
SOAPElement expiresElement = getOptionalElement(createSequenceElement,
expiresQName, createSequenceQName);
if (expiresElement != null)
@@ -90,20 +90,20 @@
object.setExpires(duration);
}
- // read wsrm:Offer
+ // read optional wsrm:Offer element
QName offerQName = wsrmConstants.getOfferQName();
SOAPElement offerElement = getOptionalElement(createSequenceElement, offerQName,
createSequenceQName);
if (offerElement != null)
{
CreateSequence.Offer offer = object.newOffer();
- // read wsrm:Identifier
+ // read required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
SOAPElement identifierElement = getRequiredElement(offerElement,
identifierQName, offerQName);
String identifier = getRequiredTextContent(identifierElement,
identifierQName);
offer.setIdentifier(identifier);
- // read wsrm:Endpoint
+ // read optional wsrm:Endpoint element
QName endpointQName = wsrmConstants.getEndpointQName();
SOAPElement endpointElement = getOptionalElement(offerElement, endpointQName,
offerQName);
if (endpointElement != null)
@@ -113,7 +113,7 @@
offer.setEndpoint(endpointAddress);
}
- // read wsrm:Expires
+ // read optional wsrm:Expires element
SOAPElement offerExpiresElement = getOptionalElement(offerElement,
expiresQName, offerQName);
if (offerExpiresElement != null)
{
@@ -121,7 +121,7 @@
offer.setExpires(duration);
}
- // read wsrm:IncompleteSequenceBehavior
+ // read optional wsrm:IncompleteSequenceBehavior element
QName behaviorQName = wsrmConstants.getIncompleteSequenceBehaviorQName();
SOAPElement behaviorElement = getOptionalElement(offerElement, behaviorQName,
offerQName);
if (behaviorElement != null)
@@ -157,11 +157,11 @@
// Add xmlns:wsrm declaration
soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(),
wsrmConstants.getNamespaceURI());
- // write wsrm:CreateSequence
+ // write required wsrm:CreateSequence element
QName createSequenceQName = wsrmConstants.getCreateSequenceQName();
SOAPElement createSequenceElement =
soapEnvelope.getBody().addChildElement(createSequenceQName);
- // write wsrm:AcksTo
+ // write required wsrm:AcksTo element
QName acksToQName = wsrmConstants.getAcksToQName();
QName addressQName = ADDRESSING_CONSTANTS.getAddressQName();
createSequenceElement.addChildElement(acksToQName)
@@ -170,7 +170,7 @@
if (object.getExpires() != null)
{
- // write wsrm:Expires
+ // write optional wsrm:Expires element
QName expiresQName = wsrmConstants.getExpiresQName();
createSequenceElement.addChildElement(expiresQName).setValue(object.getExpires());
}
@@ -179,17 +179,17 @@
{
CreateSequence.Offer offer = object.getOffer();
- // write wsrm:Offer
+ // write optional wsrm:Offer element
QName offerQName = wsrmConstants.getOfferQName();
SOAPElement offerElement =
createSequenceElement.addChildElement(offerQName);
- // write wsrm:Identifier
+ // write required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
offerElement.addChildElement(identifierQName).setValue(offer.getIdentifier());
if (offer.getEndpoint() != null)
{
- // write wsrm:Endpoint
+ // write optional wsrm:Endpoint element
QName endpointQName = wsrmConstants.getEndpointQName();
offerElement.addChildElement(endpointQName)
.addChildElement(addressQName)
@@ -198,14 +198,14 @@
if (offer.getExpires() != null)
{
- // write wsrm:Expires
+ // write optional wsrm:Expires element
QName expiresQName = wsrmConstants.getExpiresQName();
offerElement.addChildElement(expiresQName).setValue(offer.getExpires());
}
if (offer.getIncompleteSequenceBehavior() != null)
{
- // write wsrm:IncompleteSequenceBehavior
+ // write optional wsrm:IncompleteSequenceBehavior element
IncompleteSequenceBehavior behavior =
offer.getIncompleteSequenceBehavior();
QName behaviorQName = wsrmConstants.getIncompleteSequenceBehaviorQName();
SOAPElement behaviorElement =
offerElement.addChildElement(behaviorQName);
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceAcknowledgementSerializer.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceAcknowledgementSerializer.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceAcknowledgementSerializer.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -21,13 +21,26 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.stringToLong;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElements;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.ws.extensions.wsrm.spi.Constants;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.SequenceAcknowledgement;
+import java.util.List;
+
/**
* <b>SequenceAcknowledgement</b> object de/serializer
* @author richard.opalka(a)jboss.com
@@ -49,7 +62,75 @@
public static void deserialize(SequenceAcknowledgement object, Provider provider,
SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPHeader soapHeader = soapMessage.getSOAPPart().getEnvelope().getHeader();
+ Constants wsrmConstants = provider.getConstants();
+
+ // read required wsrm:SequenceAcknowledgement element
+ QName sequenceAckQName = wsrmConstants.getSequenceAcknowledgementQName();
+ SOAPElement sequenceAckElement = getRequiredElement(soapHeader,
sequenceAckQName, "soap header");
+
+ // read required wsrm:Identifier element
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ SOAPElement identifierElement = getRequiredElement(sequenceAckElement,
identifierQName, sequenceAckQName);
+ String identifier = getRequiredTextContent(identifierElement, identifierQName);
+ object.setIdentifier(identifier);
+
+ // read optional wsrm:Final element
+ QName finalQName = wsrmConstants.getFinalQName();
+ SOAPElement finalElement = getOptionalElement(sequenceAckElement, finalQName,
sequenceAckQName);
+ if (finalElement != null)
+ {
+ object.setFinal();
+ }
+
+ // read optional wsrm:None element
+ QName noneQName = wsrmConstants.getNoneQName();
+ SOAPElement noneElement = getOptionalElement(sequenceAckElement, noneQName,
sequenceAckQName);
+ if (noneElement != null)
+ {
+ object.setNone();
+ }
+
+ // read optional wsrm:Nack elements
+ QName nackQName = wsrmConstants.getNackQName();
+ List<SOAPElement> nackElements = getOptionalElements(sequenceAckElement,
nackQName, sequenceAckQName);
+ for (SOAPElement nackElement : nackElements)
+ {
+ String messageId = getRequiredTextContent(nackElement, nackQName);
+ object.addNack(stringToLong(messageId, "Unable to parse Nack element
text content"));
+ }
+
+ // read optional wsrm:AcknowledgementRange elements
+ QName ackRangeQName = wsrmConstants.getAcknowledgementRangeQName();
+ List<SOAPElement> ackRangeElements =
getOptionalElements(sequenceAckElement, ackRangeQName, sequenceAckQName);
+ if (ackRangeElements.size() != 0)
+ {
+ QName upperQName = wsrmConstants.getUpperQName();
+ QName lowerQName = wsrmConstants.getLowerQName();
+
+ for (SOAPElement ackRangeElement : ackRangeElements)
+ {
+ SequenceAcknowledgement.AcknowledgementRange ackRange =
object.newAcknowledgementRange();
+
+ // read required wsrm:Upper attribute
+ String upper = getRequiredTextContent(ackRangeElement, upperQName,
ackRangeQName);
+ ackRange.setUpper(stringToLong(upper, "Unable to parse Upper
attribute text content"));
+
+ // read required wsrm:Lower attribute
+ String lower = getRequiredTextContent(ackRangeElement, lowerQName,
ackRangeQName);
+ ackRange.setLower(stringToLong(lower, "Unable to parse Lower
attribute text content"));
+
+ // set created acknowledgement range
+ object.addAcknowledgementRange(ackRange);
+ }
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to deserialize RM
message", se);
+ }
}
/**
@@ -61,7 +142,70 @@
public static void serialize(SequenceAcknowledgement object, Provider provider,
SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ Constants wsrmConstants = provider.getConstants();
+
+ // Add xmlns:wsrm declaration
+ soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(),
wsrmConstants.getNamespaceURI());
+
+ // write required wsrm:SequenceAcknowledgement element
+ QName sequenceAckQName = wsrmConstants.getSequenceAcknowledgementQName();
+ SOAPElement sequenceAckElement =
soapEnvelope.getHeader().addChildElement(sequenceAckQName);
+
+ // write required wsrm:Identifier element
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+
sequenceAckElement.addChildElement(identifierQName).setValue(object.getIdentifier());
+
+ if (object.isFinal())
+ {
+ // write optional wsrm:Final element
+ QName finalQName = wsrmConstants.getFinalQName();
+ sequenceAckElement.addChildElement(finalQName);
+ }
+
+ if (object.isNone())
+ {
+ // write optional wsrm:None element
+ QName noneQName = wsrmConstants.getNoneQName();
+ sequenceAckElement.addChildElement(noneQName);
+ }
+
+ List<Long> nacks = object.getNacks();
+ if (nacks.size() != 0)
+ {
+ QName nackQName = wsrmConstants.getNackQName();
+
+ // write optional wsrm:Nack elements
+ for (Long messageId : nacks)
+ {
+
sequenceAckElement.addChildElement(nackQName).setValue(String.valueOf(messageId));
+ }
+ }
+
+ List<SequenceAcknowledgement.AcknowledgementRange> ackRanges =
object.getAcknowledgementRanges();
+ if (ackRanges.size() != 0)
+ {
+ QName acknowledgementRangeQName =
wsrmConstants.getAcknowledgementRangeQName();
+ QName upperQName = wsrmConstants.getUpperQName();
+ QName lowerQName = wsrmConstants.getLowerQName();
+
+ // write optional wsrm:AcknowledgementRange elements
+ for (SequenceAcknowledgement.AcknowledgementRange ackRange : ackRanges)
+ {
+ SOAPElement acknowledgementRangeElement =
sequenceAckElement.addChildElement(acknowledgementRangeQName);
+ // write required wsrm:Lower attribute
+ acknowledgementRangeElement.addAttribute(lowerQName,
String.valueOf(ackRange.getLower()));
+ // write required wsrm:Upper attribute
+ acknowledgementRangeElement.addAttribute(upperQName,
String.valueOf(ackRange.getUpper()));
+ }
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to serialize RM message",
se);
+ }
}
}
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -21,6 +21,7 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.stringToLong;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
@@ -63,29 +64,24 @@
SOAPHeader soapHeader = soapMessage.getSOAPPart().getEnvelope().getHeader();
Constants wsrmConstants = provider.getConstants();
- // read wsrm:Sequence
+ // read required wsrm:Sequence element
QName sequenceQName = wsrmConstants.getSequenceQName();
SOAPElement sequenceElement = getRequiredElement(soapHeader, sequenceQName,
"soap header");
- // read wsrm:Identifier
+ // read required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
SOAPElement identifierElement = getRequiredElement(sequenceElement,
identifierQName, sequenceQName);
String identifier = getRequiredTextContent(identifierElement, identifierQName);
object.setIdentifier(identifier);
- // read wsrm:MessageNumber
+ // read required wsrm:MessageNumber element
QName messageNumberQName = wsrmConstants.getMessageNumberQName();
SOAPElement messageNumberElement = getRequiredElement(sequenceElement,
messageNumberQName, sequenceQName);
- try
- {
- long messageNumber =
Long.valueOf(getRequiredTextContent(messageNumberElement, messageNumberQName));
- object.setMessageNumber(messageNumber);
- } catch (NumberFormatException nfe)
- {
- throw new ReliableMessagingException("Unable to parse MessageNumber
element text content", nfe);
- }
+ String messageNumberString = getRequiredTextContent(messageNumberElement,
messageNumberQName);
+ long messageNumberValue = stringToLong(messageNumberString, "Unable to
parse MessageNumber element text content");
+ object.setMessageNumber(messageNumberValue);
- // read wsrm:LastMessage
+ // read optional wsrm:LastMessage element
QName lastMessageQName = wsrmConstants.getLastMessageQName();
SOAPElement lastMessageElement = getOptionalElement(sequenceElement,
lastMessageQName, sequenceQName);
if (lastMessageElement != null)
@@ -116,22 +112,22 @@
// Add xmlns:wsrm declaration
soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(),
wsrmConstants.getNamespaceURI());
- // write wsrm:Sequence
+ // write required wsrm:Sequence element
QName sequenceQName = wsrmConstants.getSequenceQName();
SOAPElement sequenceElement =
soapEnvelope.getHeader().addChildElement(sequenceQName);
- // write wsrm:Identifier
+ // write required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
sequenceElement.addChildElement(identifierQName).setValue(object.getIdentifier());
- // write wsrm:MessageNumber
+ // write required wsrm:MessageNumber element
QName messageNumberQName = wsrmConstants.getMessageNumberQName();
SOAPElement messageNumberElement =
sequenceElement.addChildElement(messageNumberQName);
messageNumberElement.setValue(String.valueOf(object.getMessageNumber()));
if (object.isLastMessage())
{
- // write wsrm:LastMessage
+ // write optional wsrm:LastMessage element
QName lastMessageQName = wsrmConstants.getLastMessageQName();
sequenceElement.addChildElement(lastMessageQName);
}
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -21,6 +21,10 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
+
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import javax.xml.namespace.QName;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
@@ -40,11 +44,11 @@
// no instances
}
- public static String getRequiredTextContent(SOAPElement element, QName nodeName)
+ public static String getRequiredTextContent(SOAPElement element, QName elementQName)
{
if (!DOMUtils.hasTextChildNodesOnly(element))
throw new ReliableMessagingException(
- "Only text content is allowed for element " +
nodeName.getLocalPart());
+ "Only text content is allowed for element " +
elementQName.getLocalPart());
return DOMUtils.getTextContent(element).trim();
}
@@ -87,11 +91,55 @@
return getOptionalElementFromList(list, optionalQName, contextQName);
}
- public static SOAPElement getOptionalElement(SOAPElement element, QName optionalQName,
QName contextQName)
+ public static String getRequiredTextContent(SOAPElement element, QName attributeQName,
QName elementQName)
{
- return (SOAPElement)getOptionalElement((Element)element, optionalQName,
contextQName);
+ String attributeValue = element.getAttributeValue(attributeQName);
+
+ if (attributeValue == null)
+ throw new ReliableMessagingException(
+ "Required attribute " + attributeQName.getLocalPart() + " is
missing in element " + elementQName.getLocalPart());
+
+ return attributeValue;
}
+ public static SOAPElement getOptionalElement(SOAPElement contextElement, QName
optionalQName, QName contextQName)
+ {
+ return (SOAPElement)getOptionalElement((Element)contextElement, optionalQName,
contextQName);
+ }
+
+ public static List<SOAPElement> getOptionalElements(SOAPElement contextElement,
QName optionalQName, QName contextQName)
+ {
+ // TODO: optimize this method - do not create new list
+ List<Element> temp = DOMUtils.getChildElementsAsList(contextElement,
optionalQName);
+ if (temp.size() == 0)
+ {
+ return Collections.emptyList();
+ }
+ else
+ {
+ List<SOAPElement> retVal = new ArrayList<SOAPElement>();
+
+ for (Element e : temp)
+ {
+ retVal.add((SOAPElement)e);
+ }
+
+ return retVal;
+ }
+ }
+
+ public static long stringToLong(String toEvaluate, String errorMessage) throws
ReliableMessagingException
+ {
+ try
+ {
+ return Long.valueOf(toEvaluate);
+ }
+ catch (NumberFormatException nfe)
+ {
+ throw new ReliableMessagingException(errorMessage, nfe);
+ }
+ }
+
private static Element getOptionalElementFromList(List<Element> list, QName
requiredQName, QName contextQName)
{
return getOptionalElementFromList(list, requiredQName.getLocalPart(),
contextQName.getLocalPart());
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -62,11 +62,11 @@
SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
Constants wsrmConstants = provider.getConstants();
- // read wsrm:TerminateSequenceResponse
+ // read required wsrm:TerminateSequenceResponse element
QName terminateSequenceResponseQName =
wsrmConstants.getTerminateSequenceResponseQName();
SOAPElement terminateSequenceResponseElement = getRequiredElement(soapBody,
terminateSequenceResponseQName, "soap body");
- // read wsrm:Identifier
+ // read required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
SOAPElement identifierElement =
getRequiredElement(terminateSequenceResponseElement, identifierQName,
terminateSequenceResponseQName);
String identifier = getRequiredTextContent(identifierElement, identifierQName);
@@ -95,11 +95,11 @@
// Add xmlns:wsrm declaration
soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(),
wsrmConstants.getNamespaceURI());
- // write wsrm:TerminateSequenceResponse
+ // write required wsrm:TerminateSequenceResponse element
QName terminateSequenceResponseQName =
wsrmConstants.getTerminateSequenceResponseQName();
SOAPElement terminateSequenceResponseElement =
soapEnvelope.getBody().addChildElement(terminateSequenceResponseQName);
- // write wsrm:Identifier
+ // write required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
terminateSequenceResponseElement.addChildElement(identifierQName).setValue(object.getIdentifier());
}
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java
===================================================================
---
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java 2007-09-11
12:45:34 UTC (rev 4547)
+++
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java 2007-09-11
13:11:53 UTC (rev 4548)
@@ -21,6 +21,7 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.stringToLong;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
import static
org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
@@ -63,29 +64,24 @@
SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
Constants wsrmConstants = provider.getConstants();
- // read wsrm:TerminateSequence
+ // read required wsrm:TerminateSequence element
QName terminateSequenceQName = wsrmConstants.getTerminateSequenceQName();
SOAPElement terminateSequenceElement = getRequiredElement(soapBody,
terminateSequenceQName, "soap body");
- // read wsrm:Identifier
+ // read required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
SOAPElement identifierElement = getRequiredElement(terminateSequenceElement,
identifierQName, terminateSequenceQName);
String identifier = getRequiredTextContent(identifierElement, identifierQName);
object.setIdentifier(identifier);
- // read wsrm:LastMsgNumber
+ // read optional wsrm:LastMsgNumber element
QName lastMsgNumberQName = wsrmConstants.getLastMsgNumberQName();
SOAPElement lastMsgNumberElement = getOptionalElement(terminateSequenceElement,
lastMsgNumberQName, terminateSequenceQName);
if (lastMsgNumberElement != null)
{
- try
- {
- long lastMsgNumber =
Long.valueOf(getRequiredTextContent(lastMsgNumberElement, lastMsgNumberQName));
- object.setLastMsgNumber(lastMsgNumber);
- } catch (NumberFormatException nfe)
- {
- throw new ReliableMessagingException("Unable to parse LastMsgNumber
element text content", nfe);
- }
+ String lastMsgNumberString = getRequiredTextContent(lastMsgNumberElement,
lastMsgNumberQName);
+ long lastMsgNumberValue = stringToLong(lastMsgNumberString, "Unable to
parse LastMsgNumber element text content");
+ object.setLastMsgNumber(lastMsgNumberValue);
}
}
catch (SOAPException se)
@@ -111,17 +107,17 @@
// Add xmlns:wsrm declaration
soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(),
wsrmConstants.getNamespaceURI());
- // write wsrm:TerminateSequence
+ // write required wsrm:TerminateSequence element
QName terminateSequenceQName = wsrmConstants.getTerminateSequenceQName();
SOAPElement terminateSequenceElement =
soapEnvelope.getBody().addChildElement(terminateSequenceQName);
- // write wsrm:Identifier
+ // write required wsrm:Identifier element
QName identifierQName = wsrmConstants.getIdentifierQName();
terminateSequenceElement.addChildElement(identifierQName).setValue(object.getIdentifier());
if (object.getLastMsgNumber() != 0)
{
- // write wsrm:LastMsgNumber
+ // write optional wsrm:LastMsgNumber element
QName lastMsgNumberQName = wsrmConstants.getLastMsgNumberQName();
SOAPElement lastMsgNumberElement =
terminateSequenceElement.addChildElement(lastMsgNumberQName);
lastMsgNumberElement.setValue(String.valueOf(object.getLastMsgNumber()));