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