You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ch...@apache.org on 2007/04/23 11:55:16 UTC

svn commit: r531400 [12/18] - in /webservices/sandesha/trunk/java/modules: client/ core/ core/src/ core/src/main/ core/src/main/java/ core/src/main/java/org/ core/src/main/java/org/apache/ core/src/main/java/org/apache/sandesha2/ core/src/main/java/org...

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/FaultCode.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/FaultCode.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/FaultCode.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/FaultCode.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,176 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+/**
+ * Represents an FaultCode element.
+ */
+
+public class FaultCode implements IOMRMElement {
+
+	private QName faultCode = null;
+	
+	private String namespaceValue = null;
+
+	private String detail;
+	
+	private OMElement detailOMElement;
+
+	private OMElement extendedDetailOMElement;
+	
+	public FaultCode(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement sequenceFault) throws OMException {
+
+		if (sequenceFault == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noFaultCodePart,
+					null));
+
+		OMElement faultCodePart = sequenceFault
+				.getFirstChildWithName(new QName(namespaceValue,
+						Sandesha2Constants.WSRM_COMMON.FAULT_CODE));
+
+		if (faultCodePart == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noFaultCode,
+					sequenceFault.toString()));
+
+		this.faultCode = faultCodePart.getTextAsQName();
+
+		OMElement detailPart = sequenceFault
+			.getFirstChildWithName(new QName(namespaceValue,
+					Sandesha2Constants.WSRM_COMMON.DETAIL));
+		
+		if (detailPart != null) {
+			detailOMElement = detailPart;
+			
+			OMElement identifier = detailPart
+				.getFirstChildWithName(new QName(namespaceValue, 
+						Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+			if (identifier != null) {
+				detail = identifier.getText();
+			}
+		}
+
+		return sequenceFault;
+
+	}
+
+	public OMElement toOMElement(OMElement sequenceFault) throws OMException {
+
+		if (sequenceFault == null)
+			throw new OMException(
+					SandeshaMessageHelper.getMessage(
+							SandeshaMessageKeys.nullPassedElement));
+
+		if (faultCode == null)
+			throw new OMException(
+					SandeshaMessageHelper.getMessage(
+							SandeshaMessageKeys.noFaultCode));
+
+		OMFactory factory = sequenceFault.getOMFactory();
+		
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		OMElement faultCodeElement = factory.createOMElement(Sandesha2Constants.WSRM_COMMON.FAULT_CODE,rmNamespace);
+		OMElement detailElement = factory.createOMElement(Sandesha2Constants.WSRM_COMMON.DETAIL,rmNamespace);
+
+		faultCodeElement.setText(faultCode);
+		sequenceFault.addChild(faultCodeElement);
+
+		if (detailOMElement != null)
+			detailElement.addChild(detailOMElement);
+		
+		if (detail != null)
+			detailElement.setText(detail);
+		
+		if (extendedDetailOMElement != null) {
+			detailElement.addChild(extendedDetailOMElement);
+		}
+		
+		sequenceFault.addChild(detailElement);
+		
+		return sequenceFault;
+	}
+    
+    public void setFaultCode(QName faultCode) {
+        this.faultCode = faultCode;
+    }
+    
+    public QName getFaultCode() {
+        return faultCode;
+    }
+
+  	public void setDetail(String detail) {
+  		this.detail = detail; 
+    }
+
+  	public String getDetail() {
+  		return detail;
+  	}
+
+  	public OMElement getDetailOMElement() {
+    	return detailOMElement;
+    }
+
+  	public void setDetailOMElement(OMElement detailOMElement) {
+    	this.detailOMElement = detailOMElement;
+    }
+
+  	public void setExtendedDetailOMElement(OMElement detail2) {
+    	this.extendedDetailOMElement = detail2;
+    }
+
+  	public OMElement getExtendedDetailOMElement() {
+    	return extendedDetailOMElement;
+    }
+ 		
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+
+
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/IOMRMElement.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/IOMRMElement.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/IOMRMElement.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/IOMRMElement.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,32 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+/**
+ * This is the base interface for all RM infoset objects.
+ */
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
+
+public interface IOMRMElement {
+	public String getNamespaceValue();
+	public Object fromOMElement(OMElement element) throws AxisFault ;
+	public OMElement toOMElement(OMElement element) throws AxisFault ;
+	public boolean isNamespaceSupported (String namespaceName);
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/IOMRMPart.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/IOMRMPart.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/IOMRMPart.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/IOMRMPart.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,30 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+
+/**
+ * This is the base interface for RM infoset objects that are added directly so 
+ * SOAPBody or SOAPHeader (we call them MessageParts).
+ */
+
+public interface IOMRMPart extends IOMRMElement {
+	public void toSOAPEnvelope (SOAPEnvelope envelope) throws AxisFault;
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Identifier.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Identifier.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Identifier.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Identifier.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,117 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+/**
+ * Represents an Identifier element.
+ */
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+public class Identifier implements Sandesha2Constants, IOMRMElement {
+
+	private String identifier = null;
+	
+	private String namespaceValue = null;
+	
+	public Identifier(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+
+	public void setIndentifer(String identifier) {
+		this.identifier = identifier;
+	}
+
+	public String getIdentifier() {
+		return identifier;
+	}
+
+	public String getNamespaceValue() throws OMException {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement element) throws OMException {
+		
+		OMElement identifierPart = element.getFirstChildWithName(new QName(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+		if (identifierPart == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.invalidIdentifier,
+					element.toString()));
+		
+		String identifierText = identifierPart.getText();
+		if (identifierText == null || identifierText == "")
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.invalidIdentifier,
+					element.toString()));
+
+		identifier = identifierText;
+		return this;
+	}
+
+	public OMElement toOMElement(OMElement element) throws OMException {
+
+		if (identifier == null || identifier == "") {
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.invalidIdentifier,
+					element.toString()));
+		}
+		
+		OMFactory factory = element.getOMFactory();
+			
+		OMNamespace wsrmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		OMElement identifierElement = factory.createOMElement(Sandesha2Constants.WSRM_COMMON.IDENTIFIER, wsrmNamespace);
+
+		identifierElement.setText(identifier);
+		element.addChild(identifierElement);
+
+		return element;
+	}
+
+	public String toString() {
+		return identifier;
+	}
+
+	public int hashCode() {
+		return identifier.hashCode();
+	}
+	
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessage.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessage.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessage.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessage.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,85 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+/**
+ * Represent the LastMessage element defined by the WSRM 1.0 epecification.
+ */
+
+public class LastMessage implements IOMRMElement {
+
+	private String namespaceValue = null;
+	
+	public LastMessage(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+
+	public String getNamespaceValue () {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement element) throws OMException {
+		OMElement lastMessagePart = element.getFirstChildWithName(new QName(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.LAST_MSG));
+		if (lastMessagePart == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noLastMessagePartInElement,
+					element.toString()));
+
+		return this;
+	}
+
+	public OMElement toOMElement(OMElement sequenceElement) throws OMException {
+
+		OMFactory factory = sequenceElement.getOMFactory();
+		
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		OMElement lastMessageElement = factory.createOMElement(
+				Sandesha2Constants.WSRM_COMMON.LAST_MSG, rmNamespace);
+		
+		sequenceElement.addChild(lastMessageElement);
+		return sequenceElement;
+	}
+	
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		//TODO is this optional or not required.
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MakeConnection.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MakeConnection.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MakeConnection.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MakeConnection.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axis2.AxisFault;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+public class MakeConnection implements IOMRMPart {
+
+	private String namespaceValue = null;
+	
+	Identifier identifier = null;
+	
+	Address address = null;
+	
+	public MakeConnection (String namespaceValue) throws SandeshaException {
+		
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.specDoesNotSupportElement,
+					namespaceValue,Sandesha2Constants.WSRM_COMMON.MAKE_CONNECTION));
+		this.namespaceValue = namespaceValue;
+	}
+
+	public void toSOAPEnvelope(SOAPEnvelope envelope) {
+		SOAPBody body = envelope.getBody();
+		
+		//detach if already exist.
+		OMElement elem = body.getFirstChildWithName(new QName(namespaceValue,
+				Sandesha2Constants.WSRM_COMMON.MAKE_CONNECTION));
+		if (elem!=null)
+			elem.detach();
+		
+		toOMElement(body);
+	}
+
+	public Object fromOMElement(OMElement makeConnectionElement) throws OMException, AxisFault {
+
+		OMElement identifierElement = makeConnectionElement.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.Identifier);
+		if(identifierElement == null) {
+			identifierElement = makeConnectionElement.getFirstChildWithName(Sandesha2Constants.SPEC_2005_02.QNames.Identifier);
+		}
+		OMElement addressElement = makeConnectionElement.getFirstChildWithName(new QName(namespaceValue,Sandesha2Constants.WSA.ADDRESS));
+		
+		if (identifierElement==null && addressElement==null) {
+			String message = "MakeConnection element should have at lease one of Address and Identifier subelements";
+			throw new SandeshaException (message);
+		}
+		
+		if (identifierElement!=null) {
+			identifier = new Identifier (identifierElement.getNamespace().getNamespaceURI());
+			identifier.fromOMElement(makeConnectionElement);
+		}
+		
+		if (addressElement!=null) {
+			address = new Address (namespaceValue);
+			address.fromOMElement(makeConnectionElement);
+		}
+		
+		return this;
+	}
+
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+
+	public boolean isNamespaceSupported(String namespaceName) {
+		if (Sandesha2Constants.SPEC_2007_02.MC_NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+
+	public OMElement toOMElement(OMElement body) throws OMException {
+
+		if (body == null || !(body instanceof SOAPBody)) {
+			String message = "MakeConnection element can only be added to a SOAP Body ";
+			throw new OMException(
+					SandeshaMessageHelper.getMessage(message));
+		}
+
+	/*	if (identifier==null && address==null) {
+			String message = "Invalid MakeConnection object. Both Identifier and Address are null";
+		}
+		*/
+		OMFactory factory = body.getOMFactory();
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_MC);
+		OMElement makeConnectionElement = factory.createOMElement(Sandesha2Constants.WSRM_COMMON.MAKE_CONNECTION,rmNamespace);
+		
+		if (identifier!=null)
+			identifier.toOMElement(makeConnectionElement);
+		if (address!=null)
+			address.toOMElement(makeConnectionElement);
+
+		body.addChild(makeConnectionElement);
+		
+		return body;
+	}
+
+	public Address getAddress() {
+		return address;
+	}
+
+	public void setAddress(Address address) {
+		this.address = address;
+	}
+
+	public Identifier getIdentifier() {
+		return identifier;
+	}
+
+	public void setIdentifier(Identifier identifier) {
+		this.identifier = identifier;
+	}
+
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessageNumber.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessageNumber.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessageNumber.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessageNumber.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,101 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+/**
+ * Represents an MessageNumber element.
+ */
+
+public class MessageNumber implements IOMRMElement {
+	
+	private long messageNumber;
+	
+	private String namespaceValue = null;
+	
+	public MessageNumber(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+	
+	public long getMessageNumber(){
+		return messageNumber;
+	}
+	public void setMessageNumber(long messageNumber){
+		this.messageNumber = messageNumber;
+	}
+	
+	public Object fromOMElement(OMElement sequenceElement) throws OMException {
+		OMElement msgNumberPart = sequenceElement.getFirstChildWithName( 
+				new QName (namespaceValue,Sandesha2Constants.WSRM_COMMON.MSG_NUMBER));
+		if (msgNumberPart==null)
+			throw new OMException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noMessageNumberPartInElement,
+					sequenceElement.toString()));
+		
+		String msgNoStr = msgNumberPart.getText();
+		messageNumber = Long.parseLong(msgNoStr);
+		return this;
+	}
+	
+	public OMElement toOMElement(OMElement element) throws OMException {
+		if (messageNumber <= 0 ){
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.setAValidMsgNumber,
+					Long.toString(messageNumber)));
+		}
+		
+		OMFactory factory = element.getOMFactory();
+		
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		OMElement messageNoElement = factory.createOMElement(Sandesha2Constants.WSRM_COMMON.MSG_NUMBER,rmNamespace);
+		messageNoElement.setText(Long.toString(messageNumber));
+		element.addChild(messageNoElement);
+		
+		return element;
+	}
+	
+	public String getNamespaceValue() throws OMException {
+		return namespaceValue;
+	}
+
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessagePending.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessagePending.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessagePending.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessagePending.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,130 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axis2.Constants;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+public class MessagePending implements IOMRMPart {
+
+	boolean pending = false;
+	String namespaceValue = null;
+	
+	public MessagePending (String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+	
+	public void toSOAPEnvelope(SOAPEnvelope envelope) {
+		SOAPHeader header = envelope.getHeader();
+		
+		if (header==null) {
+			SOAPFactory factory = (SOAPFactory)envelope.getOMFactory();
+			header = factory.createSOAPHeader(envelope);
+		}
+		
+		//detach if already exist.
+		OMElement elem = header.getFirstChildWithName(new QName(namespaceValue,
+				Sandesha2Constants.WSRM_COMMON.MESSAGE_PENDING));
+		if (elem!=null)
+			elem.detach();
+		
+		toOMElement(header);
+	}
+
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement messagePendingElement) throws OMException,
+			SandeshaException {
+		
+		OMAttribute pendingAttr = messagePendingElement.getAttribute(new QName (Sandesha2Constants.WSRM_COMMON.PENDING));
+		if (pendingAttr==null) {
+			String message = "MessagePending header must have an attribute named 'pending'";
+			throw new SandeshaException (message);
+		}
+		
+		String value = pendingAttr.getAttributeValue();
+		if (Constants.VALUE_TRUE.equals(value))
+			pending = true;
+		else if (Constants.VALUE_FALSE.equals(value))
+			pending = false;
+		else {
+			String message = "Attribute 'pending' must have value 'true' or 'false'";
+			throw new SandeshaException (message);
+		}
+		
+		// Mark this element as processed
+		((SOAPHeaderBlock)messagePendingElement).setProcessed();
+
+		return messagePendingElement;
+	}
+
+	public OMElement toOMElement(OMElement headerElement) throws OMException {
+		if (!(headerElement instanceof SOAPHeader)) {
+			String message = "'MessagePending' element can only be added to a SOAP Header";
+			throw new OMException(message);
+		}
+		
+		SOAPHeader header = (SOAPHeader) headerElement;
+		OMFactory factory = header.getOMFactory();
+		OMNamespace namespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		
+		SOAPHeaderBlock headerBlock = header.addHeaderBlock(Sandesha2Constants.WSRM_COMMON.MESSAGE_PENDING,namespace);
+		
+		OMAttribute attribute = factory.createOMAttribute(Sandesha2Constants.WSRM_COMMON.PENDING,null,new Boolean (pending).toString());
+		headerBlock.addAttribute(attribute);
+		
+		return headerElement;
+	}
+
+	public boolean isNamespaceSupported(String namespaceName) {
+		if (Sandesha2Constants.SPEC_2007_02.MC_NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+
+	public boolean isPending() {
+		return pending;
+	}
+
+	public void setPending(boolean pending) {
+		this.pending = pending;
+	}
+
+	
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Nack.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Nack.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Nack.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Nack.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,105 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+/**
+ * Represents an Nack element.
+ */
+
+public class Nack implements IOMRMElement {
+	
+	private long nackNumber;
+	
+	private String namespaceValue = null;
+		
+	public Nack(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+	
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+	
+
+	public Object fromOMElement(OMElement nackElement) throws OMException{
+		
+		if (nackElement==null)
+			throw new OMException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.nullPassedElement));
+		
+		try {
+			nackNumber = Long.parseLong(nackElement.getText());
+		}catch (Exception ex ) {
+			throw new OMException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.nackDoesNotContainValidLongValue));
+		}
+		
+		return this;
+	} 
+	
+	public OMElement toOMElement(OMElement sequenceAckElement) throws OMException {
+		if (sequenceAckElement==null)
+			throw new OMException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noNackInSeqAckPart));
+		
+		if (nackNumber<=0)
+			throw new OMException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.nackDoesNotContainValidLongValue));
+		
+		OMFactory factory = sequenceAckElement.getOMFactory();
+		
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		OMElement nackElement = factory.createOMElement(Sandesha2Constants.WSRM_COMMON.NACK,rmNamespace);
+		nackElement.setText(Long.toString(nackNumber));
+		sequenceAckElement.addChild(nackElement);
+		
+		return sequenceAckElement;
+	}
+
+	public long getNackNumber() {
+		return nackNumber;
+	}
+
+	public void setNackNumber(long nackNumber) {
+		this.nackNumber = nackNumber;
+	}
+
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/RMElements.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/RMElements.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/RMElements.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/RMElements.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,365 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
+
+/**
+ * All RM model classes should implement this.
+ * RM model classes include all the class that represent the elements 
+ * defined by RM specification. 
+ */
+
+public class RMElements {
+
+	private Sequence sequence = null;
+	
+	//there can be more than one sequence ack or ack request in a single message.
+	private ArrayList sequenceAcknowledgements = null;
+	private ArrayList ackRequests = null;
+	
+	private CreateSequence createSequence = null;
+	private CreateSequenceResponse createSequenceResponse = null;
+	private TerminateSequence terminateSequence = null;
+	private TerminateSequenceResponse terminateSequenceResponse = null;
+	private CloseSequence closeSequence = null;
+	private CloseSequenceResponse closeSequenceResponse = null;
+	private UsesSequenceSTR usesSequenceSTR = null;
+	private MessagePending messagePending = null;
+	private MakeConnection makeConnection = null;
+	private SequenceFault sequenceFault = null;
+	
+	public RMElements () {
+		sequenceAcknowledgements = new ArrayList ();
+		ackRequests = new ArrayList();
+	}
+	
+	public RMElements (String addressingNamespace) {
+		this ();
+	}
+	
+	public void fromSOAPEnvelope(SOAPEnvelope envelope, String action) throws AxisFault {
+
+		if (envelope == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.nullPassedElement));
+
+		SOAPFactory factory;
+
+		//Yep, I know. Could hv done it directly :D (just to make it consistent)
+		if (envelope.getNamespace().getNamespaceURI().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI))
+			factory = SOAPAbstractFactory.getSOAPFactory(Sandesha2Constants.SOAPVersion.v1_1);
+		else
+			factory = SOAPAbstractFactory.getSOAPFactory(Sandesha2Constants.SOAPVersion.v1_2);
+		
+		// Check for RM defined elements, using either spec version
+		OMElement header = envelope.getHeader();
+		OMElement body = envelope.getBody();
+
+		// The sequence header
+		OMElement element = null;
+		if(header!=null)
+		{
+			element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.Sequence);
+			if(element == null) {
+				element = envelope.getHeader().getFirstChildWithName(Sandesha2Constants.SPEC_2005_02.QNames.Sequence);
+			}
+			if (element != null) {
+				sequence = new Sequence(element.getNamespace().getNamespaceURI());
+				sequence.fromOMElement(envelope.getHeader());
+			}			
+		}
+
+
+		// The body messages
+		OMElement firstBodyElement = body.getFirstElement();
+		if(firstBodyElement != null) {
+			QName firstBodyQName = firstBodyElement.getQName();
+			
+			if(Sandesha2Constants.SPEC_2007_02.QNames.CreateSequence.equals(firstBodyQName)) {
+				createSequence = new CreateSequence(firstBodyQName.getNamespaceURI());
+				createSequence.fromOMElement(body);
+			} else if(Sandesha2Constants.SPEC_2005_02.QNames.CreateSequence.equals(firstBodyQName)) {
+				createSequence = new CreateSequence(firstBodyQName.getNamespaceURI());
+				createSequence.fromOMElement(body);
+
+			} else if(Sandesha2Constants.SPEC_2007_02.QNames.CreateSequenceResponse.equals(firstBodyQName)) {
+				createSequenceResponse = new CreateSequenceResponse(firstBodyQName.getNamespaceURI());
+				createSequenceResponse.fromOMElement(body);
+			} else if(Sandesha2Constants.SPEC_2005_02.QNames.CreateSequenceResponse.equals(firstBodyQName)) {
+				createSequenceResponse = new CreateSequenceResponse(firstBodyQName.getNamespaceURI());
+				createSequenceResponse.fromOMElement(body);
+
+			} else if(Sandesha2Constants.SPEC_2007_02.QNames.CloseSequence.equals(firstBodyQName)) {
+				closeSequence = new CloseSequence(firstBodyQName.getNamespaceURI());
+				closeSequence.fromOMElement(body);
+			} else if(Sandesha2Constants.SPEC_2005_02.QNames.CloseSequence.equals(firstBodyQName)) {
+				closeSequence = new CloseSequence(firstBodyQName.getNamespaceURI());
+				closeSequence.fromOMElement(body);
+
+			} else if(Sandesha2Constants.SPEC_2007_02.QNames.CloseSequenceResponse.equals(firstBodyQName)) {
+				closeSequenceResponse = new CloseSequenceResponse(firstBodyQName.getNamespaceURI());
+				closeSequenceResponse.fromOMElement(body);
+			} else if(Sandesha2Constants.SPEC_2005_02.QNames.CloseSequenceResponse.equals(firstBodyQName)) {
+				closeSequenceResponse = new CloseSequenceResponse(firstBodyQName.getNamespaceURI());
+				closeSequenceResponse.fromOMElement(body);
+
+			} else if(Sandesha2Constants.SPEC_2007_02.QNames.TerminateSequence.equals(firstBodyQName)) {
+				terminateSequence = new TerminateSequence(firstBodyQName.getNamespaceURI());
+				terminateSequence.fromOMElement(body);
+			} else if(Sandesha2Constants.SPEC_2005_02.QNames.TerminateSequence.equals(firstBodyQName)) {
+				terminateSequence = new TerminateSequence(firstBodyQName.getNamespaceURI());
+				terminateSequence.fromOMElement(body);
+
+			} else if(Sandesha2Constants.SPEC_2007_02.QNames.TerminateSequenceResponse.equals(firstBodyQName)) {
+				terminateSequenceResponse = new TerminateSequenceResponse(firstBodyQName.getNamespaceURI());
+				terminateSequenceResponse.fromOMElement(body);
+			} else if(Sandesha2Constants.SPEC_2005_02.QNames.TerminateSequenceResponse.equals(firstBodyQName)) {
+				terminateSequenceResponse = new TerminateSequenceResponse(firstBodyQName.getNamespaceURI());
+				terminateSequenceResponse.fromOMElement(body);
+
+			} else if(Sandesha2Constants.SPEC_2007_02.QNames.MakeConnection.equals(firstBodyQName)) {
+				makeConnection = new MakeConnection(firstBodyQName.getNamespaceURI());
+				makeConnection.fromOMElement(firstBodyElement);
+			}
+		}
+		
+		// The other headers
+		if(header!=null)
+		{
+			Iterator headers = header.getChildrenWithName(Sandesha2Constants.SPEC_2007_02.QNames.SequenceAck);
+			while (headers.hasNext()) {
+				OMElement sequenceAckElement = (OMElement) headers.next();
+				SequenceAcknowledgement sequenceAcknowledgement = new SequenceAcknowledgement(Sandesha2Constants.SPEC_2007_02.NS_URI);
+				sequenceAcknowledgement.fromOMElement(sequenceAckElement);
+				sequenceAcknowledgements.add(sequenceAcknowledgement);
+			}
+			headers = header.getChildrenWithName(Sandesha2Constants.SPEC_2005_02.QNames.SequenceAck);
+			while (headers.hasNext()) {
+				OMElement sequenceAckElement = (OMElement) headers.next();
+				SequenceAcknowledgement sequenceAcknowledgement = new SequenceAcknowledgement(Sandesha2Constants.SPEC_2005_02.NS_URI);
+				sequenceAcknowledgement.fromOMElement(sequenceAckElement);
+				sequenceAcknowledgements.add(sequenceAcknowledgement);
+			}
+
+			headers = header.getChildrenWithName(Sandesha2Constants.SPEC_2007_02.QNames.AckRequest);
+			while (headers.hasNext()) {
+				OMElement ackRequestElement = (OMElement) headers.next();
+				AckRequested ackRequest = new AckRequested(Sandesha2Constants.SPEC_2007_02.NS_URI);
+				ackRequest.fromOMElement(ackRequestElement);
+				ackRequests.add(ackRequest);
+			}
+			headers = header.getChildrenWithName(Sandesha2Constants.SPEC_2005_02.QNames.AckRequest);
+			while (headers.hasNext()) {
+				OMElement ackRequestElement = (OMElement) headers.next();
+				AckRequested ackRequest = new AckRequested(Sandesha2Constants.SPEC_2005_02.NS_URI);
+				ackRequest.fromOMElement(ackRequestElement);
+				ackRequests.add(ackRequest);
+			}
+			
+			element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.UsesSequenceSTR);
+			if (element != null) {
+				usesSequenceSTR = new UsesSequenceSTR(factory, Sandesha2Constants.SPEC_2007_02.NS_URI);
+				usesSequenceSTR.fromOMElement(element);
+			}
+			
+			element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.MessagePending);
+			if (element != null) {
+				messagePending = new MessagePending(Sandesha2Constants.SPEC_2007_02.MC_NS_URI);
+				messagePending.fromOMElement(element);
+			}
+			
+			element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.SequenceFault);
+			if(element == null) {
+				element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2005_02.QNames.SequenceFault);
+			}
+			if (element !=null) {
+				sequenceFault = new SequenceFault(element.getNamespace().getNamespaceURI());
+				sequenceFault.fromOMElement(element);
+			}
+		}
+	}
+
+	public SOAPEnvelope toSOAPEnvelope(SOAPEnvelope envelope) throws AxisFault  {
+		if (sequence != null) {
+			sequence.toOMElement(envelope.getHeader());
+		}
+		for (Iterator iter=sequenceAcknowledgements.iterator();iter.hasNext();) {
+			SequenceAcknowledgement sequenceAck = (SequenceAcknowledgement) iter.next();
+			sequenceAck.toOMElement(envelope.getHeader());
+		}
+		for (Iterator iter=ackRequests.iterator();iter.hasNext();) {
+			AckRequested ackReq = (AckRequested) iter.next();
+			ackReq.toOMElement(envelope.getHeader());
+		}
+		if (createSequence != null) {
+			createSequence.toOMElement(envelope.getBody());
+		}
+		if (createSequenceResponse != null) {
+			createSequenceResponse.toOMElement(envelope.getBody());
+		}
+		if (terminateSequence != null) {
+			terminateSequence.toOMElement(envelope.getBody());
+		}
+		if (terminateSequenceResponse != null) {
+			terminateSequenceResponse.toOMElement(envelope.getBody());
+		}
+		
+		if (closeSequence != null) {
+			closeSequence.toOMElement(envelope.getBody());
+		}
+		
+		if (closeSequenceResponse != null) {
+			closeSequenceResponse.toOMElement(envelope.getBody());
+		}
+		
+		if (makeConnection!=null) {
+			makeConnection.toOMElement(envelope.getBody());
+		}
+		
+		if (messagePending!=null) {
+			messagePending.toOMElement(envelope.getHeader());
+		}
+		
+		return envelope;
+	}
+
+	public CreateSequence getCreateSequence() {
+		return createSequence;
+	}
+
+	public CreateSequenceResponse getCreateSequenceResponse() {
+		return createSequenceResponse;
+	}
+
+	public Sequence getSequence() {
+		return sequence;
+	}
+
+	public Iterator getSequenceAcknowledgements() {
+		return sequenceAcknowledgements.iterator();
+	}
+
+	public TerminateSequence getTerminateSequence() {
+		return terminateSequence;
+	}
+	
+	public TerminateSequenceResponse getTerminateSequenceResponse() {
+		return terminateSequenceResponse;
+	}
+
+	public void setCreateSequence(CreateSequence createSequence) {
+		this.createSequence = createSequence;
+	}
+
+	public void setCreateSequenceResponse(
+			CreateSequenceResponse createSequenceResponse) {
+		this.createSequenceResponse = createSequenceResponse;
+	}
+
+	public void setSequence(Sequence sequence) {
+		this.sequence = sequence;
+	}
+
+	public void setSequenceAcknowledgements(
+			ArrayList sequenceAcknowledgements) {
+		this.sequenceAcknowledgements = sequenceAcknowledgements;
+	}
+	
+	public void addSequenceAcknowledgement (SequenceAcknowledgement sequenceAcknowledgement) {
+		sequenceAcknowledgements.add(sequenceAcknowledgement);
+	}
+
+	public void setTerminateSequence(TerminateSequence terminateSequence) {
+		this.terminateSequence = terminateSequence;
+	}
+	
+	public void setTerminateSequenceResponse(TerminateSequenceResponse terminateSequenceResponse) {
+		this.terminateSequenceResponse = terminateSequenceResponse;
+	}
+
+	public Iterator getAckRequests() {
+		return ackRequests.iterator();
+	}
+
+	public void setAckRequested(ArrayList ackRequests) {
+		this.ackRequests = ackRequests;
+	}
+	
+	public void addAckRequested(AckRequested ackRequested) {
+		ackRequests.add(ackRequested);
+	}
+	
+	public void setMakeConnection(MakeConnection makeConnection) {
+		this.makeConnection = makeConnection;
+	}
+	
+	public void setMessagePending(MessagePending messagePending) {
+		this.messagePending = messagePending;
+	}
+	
+	public CloseSequence getCloseSequence() {
+		return closeSequence;
+	}
+
+	public void setCloseSequence(CloseSequence closeSequence) {
+		this.closeSequence = closeSequence;
+	}
+
+	public CloseSequenceResponse getCloseSequenceResponse() {
+		return closeSequenceResponse;
+	}
+
+	public void setCloseSequenceResponse(CloseSequenceResponse closeSequenceResponse) {
+		this.closeSequenceResponse = closeSequenceResponse;
+	}
+	
+	public UsesSequenceSTR getUsesSequenceSTR() {
+		return usesSequenceSTR;
+	}
+	
+	public void setUsesSequenceSTR(UsesSequenceSTR header) {
+		usesSequenceSTR = header;
+	}
+
+	public MakeConnection getMakeConnection() {
+		return makeConnection;
+	}
+
+	public MessagePending getMessagePending() {
+		return messagePending;
+	}
+	
+	public SequenceFault getSequenceFault() {
+		return sequenceFault;
+	}
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Sequence.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Sequence.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Sequence.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Sequence.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,177 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+/**
+ * Represents a Sequence element which get carried within a RM application 
+ * message.
+ */
+
+public class Sequence implements IOMRMPart {
+
+	private Identifier identifier;
+	private MessageNumber messageNumber;
+	private LastMessage lastMessage = null;
+	private String namespaceValue = null;
+	
+	public Sequence(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement headerElement) throws OMException,SandeshaException {
+
+		SOAPHeader header = (SOAPHeader) headerElement;
+		if (header == null)
+			throw new OMException(
+					SandeshaMessageHelper.getMessage(
+							SandeshaMessageKeys.seqElementCannotBeAddedToNonHeader));
+
+		OMElement sequencePart = headerElement.getFirstChildWithName(new QName(namespaceValue,
+						Sandesha2Constants.WSRM_COMMON.SEQUENCE));
+		if (sequencePart == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noSequencePartInElement,
+					headerElement.toString()));
+		
+		identifier = new Identifier(namespaceValue);
+		messageNumber = new MessageNumber(namespaceValue);
+		identifier.fromOMElement(sequencePart);
+		messageNumber.fromOMElement(sequencePart);
+
+		OMElement lastMessageElement = sequencePart
+				.getFirstChildWithName(new QName(namespaceValue,Sandesha2Constants.WSRM_COMMON.LAST_MSG));
+
+		if (lastMessageElement != null) {
+			lastMessage = new LastMessage(namespaceValue);
+			lastMessage.fromOMElement(sequencePart);
+		}
+
+    // Indicate that we have processed this part of the message.
+    ((SOAPHeaderBlock)sequencePart).setProcessed();
+    
+		return this;
+	}
+
+	public OMElement toOMElement(OMElement headerElement) throws OMException {
+
+		if (headerElement == null || !(headerElement instanceof SOAPHeader))
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.seqElementCannotBeAddedToNonHeader));
+
+		SOAPHeader soapHeader = (SOAPHeader) headerElement;
+
+		if (identifier == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.nullMsgId));
+		if (messageNumber == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.seqPartIsNull));
+
+		OMFactory factory = headerElement.getOMFactory();
+
+		OMNamespace rmNamespace = factory.createOMNamespace(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		SOAPHeaderBlock sequenceHeaderBlock = soapHeader.addHeaderBlock(
+				Sandesha2Constants.WSRM_COMMON.SEQUENCE, rmNamespace);
+		
+    // Always set the MustUnderstand to true for Sequence messages 
+		sequenceHeaderBlock.setMustUnderstand(true);
+		identifier.toOMElement(sequenceHeaderBlock);
+		messageNumber.toOMElement(sequenceHeaderBlock);
+		if (lastMessage != null)
+			lastMessage.toOMElement(sequenceHeaderBlock);
+
+		return headerElement;
+	}
+
+	public Identifier getIdentifier() {
+		return identifier;
+	}
+
+	public LastMessage getLastMessage() {
+		return lastMessage;
+	}
+
+	public MessageNumber getMessageNumber() {
+		return messageNumber;
+	}
+
+	public void setIdentifier(Identifier identifier) {
+		this.identifier = identifier;
+	}
+
+	public void setLastMessage(LastMessage lastMessage) {
+		this.lastMessage = lastMessage;
+	}
+
+	public void setMessageNumber(MessageNumber messageNumber) {
+		this.messageNumber = messageNumber;
+	}
+
+	public void toSOAPEnvelope(SOAPEnvelope envelope) {
+		SOAPHeader header = envelope.getHeader();
+		
+		if (header==null) {
+			SOAPFactory factory = (SOAPFactory)envelope.getOMFactory();
+			header = factory.createSOAPHeader(envelope);
+		}
+		
+		//detach if already exist.
+		OMElement elem = header.getFirstChildWithName(new QName(namespaceValue,
+				Sandesha2Constants.WSRM_COMMON.SEQUENCE));
+		if (elem!=null)
+			elem.detach();
+		
+		toOMElement(header);
+	}
+	
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,286 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+import org.apache.sandesha2.util.SpecSpecificConstants;
+
+/**
+ * Adds the SequenceAcknowledgement header block.
+ */
+
+public class SequenceAcknowledgement implements IOMRMPart {
+	
+	private Identifier identifier;
+	private ArrayList acknowledgementRangeList;
+	private ArrayList nackList;
+	private String namespaceValue = null;
+	private AckNone ackNone = null;
+	private AckFinal ackFinal = null;
+	
+	public SequenceAcknowledgement(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+		acknowledgementRangeList = new ArrayList();
+		nackList = new ArrayList();
+	}
+
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement sequenceAckElement) throws OMException,SandeshaException {
+
+		identifier = new Identifier(namespaceValue);
+		identifier.fromOMElement(sequenceAckElement);
+
+		Iterator ackRangeParts = sequenceAckElement.getChildrenWithName(new QName(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.ACK_RANGE));
+
+		while (ackRangeParts.hasNext()) {
+			OMElement ackRangePart = (OMElement) ackRangeParts.next();
+
+			AcknowledgementRange ackRange = new AcknowledgementRange(namespaceValue);
+			ackRange.fromOMElement(ackRangePart);
+			acknowledgementRangeList.add(ackRange);
+		}
+
+		Iterator nackParts = sequenceAckElement.getChildrenWithName(new QName(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.NACK));
+
+		while (nackParts.hasNext()) {
+			OMElement nackPart = (OMElement) nackParts.next();
+			Nack nack = new Nack(namespaceValue);
+			nack.fromOMElement(nackPart);
+			nackList.add(nack);
+		}
+
+		String rmSpecVersion = SpecSpecificConstants.getSpecVersionString (namespaceValue);
+		
+		if (SpecSpecificConstants.isAckFinalAllowed(rmSpecVersion)) {
+			OMElement ackFinalPart = sequenceAckElement.getFirstChildWithName(new QName (namespaceValue,Sandesha2Constants.WSRM_COMMON.FINAL));
+			if (ackFinalPart!=null) {
+				ackFinal = new AckFinal (namespaceValue);
+				ackFinal.fromOMElement(sequenceAckElement);
+			}
+		}
+		
+		if (SpecSpecificConstants.isAckNoneAllowed(rmSpecVersion)) {
+			OMElement ackNonePart = sequenceAckElement.getFirstChildWithName(new QName (namespaceValue,Sandesha2Constants.WSRM_COMMON.NONE));
+			if (ackNonePart!=null) {
+				ackNone = new AckNone (namespaceValue);
+				ackNone.fromOMElement(sequenceAckElement);
+			}
+		}
+		
+    // Indicate that we have processed this part of the message.
+    ((SOAPHeaderBlock)sequenceAckElement).setProcessed();
+
+    
+		return this;
+	}
+
+	public OMElement toOMElement(OMElement header) throws OMException,SandeshaException {
+
+		if (header == null || !(header instanceof SOAPHeader))
+			throw new OMException();
+
+		OMFactory factory = header.getOMFactory();
+		
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		
+		//If there already is an ack for this sequence it will be removed. 
+		//We do not allow to send two sequenceAcknowledgements for the same sequence in the same message.
+		Iterator oldAckIter = header.getChildrenWithName(new QName (namespaceValue,Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK));
+		while (oldAckIter.hasNext()) {
+			
+			OMElement oldAckElement = (OMElement) oldAckIter.next();
+			
+			SequenceAcknowledgement oldSequenceAcknowledgement = new SequenceAcknowledgement (namespaceValue);
+			oldSequenceAcknowledgement.fromOMElement(oldAckElement);
+			
+			String oldAckIdentifier = oldSequenceAcknowledgement.getIdentifier().getIdentifier();
+			if (oldAckIdentifier!=null && oldAckIdentifier.equals(this.identifier.getIdentifier())) {
+				oldAckElement.detach();
+			}
+		}
+		
+		SOAPHeader SOAPHeader = (SOAPHeader) header;
+		SOAPHeaderBlock sequenceAcknowledgementHeaderBlock = SOAPHeader.addHeaderBlock(
+				Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK,rmNamespace);
+		
+		if (sequenceAcknowledgementHeaderBlock == null)
+			throw new OMException("Cant set sequence acknowledgement since the element is null");
+
+		if (identifier == null)
+			throw new OMException(
+					SandeshaMessageHelper.getMessage(
+							SandeshaMessageKeys.invalidIdentifier,
+							header.toString()));
+
+    // SequenceACK messages should always have the MustUnderstand flag set to true
+		sequenceAcknowledgementHeaderBlock.setMustUnderstand(true);
+		identifier.toOMElement(sequenceAcknowledgementHeaderBlock);
+
+		Iterator ackRangeIt = acknowledgementRangeList.iterator();
+		while (ackRangeIt.hasNext()) {
+			AcknowledgementRange ackRange = (AcknowledgementRange) ackRangeIt
+					.next();
+			ackRange.toOMElement(sequenceAcknowledgementHeaderBlock);
+		}
+
+		Iterator nackIt = nackList.iterator();
+		while (nackIt.hasNext()) {
+			Nack nack = (Nack) nackIt.next();
+			nack.toOMElement(sequenceAcknowledgementHeaderBlock);
+		}
+		
+		String rmSpecVersion = SpecSpecificConstants.getSpecVersionString(namespaceValue);
+
+		//setting a 'None' when nothing is there (for the correct RM version)
+		if (ackNone==null && acknowledgementRangeList.size()==0 && nackList.size()==0 && SpecSpecificConstants.isAckNoneAllowed(rmSpecVersion)) {
+			ackNone = new AckNone (namespaceValue);
+		}
+		
+		if (ackNone!=null) {
+			if (!SpecSpecificConstants.isAckNoneAllowed(rmSpecVersion)) {
+				throw new SandeshaException (SandeshaMessageHelper.getMessage(
+						SandeshaMessageKeys.noneNotAllowedNamespace,
+						rmSpecVersion));
+			}
+			
+			if (acknowledgementRangeList.size()>0) {
+				throw new SandeshaException (SandeshaMessageHelper.getMessage(
+						SandeshaMessageKeys.noneNotAllowedAckRangesPresent));
+			}
+			
+			if (nackList.size()>0) {
+				throw new SandeshaException (SandeshaMessageHelper.getMessage(
+						SandeshaMessageKeys.noneNotAllowedNackPresent));
+			}
+			
+			ackNone.toOMElement(sequenceAcknowledgementHeaderBlock);
+		}
+		
+		if (ackFinal!=null) {
+			if (!SpecSpecificConstants.isAckFinalAllowed(rmSpecVersion)) {
+				throw new SandeshaException (SandeshaMessageHelper.getMessage(
+						SandeshaMessageKeys.finalNotAllowedNamespace));
+			}
+			
+			if (nackList.size()>0) {
+				throw new SandeshaException (SandeshaMessageHelper.getMessage(
+						SandeshaMessageKeys.cannotHaveFinalWithNack));
+			}
+			
+			ackFinal.toOMElement(sequenceAcknowledgementHeaderBlock);
+		}
+		
+		return header;
+	}
+
+	public void setIdentifier(Identifier identifier) {
+		this.identifier = identifier;
+	}
+
+	public void setAckRanges(ArrayList acknowledgementRagngesList) {
+		acknowledgementRangeList = acknowledgementRagngesList;
+	}
+
+	public Nack addNackRanges(Nack nack) {
+		nackList.add(nack);
+		return nack;
+	}
+
+	public AcknowledgementRange addAcknowledgementRanges(
+			AcknowledgementRange ackRange) {
+		acknowledgementRangeList.add(ackRange);
+		return ackRange;
+	}
+
+	public Identifier getIdentifier() {
+		return identifier;
+	}
+
+	public List getAcknowledgementRanges() {
+		return acknowledgementRangeList;
+	}
+
+	public List getNackList() {
+		return nackList;
+	}
+
+	public void toSOAPEnvelope(SOAPEnvelope envelope) throws SandeshaException {
+		SOAPHeader header = envelope.getHeader();
+		
+		if (header==null) {
+			SOAPFactory factory = (SOAPFactory)envelope.getOMFactory();
+			header = factory.createSOAPHeader(envelope);
+		}
+		
+		toOMElement(header);
+	}
+
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+
+	public AckFinal getAckFinal() {
+		return ackFinal;
+	}
+
+	public void setAckFinal(AckFinal ackFinal) {
+		this.ackFinal = ackFinal;
+	}
+
+	public AckNone getAckNone() {
+		return ackNone;
+	}
+
+	public void setAckNone(AckNone ackNone) {
+		this.ackNone = ackNone;
+	}
+	
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceFault.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceFault.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceFault.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceFault.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,127 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+/**
+ * Adds the SequenceFault header block.
+ */
+
+public class SequenceFault implements IOMRMPart {
+	
+	private FaultCode faultCode;
+	
+	private String namespaceValue = null;
+
+	public SequenceFault(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement sequenceFaultPart) throws OMException,SandeshaException {
+
+
+		if (sequenceFaultPart == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noSeqFaultInElement,
+					null));
+
+		OMElement faultCodePart = sequenceFaultPart
+				.getFirstChildWithName(new QName(namespaceValue,Sandesha2Constants.WSRM_COMMON.FAULT_CODE));
+
+		if (faultCodePart != null) {
+			faultCode = new FaultCode(namespaceValue);
+			faultCode.fromOMElement(sequenceFaultPart);
+		}
+
+		((SOAPHeaderBlock)sequenceFaultPart).setProcessed();
+
+		return this;
+	}
+
+	public OMElement toOMElement(OMElement header) throws OMException {
+
+		if (header == null || !(header instanceof SOAPHeader))
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.seqFaultCannotBeExtractedToNonHeader));
+
+		OMFactory factory = header.getOMFactory();
+
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		OMElement sequenceFaultElement =factory.createOMElement(
+				Sandesha2Constants.WSRM_COMMON.SEQUENCE_FAULT, rmNamespace);
+		if (faultCode != null)
+			faultCode.toOMElement(sequenceFaultElement);
+
+		header.addChild(sequenceFaultElement);
+
+		return header;
+	}
+
+	public void setFaultCode(FaultCode faultCode) {
+		this.faultCode = faultCode;
+	}
+
+	public FaultCode getFaultCode() {
+		return faultCode;
+	}
+	
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+
+	public void toSOAPEnvelope(SOAPEnvelope envelope) {
+		SOAPHeader header = envelope.getHeader();
+		
+		//detach if already exist.
+		OMElement elem = header.getFirstChildWithName(new QName(namespaceValue,
+				Sandesha2Constants.WSRM_COMMON.SEQUENCE_FAULT));
+		if (elem!=null)
+			elem.detach();
+		
+		toOMElement(header);
+  }
+
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceOffer.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceOffer.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceOffer.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceOffer.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,150 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axis2.AxisFault;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+/**
+ * Represents an SequenceOffer element which may be present within a 
+ * Create Sequence message.
+ */
+
+public class SequenceOffer implements IOMRMElement {
+	
+	private Identifier identifier = null;
+	
+	private Expires expires = null;
+	
+	private Endpoint endpoint = null;
+	
+	private String namespaceValue = null;
+	
+	public SequenceOffer(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement createSequenceElement)
+			throws OMException,AxisFault {
+		
+		OMElement sequenceOfferPart = createSequenceElement
+				.getFirstChildWithName(new QName(namespaceValue,Sandesha2Constants.WSRM_COMMON.SEQUENCE_OFFER));
+		if (sequenceOfferPart == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noSeqOfferInElement,
+					createSequenceElement.toString()));
+
+		identifier = new Identifier(namespaceValue);
+		identifier.fromOMElement(sequenceOfferPart);
+
+		OMElement expiresPart = sequenceOfferPart
+				.getFirstChildWithName(new QName(namespaceValue,Sandesha2Constants.WSRM_COMMON.EXPIRES));
+		if (expiresPart != null) {
+			expires = new Expires(namespaceValue);
+			expires.fromOMElement(sequenceOfferPart);
+		}
+		
+		OMElement endpointPart = sequenceOfferPart
+				.getFirstChildWithName(new QName (namespaceValue,Sandesha2Constants.WSRM_COMMON.ENDPOINT));
+		if (endpointPart != null) {
+			endpoint = new Endpoint (namespaceValue);
+			endpoint.fromOMElement (endpointPart);
+		}
+
+		return this;
+	}
+
+	public OMElement toOMElement(OMElement createSequenceElement)
+			throws OMException,AxisFault {
+
+		if (identifier == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.nullMsgId));
+
+		OMFactory factory = createSequenceElement.getOMFactory();
+		
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		OMElement sequenceOfferElement = factory.createOMElement(Sandesha2Constants.WSRM_COMMON.SEQUENCE_OFFER, rmNamespace);
+		
+		identifier.toOMElement(sequenceOfferElement);
+
+		if (endpoint!=null) {
+			endpoint.toOMElement(sequenceOfferElement);
+		} else {
+			if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceValue)) {
+				String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.elementMustForSpec,
+						Sandesha2Constants.WSRM_COMMON.ENDPOINT,
+						Sandesha2Constants.SPEC_2007_02.NS_URI);
+				throw new SandeshaException (message);
+			}
+		}
+		
+		if (expires != null) {
+			expires.toOMElement(sequenceOfferElement);
+		}
+
+		createSequenceElement.addChild(sequenceOfferElement);
+
+		return createSequenceElement;
+	}
+
+	public Identifier getIdentifer() {
+		return identifier;
+	}
+
+	public void setIdentifier(Identifier identifier) {
+		this.identifier = identifier;
+	}
+	
+	public Endpoint getEndpoint() {
+		return endpoint;
+	}
+
+	public void setEndpoint(Endpoint endpoint) {
+		this.endpoint = endpoint;
+	}
+
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,128 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+/**
+ * Adds the Terminate Sequence body part.
+ */
+
+public class TerminateSequence implements IOMRMPart {
+
+	private Identifier identifier;
+	
+	private String namespaceValue = null;
+	
+	public TerminateSequence(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement body) throws OMException,SandeshaException {
+
+		if (!(body instanceof SOAPBody))
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.terminateSeqCannotBeAddedToNonBody));
+
+		OMElement terminateSeqPart = body.getFirstChildWithName(new QName(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE));
+
+		if (terminateSeqPart == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noTerminateSeqInElement,
+					body.toString()));
+
+		identifier = new Identifier(namespaceValue);
+		identifier.fromOMElement(terminateSeqPart);
+
+		return this;
+	}
+
+	public OMElement toOMElement(OMElement body) throws OMException {
+
+		if (body == null || !(body instanceof SOAPBody))
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.terminateSeqCannotBeAddedToNonBody));
+
+		if (identifier == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.nullMsgId));
+
+		OMFactory factory= body.getOMFactory();
+		
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		OMElement terminateSequenceElement = factory.createOMElement(
+				Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE, rmNamespace);
+		
+		identifier.toOMElement(terminateSequenceElement);
+		body.addChild(terminateSequenceElement);
+
+		return body;
+	}
+
+	public Identifier getIdentifier() {
+		return identifier;
+	}
+
+	public void setIdentifier(Identifier identifier) {
+		this.identifier = identifier;
+	}
+
+	public void toSOAPEnvelope(SOAPEnvelope envelope) {
+		SOAPBody body = envelope.getBody();
+		
+		//detach if already exist.
+		OMElement elem = body.getFirstChildWithName(new QName(namespaceValue,
+				Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE));
+		if (elem!=null)
+			elem.detach();
+		
+		toOMElement(body);
+	}
+	
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+	
+}

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequenceResponse.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequenceResponse.java?view=auto&rev=531400
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequenceResponse.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequenceResponse.java Mon Apr 23 02:54:53 2007
@@ -0,0 +1,127 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *  
+ */
+
+package org.apache.sandesha2.wsrm;
+
+import javax.xml.namespace.QName;
+
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+
+/**
+ * Adds the Terminate Sequence Response body part.
+ */
+
+public class TerminateSequenceResponse implements IOMRMPart {
+
+	private Identifier identifier;
+	
+	private String namespaceValue = null;
+	
+	public TerminateSequenceResponse(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+	
+	public String getNamespaceValue() {
+		return namespaceValue;
+	}
+
+	public Object fromOMElement(OMElement body) throws OMException,SandeshaException {
+
+		if (!(body instanceof SOAPBody))
+			throw new OMException(
+					SandeshaMessageHelper.getMessage(
+							SandeshaMessageKeys.terminateSeqResponseCannotBeAddedToNonBody));
+
+		OMElement terminateSeqResponsePart = body.getFirstChildWithName(new QName(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE_RESPONSE));
+
+		if (terminateSeqResponsePart == null)
+			throw new OMException(
+					SandeshaMessageHelper.getMessage(
+							SandeshaMessageKeys.noTerminateSeqResponseInElement,
+							body.toString()));
+
+		identifier = new Identifier(namespaceValue);
+		identifier.fromOMElement(terminateSeqResponsePart);
+
+		return this;
+	}
+
+	public OMElement toOMElement(OMElement body) throws OMException {
+
+		if (body == null || !(body instanceof SOAPBody))
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.terminateSeqResponseCannotBeAddedToNonBody));
+
+		if (identifier == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.nullMsgId));
+
+		OMFactory factory = body.getOMFactory();
+		
+		OMNamespace rmNamespace = factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+		OMElement terminateSequenceResponseElement = factory.createOMElement(
+				Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE_RESPONSE, rmNamespace);
+		
+		identifier.toOMElement(terminateSequenceResponseElement);
+		body.addChild(terminateSequenceResponseElement);
+
+		return body;
+	}
+
+	public Identifier getIdentifier() {
+		return identifier;
+	}
+
+	public void setIdentifier(Identifier identifier) {
+		this.identifier = identifier;
+	}
+
+	public void toSOAPEnvelope(SOAPEnvelope envelope) {
+		SOAPBody body = envelope.getBody();
+		
+		//detach if already exist.
+		OMElement elem = body.getFirstChildWithName(new QName(namespaceValue,
+				Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE_RESPONSE));
+		if (elem!=null)
+			elem.detach();
+		
+		toOMElement(body);
+	}
+	
+	public boolean isNamespaceSupported (String namespaceName) {
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		
+		return false;
+	}
+	
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org