JBossWS SVN: r4542 - in stack/native/branches/dlofthouse/JBWS-1801/src: main/java/org/jboss/ws/tools/helpers and 5 other directories.
by jbossws-commits@lists.jboss.org
Author: darran.lofthouse(a)jboss.com
Date: 2007-09-11 07:59:59 -0400 (Tue, 11 Sep 2007)
New Revision: 4542
Added:
stack/native/branches/dlofthouse/JBWS-1801/src/test/java/org/jboss/test/ws/tools/jbws1801/
stack/native/branches/dlofthouse/JBWS-1801/src/test/java/org/jboss/test/ws/tools/jbws1801/JBWS1801TestCase.java
stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/
stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/
stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/Person.java
stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook.wsdl
stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook_PortType.java
stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/TelephoneNumber.java
stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/jaxrpc-mapping.xml
stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/wstools-config.xml
Modified:
stack/native/branches/dlofthouse/JBWS-1801/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java
stack/native/branches/dlofthouse/JBWS-1801/src/main/java/org/jboss/ws/tools/helpers/MappingFileGeneratorHelper.java
Log:
Fix and test case.
Modified: stack/native/branches/dlofthouse/JBWS-1801/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java
===================================================================
--- stack/native/branches/dlofthouse/JBWS-1801/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java 2007-09-11 11:55:45 UTC (rev 4541)
+++ stack/native/branches/dlofthouse/JBWS-1801/src/main/java/org/jboss/ws/core/soap/SOAPBodyImpl.java 2007-09-11 11:59:59 UTC (rev 4542)
@@ -38,7 +38,6 @@
import org.jboss.logging.Logger;
import org.jboss.ws.Constants;
import org.jboss.wsf.common.DOMUtils;
-import org.w3c.dom.Comment;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.DocumentFragment;
@@ -271,11 +270,7 @@
private static boolean needsConversionToBodyElement(Node newChild)
{
// JBCTS-440 #addTextNodeTest1 appends a Text node to a SOAPBody
- boolean validChild = newChild instanceof SOAPBodyElement;
- validChild = validChild || newChild instanceof DocumentFragment;
- validChild = validChild || newChild instanceof Text;
- validChild = validChild || newChild instanceof Comment;
- return validChild == false;
+ return !(newChild instanceof SOAPBodyElement || newChild instanceof DocumentFragment || newChild instanceof Text);
}
private static SOAPBodyElementDoc convertToBodyElement(Node node)
Modified: stack/native/branches/dlofthouse/JBWS-1801/src/main/java/org/jboss/ws/tools/helpers/MappingFileGeneratorHelper.java
===================================================================
--- stack/native/branches/dlofthouse/JBWS-1801/src/main/java/org/jboss/ws/tools/helpers/MappingFileGeneratorHelper.java 2007-09-11 11:55:45 UTC (rev 4541)
+++ stack/native/branches/dlofthouse/JBWS-1801/src/main/java/org/jboss/ws/tools/helpers/MappingFileGeneratorHelper.java 2007-09-11 11:59:59 UTC (rev 4542)
@@ -489,7 +489,8 @@
if (isDocStyle())
{
XSTypeDefinition xt = getXSType(input);
- addJavaXMLTypeMap(xt, input.getElement().getLocalPart(), "", "", jwm, !isWrapped());
+ // Don't unwrap the actual parameter.
+ addJavaXMLTypeMap(xt, input.getElement().getLocalPart(), "", "", jwm, false);
}
else
{
@@ -503,7 +504,8 @@
if (isDocStyle())
{
XSTypeDefinition xt = getXSType(output);
- addJavaXMLTypeMap(xt, output.getElement().getLocalPart(), "", "", jwm, !isWrapped());
+ // Don't unwrap the response type.
+ addJavaXMLTypeMap(xt, output.getElement().getLocalPart(), "", "", jwm, false);
}
else
{
@@ -704,7 +706,7 @@
}
}
- if ((skipWrapperArray && isRepresentsArray(xt)) == false)
+ if ((skipWrapperArray && SchemaUtils.isWrapperArrayType(xt)) == false)
{
jxtm = new JavaXmlTypeMapping(jwm);
String javaType;
@@ -900,40 +902,6 @@
}
/**
- * Checks whether the type represents an array type
- *
- * @param xst
- * @return true: type represents an array
- */
- private boolean isRepresentsArray(XSTypeDefinition xst)
- {
- boolean bool = false;
- if (xst instanceof XSComplexTypeDefinition)
- {
- XSComplexTypeDefinition xc = (XSComplexTypeDefinition)xst;
- if (xc.getContentType() == XSComplexTypeDefinition.CONTENTTYPE_EMPTY)
- return false;
- XSParticle xsp = xc.getParticle();
-
- if (xsp == null)
- return false;
-
- XSTerm xsterm = xsp.getTerm();
- if (xsterm instanceof XSModelGroup)
- {
- XSModelGroup xm = (XSModelGroup)xsterm;
- XSObjectList xo = xm.getParticles();
- if (xo.getLength() == 1)
- {
- XSParticle xp = (XSParticle)xo.item(0);
- bool = xp.getMaxOccursUnbounded() || xp.getMaxOccurs() > 1;
- }
- }
- }
- return bool;
- }
-
- /**
* Any custom decisions that need to be made will be done here
*
* @param javaType
Added: stack/native/branches/dlofthouse/JBWS-1801/src/test/java/org/jboss/test/ws/tools/jbws1801/JBWS1801TestCase.java
===================================================================
--- stack/native/branches/dlofthouse/JBWS-1801/src/test/java/org/jboss/test/ws/tools/jbws1801/JBWS1801TestCase.java (rev 0)
+++ stack/native/branches/dlofthouse/JBWS-1801/src/test/java/org/jboss/test/ws/tools/jbws1801/JBWS1801TestCase.java 2007-09-11 11:59:59 UTC (rev 4542)
@@ -0,0 +1,108 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.tools.jbws1801;
+
+import java.io.File;
+import java.io.FilenameFilter;
+
+import org.jboss.test.ws.tools.fixture.JBossSourceComparator;
+import org.jboss.test.ws.tools.validation.JaxrpcMappingValidator;
+import org.jboss.ws.tools.WSTools;
+import org.jboss.wsf.test.JBossWSTest;
+
+/**
+ * Test case to test the following fix: -
+ *
+ * @see http://jira.jboss.com/jira/browse/JBWS-1801
+ *
+ * WSDL To Java - When an array if returned from a method
+ * on the SEI it is incorrectly ommitted from the generated
+ * JAX-RPC mapping.
+ *
+ * @author darran.lofthouse(a)jboss.com
+ * @since Sep 11, 2007
+ */
+public class JBWS1801TestCase extends JBossWSTest
+{
+
+ public void testDocumentLiteral() throws Exception
+ {
+ generateScenario("doclit");
+ }
+
+ protected void generateScenario(final String scenario) throws Exception
+ {
+ String resourceDir = "resources/tools/jbws1801/" + scenario;
+ String toolsDir = "tools/jbws1801/" + scenario;
+ String[] args = new String[] { "-dest", toolsDir, "-config", resourceDir + "/wstools-config.xml" };
+ new WSTools().generate(args);
+ File resourceDirFile = new File(resourceDir);
+ String[] expectedFiles = resourceDirFile.list(new FilenameFilter() {
+ public boolean accept(File dir, String name)
+ {
+ return name.endsWith(".java");
+ }
+ });
+
+ for (int i = 0; i < expectedFiles.length; i++)
+ {
+ String currentFile = expectedFiles[i];
+
+ try
+ {
+ compareSource(resourceDir + "/" + currentFile, toolsDir + "/org/jboss/test/ws/jbws1801/" + currentFile);
+ }
+ catch (Exception e)
+ {
+ throw new Exception("Validation of '" + currentFile + "' failed.", e);
+ }
+ }
+
+ File packageDir = new File(toolsDir + "/org/jboss/test/ws/jbws1801");
+ String[] generatedFiles = packageDir.list();
+ for (int i = 0; i < generatedFiles.length; i++)
+ {
+ String currentFile = generatedFiles[i];
+
+ boolean matched = "PhoneBookService.java".equals(currentFile);
+
+ for (int j = 0; j < expectedFiles.length && (matched == false); j++)
+ matched = currentFile.equals(expectedFiles[j]);
+
+ assertTrue("File '" + currentFile + "' was not expected to be generated", matched);
+ }
+
+ JaxrpcMappingValidator mappingValidator = new JaxrpcMappingValidator();
+ mappingValidator.validate(resourceDir + "/jaxrpc-mapping.xml", toolsDir + "/jaxrpc-mapping.xml");
+ }
+
+ private static void compareSource(final String expectedName, final String generatedName) throws Exception
+ {
+ File expected = new File(expectedName);
+ File generated = new File(generatedName);
+
+ JBossSourceComparator sc = new JBossSourceComparator(expected, generated);
+ sc.validate();
+ sc.validateImports();
+ }
+
+}
Property changes on: stack/native/branches/dlofthouse/JBWS-1801/src/test/java/org/jboss/test/ws/tools/jbws1801/JBWS1801TestCase.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/Person.java
===================================================================
--- stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/Person.java (rev 0)
+++ stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/Person.java 2007-09-11 11:59:59 UTC (rev 4542)
@@ -0,0 +1,27 @@
+/*
+ * JBossWS WS-Tools Generated Source
+ *
+ * Generation Date: Tue Sep 11 12:13:54 BST 2007
+ *
+ * This generated source code represents a derivative work of the input to
+ * the generator that produced it. Consult the input for the copyright and
+ * terms of use that apply to this source code.
+ */
+
+package org.jboss.test.ws.jbws1801;
+
+
+public class Person
+{
+
+protected java.lang.String[] surname;
+public Person(){}
+
+public Person(java.lang.String[] surname){
+this.surname=surname;
+}
+public java.lang.String[] getSurname() { return surname ;}
+
+public void setSurname(java.lang.String[] surname){ this.surname=surname; }
+
+}
Property changes on: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/Person.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook.wsdl
===================================================================
--- stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook.wsdl (rev 0)
+++ stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook.wsdl 2007-09-11 11:59:59 UTC (rev 4542)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name='PhoneBook'
+ targetNamespace='http://test.jboss.org/ws/jbws1801'
+ xmlns='http://schemas.xmlsoap.org/wsdl/'
+ xmlns:ns1='http://test.jboss.org/ws/jbws1801/types'
+ xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
+ xmlns:tns='http://test.jboss.org/ws/jbws1801'
+ xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
+ <types>
+ <schema targetNamespace='http://test.jboss.org/ws/jbws1801/types'
+ xmlns='http://www.w3.org/2001/XMLSchema'
+ xmlns:soap11-enc='http://schemas.xmlsoap.org/soap/encoding/'
+ xmlns:tns='http://test.jboss.org/ws/jbws1801/types'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
+
+ <complexType name='Person'>
+ <sequence>
+ <element maxOccurs="unbounded" minOccurs="0" name="surname" nillable="true" type="string"/>
+ </sequence>
+ </complexType>
+
+ <complexType name='TelephoneNumber'>
+ <sequence>
+ <element maxOccurs="unbounded" minOccurs="0" name="number" nillable="true" type="string"/>
+ </sequence>
+ </complexType>
+
+ <element name='lookup' type='tns:Person'/>
+ <element name='lookupResponse' type='tns:TelephoneNumber'/>
+
+ </schema>
+ </types>
+
+ <message name='PhoneBook_lookup'>
+ <part element='ns1:lookup' name='parameters'/>
+ </message>
+
+ <message name='PhoneBook_lookupResponse'>
+ <part element='ns1:lookupResponse' name='result'/>
+ </message>
+
+ <portType name='PhoneBook'>
+ <operation name='lookup'>
+ <input message='tns:PhoneBook_lookup'/>
+ <output message='tns:PhoneBook_lookupResponse'/>
+ </operation>
+ </portType>
+
+ <binding name='PhoneBookBinding' type='tns:PhoneBook'>
+ <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
+ <operation name='lookup'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal' parts='parameters'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ </binding>
+
+ <service name='PhoneBook'>
+ <port binding='tns:PhoneBookBinding' name='PhoneBookPort'>
+ <soap:address location='REPLACE_WITH_ACTUAL_URL'/>
+ </port>
+ </service>
+
+</definitions>
\ No newline at end of file
Property changes on: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook.wsdl
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook_PortType.java
===================================================================
--- stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook_PortType.java (rev 0)
+++ stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook_PortType.java 2007-09-11 11:59:59 UTC (rev 4542)
@@ -0,0 +1,15 @@
+/*
+ * JBossWS WS-Tools Generated Source
+ *
+ * Generation Date: Tue Sep 11 12:13:54 BST 2007
+ *
+ * This generated source code represents a derivative work of the input to
+ * the generator that produced it. Consult the input for the copyright and
+ * terms of use that apply to this source code.
+ */
+package org.jboss.test.ws.jbws1801;
+public interface PhoneBook_PortType extends java.rmi.Remote
+{
+
+ public org.jboss.test.ws.jbws1801.TelephoneNumber lookup(org.jboss.test.ws.jbws1801.Person lookup) throws java.rmi.RemoteException;
+}
Property changes on: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/PhoneBook_PortType.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/TelephoneNumber.java
===================================================================
--- stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/TelephoneNumber.java (rev 0)
+++ stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/TelephoneNumber.java 2007-09-11 11:59:59 UTC (rev 4542)
@@ -0,0 +1,27 @@
+/*
+ * JBossWS WS-Tools Generated Source
+ *
+ * Generation Date: Tue Sep 11 12:13:54 BST 2007
+ *
+ * This generated source code represents a derivative work of the input to
+ * the generator that produced it. Consult the input for the copyright and
+ * terms of use that apply to this source code.
+ */
+
+package org.jboss.test.ws.jbws1801;
+
+
+public class TelephoneNumber
+{
+
+protected java.lang.String[] number;
+public TelephoneNumber(){}
+
+public TelephoneNumber(java.lang.String[] number){
+this.number=number;
+}
+public java.lang.String[] getNumber() { return number ;}
+
+public void setNumber(java.lang.String[] number){ this.number=number; }
+
+}
Property changes on: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/TelephoneNumber.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/jaxrpc-mapping.xml
===================================================================
--- stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/jaxrpc-mapping.xml (rev 0)
+++ stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/jaxrpc-mapping.xml 2007-09-11 11:59:59 UTC (rev 4542)
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='UTF-8'?><java-wsdl-mapping version='1.1' xmlns='http://java.sun.com/xml/ns/j2ee' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_jaxrpc_mapping_1_1.xsd'>
+ <package-mapping>
+ <package-type>org.jboss.test.ws.jbws1801</package-type>
+ <namespaceURI>http://test.jboss.org/ws/jbws1801/types</namespaceURI>
+ </package-mapping>
+ <package-mapping>
+ <package-type>org.jboss.test.ws.jbws1801</package-type>
+ <namespaceURI>http://test.jboss.org/ws/jbws1801</namespaceURI>
+ </package-mapping>
+ <java-xml-type-mapping>
+ <java-type>org.jboss.test.ws.jbws1801.Person</java-type>
+ <root-type-qname xmlns:typeNS='http://test.jboss.org/ws/jbws1801/types'>typeNS:Person</root-type-qname>
+ <qname-scope>complexType</qname-scope>
+ <variable-mapping>
+ <java-variable-name>surname</java-variable-name>
+ <xml-element-name>surname</xml-element-name>
+ </variable-mapping>
+ </java-xml-type-mapping>
+ <java-xml-type-mapping>
+ <java-type>org.jboss.test.ws.jbws1801.TelephoneNumber</java-type>
+ <root-type-qname xmlns:typeNS='http://test.jboss.org/ws/jbws1801/types'>typeNS:TelephoneNumber</root-type-qname>
+ <qname-scope>complexType</qname-scope>
+ <variable-mapping>
+ <java-variable-name>number</java-variable-name>
+ <xml-element-name>number</xml-element-name>
+ </variable-mapping>
+ </java-xml-type-mapping>
+ <service-interface-mapping>
+ <service-interface>org.jboss.test.ws.jbws1801.PhoneBook_Service</service-interface>
+ <wsdl-service-name xmlns:serviceNS='http://test.jboss.org/ws/jbws1801'>serviceNS:PhoneBook</wsdl-service-name>
+ <port-mapping>
+ <port-name>PhoneBookPort</port-name>
+ <java-port-name>PhoneBookPort</java-port-name>
+ </port-mapping>
+ </service-interface-mapping>
+ <service-endpoint-interface-mapping>
+ <service-endpoint-interface>org.jboss.test.ws.jbws1801.PhoneBook_PortType</service-endpoint-interface>
+ <wsdl-port-type xmlns:portTypeNS='http://test.jboss.org/ws/jbws1801'>portTypeNS:PhoneBook</wsdl-port-type>
+ <wsdl-binding xmlns:bindingNS='http://test.jboss.org/ws/jbws1801'>bindingNS:PhoneBookBinding</wsdl-binding>
+ <service-endpoint-method-mapping>
+ <java-method-name>lookup</java-method-name>
+ <wsdl-operation>lookup</wsdl-operation>
+ <method-param-parts-mapping>
+ <param-position>0</param-position>
+ <param-type>org.jboss.test.ws.jbws1801.Person</param-type>
+ <wsdl-message-mapping>
+ <wsdl-message xmlns:wsdlMsgNS='http://test.jboss.org/ws/jbws1801'>wsdlMsgNS:PhoneBook_lookup</wsdl-message>
+ <wsdl-message-part-name>parameters</wsdl-message-part-name>
+ <parameter-mode>IN</parameter-mode>
+ </wsdl-message-mapping>
+ </method-param-parts-mapping>
+ <wsdl-return-value-mapping>
+ <method-return-value>org.jboss.test.ws.jbws1801.TelephoneNumber</method-return-value>
+ <wsdl-message xmlns:wsdlMsgNS='http://test.jboss.org/ws/jbws1801'>wsdlMsgNS:PhoneBook_lookupResponse</wsdl-message>
+ <wsdl-message-part-name>result</wsdl-message-part-name>
+ </wsdl-return-value-mapping>
+ </service-endpoint-method-mapping>
+ </service-endpoint-interface-mapping>
+</java-wsdl-mapping>
\ No newline at end of file
Property changes on: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/jaxrpc-mapping.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/wstools-config.xml
===================================================================
--- stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/wstools-config.xml (rev 0)
+++ stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/wstools-config.xml 2007-09-11 11:59:59 UTC (rev 4542)
@@ -0,0 +1,6 @@
+<configuration>
+ <wsdl-java location="resources/tools/jbws1801/doclit/PhoneBook.wsdl"
+ parameter-style="bare">
+ <mapping file="jaxrpc-mapping.xml"/>
+ </wsdl-java>
+</configuration>
Property changes on: stack/native/branches/dlofthouse/JBWS-1801/src/test/resources/tools/jbws1801/doclit/wstools-config.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
16 years, 8 months
JBossWS SVN: r4541 - stack/native/branches/dlofthouse.
by jbossws-commits@lists.jboss.org
Author: darran.lofthouse(a)jboss.com
Date: 2007-09-11 07:55:45 -0400 (Tue, 11 Sep 2007)
New Revision: 4541
Added:
stack/native/branches/dlofthouse/JBWS-1801/
Log:
Temp area to hold fix.
Copied: stack/native/branches/dlofthouse/JBWS-1801 (from rev 4540, stack/native/branches/native-2.0)
16 years, 8 months
JBossWS SVN: r4540 - stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization.
by jbossws-commits@lists.jboss.org
Author: richard.opalka(a)jboss.com
Date: 2007-09-10 12:48:15 -0400 (Mon, 10 Sep 2007)
New Revision: 4540
Modified:
stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java
Log:
adding new usecases to the test suite
Modified: stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java 2007-09-10 16:47:05 UTC (rev 4539)
+++ stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java 2007-09-10 16:48:15 UTC (rev 4540)
@@ -25,11 +25,13 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.MessageFactory;
+import org.jboss.ws.extensions.wsrm.spi.protocol.AckRequested;
import org.jboss.ws.extensions.wsrm.spi.protocol.CloseSequence;
import org.jboss.ws.extensions.wsrm.spi.protocol.CloseSequenceResponse;
import org.jboss.ws.extensions.wsrm.spi.protocol.CreateSequence;
import org.jboss.ws.extensions.wsrm.spi.protocol.CreateSequenceResponse;
import org.jboss.ws.extensions.wsrm.spi.protocol.IncompleteSequenceBehavior;
+import org.jboss.ws.extensions.wsrm.spi.protocol.Sequence;
import org.jboss.ws.extensions.wsrm.spi.protocol.Serializable;
import org.jboss.ws.extensions.wsrm.spi.protocol.TerminateSequence;
import org.jboss.ws.extensions.wsrm.spi.protocol.TerminateSequenceResponse;
@@ -355,6 +357,44 @@
assertEquals(terminateSequenceResponse, TERMINATE_SEQUENCE_RESPONSE_MESSAGE, WSRM_200702_FACTORY);
}
+ public void testSequenceMessageSerialization() throws Exception
+ {
+ Sequence sequence = WSRM_200702_FACTORY.newSequence();
+ sequence.deserializeFrom(toSOAPMessage(SEQUENCE_PLUS_ACKREQUESTED_MESSAGE));
+ // perform assertion
+ assertEquals(sequence.getIdentifier(), "http://Business456.com/RM/ABC");
+ assertEquals(sequence.getMessageNumber(), 1);
+ }
+
+ public void testSequenceMessageDeserialization() throws Exception
+ {
+ Sequence sequence = WSRM_200702_FACTORY.newSequence();
+ // construct message
+ sequence.setIdentifier("http://Business456.com/RM/ABC");
+ sequence.setMessageNumber(1);
+ // perform assertion
+ assertEquals(sequence, SEQUENCE_PLUS_ACKREQUESTED_MESSAGE, WSRM_200702_FACTORY);
+ }
+
+ public void testAckRequestedMessageSerialization() throws Exception
+ {
+ AckRequested ackRequested = WSRM_200702_FACTORY.newAckRequested();
+ ackRequested.deserializeFrom(toSOAPMessage(SEQUENCE_PLUS_ACKREQUESTED_MESSAGE));
+ // perform assertion
+ assertEquals(ackRequested.getIdentifier(), "http://Business456.com/RM/ABC");
+ }
+
+ public void testAckRequestedMessageDeserialization() throws Exception
+ {
+ AckRequested ackRequested = WSRM_200702_FACTORY.newAckRequested();
+ // construct message
+ ackRequested.setIdentifier("http://Business456.com/RM/ABC");
+ // perform assertion
+ assertEquals(ackRequested, SEQUENCE_PLUS_ACKREQUESTED_MESSAGE, WSRM_200702_FACTORY);
+ }
+
+ // TODO: implement other de/serializations
+
private static void assertEquals(Serializable serializable, String exemplar, MessageFactory factory) throws Exception
{
// serialize constructed message
@@ -384,12 +424,14 @@
return factory.newTerminateSequence();
if (helper instanceof TerminateSequenceResponse)
return factory.newTerminateSequenceResponse();
+ if (helper instanceof Sequence)
+ return factory.newSequence();
+ if (helper instanceof AckRequested)
+ return factory.newAckRequested();
throw new IllegalArgumentException();
}
- // TODO: implement other de/serializations
-
private static SOAPMessage toSOAPMessage(String data) throws Exception
{
javax.xml.soap.MessageFactory factory = javax.xml.soap.MessageFactory.newInstance();
16 years, 8 months
JBossWS SVN: r4539 - stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization.
by jbossws-commits@lists.jboss.org
Author: richard.opalka(a)jboss.com
Date: 2007-09-10 12:47:05 -0400 (Mon, 10 Sep 2007)
New Revision: 4539
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java
Log:
implemented Sequence and AckRequested de/serializers
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java 2007-09-10 14:14:37 UTC (rev 4538)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java 2007-09-10 16:47:05 UTC (rev 4539)
@@ -21,10 +21,19 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.ws.extensions.wsrm.spi.Constants;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.AckRequested;
@@ -49,7 +58,40 @@
public static void deserialize(AckRequested object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPHeader soapHeader = soapMessage.getSOAPPart().getEnvelope().getHeader();
+ Constants wsrmConstants = provider.getConstants();
+
+ // read wsrm:AckRequested
+ QName ackRequestedQName = wsrmConstants.getAckRequestedQName();
+ SOAPElement ackRequestedElement = getRequiredElement(soapHeader, ackRequestedQName, "soap header");
+
+ // read wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ SOAPElement identifierElement = getRequiredElement(ackRequestedElement, identifierQName, ackRequestedQName);
+ String identifier = getRequiredTextContent(identifierElement, identifierQName);
+ object.setIdentifier(identifier);
+
+ // read wsrm:MessageNumber
+ QName messageNumberQName = wsrmConstants.getMessageNumberQName();
+ SOAPElement messageNumberElement = getOptionalElement(ackRequestedElement, messageNumberQName, ackRequestedQName);
+ if (messageNumberElement != null)
+ {
+ try
+ {
+ long messageNumber = Long.valueOf(getRequiredTextContent(messageNumberElement, messageNumberQName));
+ object.setMessageNumber(messageNumber);
+ } catch (NumberFormatException nfe)
+ {
+ throw new ReliableMessagingException("Unable to parse MessageNumber element text content", nfe);
+ }
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to deserialize RM message", se);
+ }
}
/**
@@ -61,7 +103,34 @@
public static void serialize(AckRequested object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ Constants wsrmConstants = provider.getConstants();
+
+ // Add xmlns:wsrm declaration
+ soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(), wsrmConstants.getNamespaceURI());
+
+ // write wsrm:AckRequested
+ QName ackRequestedQName = wsrmConstants.getAckRequestedQName();
+ SOAPElement ackRequestedElement = soapEnvelope.getHeader().addChildElement(ackRequestedQName);
+
+ // write wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ ackRequestedElement.addChildElement(identifierQName).setValue(object.getIdentifier());
+
+ if (object.getMessageNumber() != 0)
+ {
+ // write wsrm:MessageNumber
+ QName messageNumberQName = wsrmConstants.getMessageNumberQName();
+ SOAPElement messageNumberElement = ackRequestedElement.addChildElement(messageNumberQName);
+ messageNumberElement.setValue(String.valueOf(object.getMessageNumber()));
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to serialize RM message", se);
+ }
}
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java 2007-09-10 14:14:37 UTC (rev 4538)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java 2007-09-10 16:47:05 UTC (rev 4539)
@@ -21,10 +21,19 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.ws.extensions.wsrm.spi.Constants;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.Sequence;
@@ -49,7 +58,45 @@
public static void deserialize(Sequence object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPHeader soapHeader = soapMessage.getSOAPPart().getEnvelope().getHeader();
+ Constants wsrmConstants = provider.getConstants();
+
+ // read wsrm:Sequence
+ QName sequenceQName = wsrmConstants.getSequenceQName();
+ SOAPElement sequenceElement = getRequiredElement(soapHeader, sequenceQName, "soap header");
+
+ // read wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ SOAPElement identifierElement = getRequiredElement(sequenceElement, identifierQName, sequenceQName);
+ String identifier = getRequiredTextContent(identifierElement, identifierQName);
+ object.setIdentifier(identifier);
+
+ // read wsrm:MessageNumber
+ QName messageNumberQName = wsrmConstants.getMessageNumberQName();
+ SOAPElement messageNumberElement = getRequiredElement(sequenceElement, messageNumberQName, sequenceQName);
+ try
+ {
+ long messageNumber = Long.valueOf(getRequiredTextContent(messageNumberElement, messageNumberQName));
+ object.setMessageNumber(messageNumber);
+ } catch (NumberFormatException nfe)
+ {
+ throw new ReliableMessagingException("Unable to parse MessageNumber element text content", nfe);
+ }
+
+ // read wsrm:LastMessage
+ QName lastMessageQName = wsrmConstants.getLastMessageQName();
+ SOAPElement lastMessageElement = getOptionalElement(sequenceElement, lastMessageQName, sequenceQName);
+ if (lastMessageElement != null)
+ {
+ object.setLastMessage();
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to deserialize RM message", se);
+ }
}
/**
@@ -61,7 +108,38 @@
public static void serialize(Sequence object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ Constants wsrmConstants = provider.getConstants();
+
+ // Add xmlns:wsrm declaration
+ soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(), wsrmConstants.getNamespaceURI());
+
+ // write wsrm:Sequence
+ QName sequenceQName = wsrmConstants.getSequenceQName();
+ SOAPElement sequenceElement = soapEnvelope.getHeader().addChildElement(sequenceQName);
+
+ // write wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ sequenceElement.addChildElement(identifierQName).setValue(object.getIdentifier());
+
+ // write wsrm:MessageNumber
+ QName messageNumberQName = wsrmConstants.getMessageNumberQName();
+ SOAPElement messageNumberElement = sequenceElement.addChildElement(messageNumberQName);
+ messageNumberElement.setValue(String.valueOf(object.getMessageNumber()));
+
+ if (object.isLastMessage())
+ {
+ // write wsrm:LastMessage
+ QName lastMessageQName = wsrmConstants.getLastMessageQName();
+ sequenceElement.addChildElement(lastMessageQName);
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to serialize RM message", se);
+ }
}
}
16 years, 8 months
JBossWS SVN: r4538 - stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization.
by jbossws-commits@lists.jboss.org
Author: richard.opalka(a)jboss.com
Date: 2007-09-10 10:14:37 -0400 (Mon, 10 Sep 2007)
New Revision: 4538
Modified:
stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java
Log:
implementing other test usecases
Modified: stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java 2007-09-10 14:13:48 UTC (rev 4537)
+++ stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java 2007-09-10 14:14:37 UTC (rev 4538)
@@ -1,3 +1,24 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
package org.jboss.test.ws.jaxws.wsrm.deserialization;
import java.io.ByteArrayInputStream;
@@ -4,10 +25,20 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.MessageFactory;
+import org.jboss.ws.extensions.wsrm.spi.protocol.CloseSequence;
+import org.jboss.ws.extensions.wsrm.spi.protocol.CloseSequenceResponse;
import org.jboss.ws.extensions.wsrm.spi.protocol.CreateSequence;
+import org.jboss.ws.extensions.wsrm.spi.protocol.CreateSequenceResponse;
import org.jboss.ws.extensions.wsrm.spi.protocol.IncompleteSequenceBehavior;
+import org.jboss.ws.extensions.wsrm.spi.protocol.Serializable;
+import org.jboss.ws.extensions.wsrm.spi.protocol.TerminateSequence;
+import org.jboss.ws.extensions.wsrm.spi.protocol.TerminateSequenceResponse;
import org.jboss.wsf.test.JBossWSTest;
+/**
+ * WS-RM messages de/serialization test case
+ * @author richard.opalka(a)jboss.com
+ */
public final class WSRMDeSerializationTestCase extends JBossWSTest
{
private static final String WSRM_200702_NS = "http://docs.oasis-open.org/ws-rx/wsrm/200702";
@@ -44,7 +75,7 @@
+ " </soap:Body>"
+ "</soap:Envelope>";
- private static final String createSequenceResponseMessage
+ private static final String CREATE_SEQUENCE_RESPONSE_MESSAGE
= "<soap:Envelope"
+ " xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\""
+ " xmlns:wsrm=\"http://docs.oasis-open.org/ws-rx/wsrm/200702\""
@@ -57,11 +88,18 @@
+ " <soap:Body>"
+ " <wsrm:CreateSequenceResponse>"
+ " <wsrm:Identifier>http://Business456.com/RM/ABC</wsrm:Identifier>"
+ + " <wsrm:Expires>PT0S</wsrm:Expires>"
+ + " <wsrm:IncompleteSequenceBehavior>DiscardFollowingFirstGap</wsrm:IncompleteSequenceBehavior>"
+ + " <wsrm:Accept>"
+ + " <wsrm:AcksTo>"
+ + " <wsa:Address>http://Business456.com/serviceA/ASDF</wsa:Address>"
+ + " </wsrm:AcksTo>"
+ + " </wsrm:Accept>"
+ " </wsrm:CreateSequenceResponse>"
+ " </soap:Body>"
+ "</soap:Envelope>";
- private static final String sequencePlusAckRequestedMessage
+ private static final String SEQUENCE_PLUS_ACKREQUESTED_MESSAGE
= "<soap:Envelope"
+ " xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\""
+ " xmlns:wsrm=\"http://docs.oasis-open.org/ws-rx/wsrm/200702\""
@@ -84,7 +122,7 @@
+ " <soap:Body><!-- Some Application Data --></soap:Body>"
+ "</soap:Envelope>";
- private static final String sequenceAcknowledgementMessage
+ private static final String SEQUENCE_ACKNOWLEDGEMENT_MESSAGE
= "<soap:Envelope"
+ " xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\""
+ " xmlns:wsrm=\"http://docs.oasis-open.org/ws-rx/wsrm/200702\""
@@ -105,7 +143,7 @@
+ " <soap:Body/>"
+ "</soap:Envelope>";
- private static final String closeSequenceMessage
+ private static final String CLOSE_SEQUENCE_MESSAGE
= "<soap:Envelope"
+ " xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\""
+ " xmlns:wsrm=\"http://docs.oasis-open.org/ws-rx/wsrm/200702\""
@@ -126,7 +164,7 @@
+ " </soap:Body>"
+ "</soap:Envelope>";
- private static final String terminateSequenceMessage
+ private static final String TERMINATE_SEQUENCE_MESSAGE
= "<soap:Envelope"
+ " xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\""
+ " xmlns:wsrm=\"http://docs.oasis-open.org/ws-rx/wsrm/200702\""
@@ -147,7 +185,7 @@
+ " </soap:Body>"
+ "</soap:Envelope>";
- private static final String closeSequenceResponseMessage
+ private static final String CLOSE_SEQUENCE_RESPONSE_MESSAGE
= "<soap:Envelope"
+ " xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\""
+ " xmlns:wsrm=\"http://docs.oasis-open.org/ws-rx/wsrm/200702\""
@@ -168,7 +206,7 @@
+ " </soap:Body>"
+ "</soap:Envelope>";
- private static final String terminateSequenceResponseMessage
+ private static final String TERMINATE_SEQUENCE_RESPONSE_MESSAGE
= "<soap:Envelope"
+ " xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\""
+ " xmlns:wsrm=\"http://docs.oasis-open.org/ws-rx/wsrm/200702\""
@@ -215,19 +253,141 @@
offer.setExpires("PT1S");
offer.setIncompleteSequenceBehavior(IncompleteSequenceBehavior.DISCARD_ENTIRE_SEQUENCE);
createSequenceMessage.setOffer(offer);
- // serialize message
+ // perform assertion
+ assertEquals(createSequenceMessage, CREATE_SEQUENCE_MESSAGE, WSRM_200702_FACTORY);
+ }
+
+ public void testCreateSequenceResponseMessageDeserialization() throws Exception
+ {
+ CreateSequenceResponse createSequenceResponseMessage = WSRM_200702_FACTORY.newCreateSequenceResponse();
+ createSequenceResponseMessage.deserializeFrom(toSOAPMessage(CREATE_SEQUENCE_RESPONSE_MESSAGE));
+ // perform assertion
+ assertEquals(createSequenceResponseMessage.getIdentifier(), "http://Business456.com/RM/ABC");
+ assertEquals(createSequenceResponseMessage.getExpires(), "PT0S");
+ assertEquals(createSequenceResponseMessage.getIncompleteSequenceBehavior(), IncompleteSequenceBehavior.DISCARD_FOLLOWING_FIRST_GAP);
+ CreateSequenceResponse.Accept accept = createSequenceResponseMessage.getAccept();
+ assertEquals(accept.getAcksTo(), "http://Business456.com/serviceA/ASDF");
+ }
+
+ public void testCreateSequenceResponseMessageSerialization() throws Exception
+ {
+ CreateSequenceResponse createSequenceResponse = WSRM_200702_FACTORY.newCreateSequenceResponse();
+ // construct message
+ createSequenceResponse.setIdentifier("http://Business456.com/RM/ABC");
+ createSequenceResponse.setExpires("PT0S");
+ createSequenceResponse.setIncompleteSequenceBehavior(IncompleteSequenceBehavior.DISCARD_FOLLOWING_FIRST_GAP);
+ CreateSequenceResponse.Accept accept = createSequenceResponse.newAccept();
+ accept.setAcksTo("http://Business456.com/serviceA/ASDF");
+ createSequenceResponse.setAccept(accept);
+ // perform assertion
+ assertEquals(createSequenceResponse, CREATE_SEQUENCE_RESPONSE_MESSAGE, WSRM_200702_FACTORY);
+ }
+
+ public void testCloseSequenceMessageDeserialization() throws Exception
+ {
+ CloseSequence closeSequence = WSRM_200702_FACTORY.newCloseSequence();
+ closeSequence.deserializeFrom(toSOAPMessage(CLOSE_SEQUENCE_MESSAGE));
+ // perform assertion
+ assertEquals(closeSequence.getIdentifier(), "http://Business456.com/RM/ABC");
+ assertEquals(closeSequence.getLastMsgNumber(), 3);
+ }
+
+ public void testCloseSequenceMessageSerialization() throws Exception
+ {
+ CloseSequence closeSequence = WSRM_200702_FACTORY.newCloseSequence();
+ // construct message
+ closeSequence.setIdentifier("http://Business456.com/RM/ABC");
+ closeSequence.setLastMsgNumber(3);
+ // perform assertion
+ assertEquals(closeSequence, CLOSE_SEQUENCE_MESSAGE, WSRM_200702_FACTORY);
+ }
+
+ public void testCloseSequenceResponseMessageDeserialization() throws Exception
+ {
+ CloseSequenceResponse closeSequenceResponse = WSRM_200702_FACTORY.newCloseSequenceResponse();
+ closeSequenceResponse.deserializeFrom(toSOAPMessage(CLOSE_SEQUENCE_RESPONSE_MESSAGE));
+ // perform assertion
+ assertEquals(closeSequenceResponse.getIdentifier(), "http://Business456.com/RM/ABC");
+ }
+
+ public void testCloseSequenceResponseMessageSerialization() throws Exception
+ {
+ CloseSequenceResponse closeSequenceResponse = WSRM_200702_FACTORY.newCloseSequenceResponse();
+ // construct message
+ closeSequenceResponse.setIdentifier("http://Business456.com/RM/ABC");
+ // perform assertion
+ assertEquals(closeSequenceResponse, CLOSE_SEQUENCE_RESPONSE_MESSAGE, WSRM_200702_FACTORY);
+ }
+
+ public void testTerminateSequenceMessageDeserialization() throws Exception
+ {
+ TerminateSequence terminateSequence = WSRM_200702_FACTORY.newTerminateSequence();
+ terminateSequence.deserializeFrom(toSOAPMessage(TERMINATE_SEQUENCE_MESSAGE));
+ // perform assertion
+ assertEquals(terminateSequence.getIdentifier(), "http://Business456.com/RM/ABC");
+ assertEquals(terminateSequence.getLastMsgNumber(), 3);
+ }
+
+ public void testTerminateSequenceMessageSerialization() throws Exception
+ {
+ TerminateSequence terminateSequence = WSRM_200702_FACTORY.newTerminateSequence();
+ // construct message
+ terminateSequence.setIdentifier("http://Business456.com/RM/ABC");
+ terminateSequence.setLastMsgNumber(3);
+ // perform assertion
+ assertEquals(terminateSequence, TERMINATE_SEQUENCE_MESSAGE, WSRM_200702_FACTORY);
+ }
+
+ public void testTerminateSequenceResponseMessageDeserialization() throws Exception
+ {
+ TerminateSequenceResponse terminateSequenceResponse = WSRM_200702_FACTORY.newTerminateSequenceResponse();
+ terminateSequenceResponse.deserializeFrom(toSOAPMessage(TERMINATE_SEQUENCE_RESPONSE_MESSAGE));
+ // perform assertion
+ assertEquals(terminateSequenceResponse.getIdentifier(), "http://Business456.com/RM/ABC");
+ }
+
+ public void testTerminateSequenceResponseMessageSerialization() throws Exception
+ {
+ TerminateSequenceResponse terminateSequenceResponse = WSRM_200702_FACTORY.newTerminateSequenceResponse();
+ // construct message
+ terminateSequenceResponse.setIdentifier("http://Business456.com/RM/ABC");
+ // perform assertion
+ assertEquals(terminateSequenceResponse, TERMINATE_SEQUENCE_RESPONSE_MESSAGE, WSRM_200702_FACTORY);
+ }
+
+ private static void assertEquals(Serializable serializable, String exemplar, MessageFactory factory) throws Exception
+ {
+ // serialize constructed message
SOAPMessage createdSOAPMessage = newEmptySOAPMessage();
- createSequenceMessage.serializeTo(createdSOAPMessage);
+ serializable.serializeTo(createdSOAPMessage);
// deserialize from constructed message
- CreateSequence createSequenceMessage1 = WSRM_200702_FACTORY.newCreateSequence();
- createSequenceMessage1.deserializeFrom(createdSOAPMessage);
+ Serializable serializable1 = newEmptySerializable(factory, serializable);
+ serializable1.deserializeFrom(createdSOAPMessage);
// deserialize from reference message
- CreateSequence createSequenceMessage2 = WSRM_200702_FACTORY.newCreateSequence();
- createSequenceMessage2.deserializeFrom(toSOAPMessage(CREATE_SEQUENCE_MESSAGE));
+ Serializable serializable2 = newEmptySerializable(factory, serializable);
+ serializable2.deserializeFrom(toSOAPMessage(exemplar));
// perform assertion
- assertEquals(createSequenceMessage1, createSequenceMessage2);
+ assertEquals(serializable1, serializable2);
}
+ private static Serializable newEmptySerializable(MessageFactory factory, Serializable helper)
+ {
+ if (helper instanceof CreateSequence)
+ return factory.newCreateSequence();
+ if (helper instanceof CreateSequenceResponse)
+ return factory.newCreateSequenceResponse();
+ if (helper instanceof CloseSequence)
+ return factory.newCloseSequence();
+ if (helper instanceof CloseSequenceResponse)
+ return factory.newCloseSequenceResponse();
+ if (helper instanceof TerminateSequence)
+ return factory.newTerminateSequence();
+ if (helper instanceof TerminateSequenceResponse)
+ return factory.newTerminateSequenceResponse();
+
+ throw new IllegalArgumentException();
+ }
+
// TODO: implement other de/serializations
private static SOAPMessage toSOAPMessage(String data) throws Exception
16 years, 8 months
JBossWS SVN: r4537 - in stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm: spi/protocol and 1 other directory.
by jbossws-commits@lists.jboss.org
Author: richard.opalka(a)jboss.com
Date: 2007-09-10 10:13:48 -0400 (Mon, 10 Sep 2007)
New Revision: 4537
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/CreateSequenceResponse.java
Log:
implementing other serializers + little optimization
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java 2007-09-10 08:33:00 UTC (rev 4536)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java 2007-09-10 14:13:48 UTC (rev 4537)
@@ -21,10 +21,18 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.ws.extensions.wsrm.spi.Constants;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.CloseSequenceResponse;
@@ -49,7 +57,25 @@
public static void deserialize(CloseSequenceResponse object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
+ Constants wsrmConstants = provider.getConstants();
+
+ // read wsrm:CloseSequenceResponse
+ QName closeSequenceResponseQName = wsrmConstants.getCloseSequenceResponseQName();
+ SOAPElement closeSequenceResponseElement = getRequiredElement(soapBody, closeSequenceResponseQName, "soap body");
+
+ // read wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ SOAPElement identifierElement = getRequiredElement(closeSequenceResponseElement, identifierQName, closeSequenceResponseQName);
+ String identifier = getRequiredTextContent(identifierElement, identifierQName);
+ object.setIdentifier(identifier);
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to deserialize RM message", se);
+ }
}
/**
@@ -61,7 +87,26 @@
public static void serialize(CloseSequenceResponse object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ Constants wsrmConstants = provider.getConstants();
+
+ // Add xmlns:wsrm declaration
+ soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(), wsrmConstants.getNamespaceURI());
+
+ // write wsrm:CloseSequenceResponse
+ QName closeSequenceResponseQName = wsrmConstants.getCloseSequenceResponseQName();
+ SOAPElement closeSequenceResponseElement = soapEnvelope.getBody().addChildElement(closeSequenceResponseQName);
+
+ // write wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ closeSequenceResponseElement.addChildElement(identifierQName).setValue(object.getIdentifier());
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to serialize RM message", se);
+ }
}
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java 2007-09-10 08:33:00 UTC (rev 4536)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java 2007-09-10 14:13:48 UTC (rev 4537)
@@ -21,10 +21,19 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.ws.extensions.wsrm.spi.Constants;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.CloseSequence;
@@ -49,7 +58,40 @@
public static void deserialize(CloseSequence object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
+ Constants wsrmConstants = provider.getConstants();
+
+ // read wsrm:CloseSequence
+ QName closeSequenceQName = wsrmConstants.getCloseSequenceQName();
+ SOAPElement closeSequenceElement = getRequiredElement(soapBody, closeSequenceQName, "soap body");
+
+ // read wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ SOAPElement identifierElement = getRequiredElement(closeSequenceElement, identifierQName, closeSequenceQName);
+ String identifier = getRequiredTextContent(identifierElement, identifierQName);
+ object.setIdentifier(identifier);
+
+ // read wsrm:LastMsgNumber
+ QName lastMsgNumberQName = wsrmConstants.getLastMsgNumberQName();
+ SOAPElement lastMsgNumberElement = getOptionalElement(closeSequenceElement, lastMsgNumberQName, closeSequenceQName);
+ if (lastMsgNumberElement != null)
+ {
+ try
+ {
+ long lastMsgNumber = Long.valueOf(getRequiredTextContent(lastMsgNumberElement, lastMsgNumberQName));
+ object.setLastMsgNumber(lastMsgNumber);
+ } catch (NumberFormatException nfe)
+ {
+ throw new ReliableMessagingException("Unable to parse LastMsgNumber element text content", nfe);
+ }
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to deserialize RM message", se);
+ }
}
/**
@@ -61,7 +103,34 @@
public static void serialize(CloseSequence object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ Constants wsrmConstants = provider.getConstants();
+
+ // Add xmlns:wsrm declaration
+ soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(), wsrmConstants.getNamespaceURI());
+
+ // write wsrm:CloseSequence
+ QName closeSequenceQName = wsrmConstants.getCloseSequenceQName();
+ SOAPElement closeSequenceElement = soapEnvelope.getBody().addChildElement(closeSequenceQName);
+
+ // write wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ closeSequenceElement.addChildElement(identifierQName).setValue(object.getIdentifier());
+
+ if (object.getLastMsgNumber() != 0)
+ {
+ // write wsrm:LastMsgNumber
+ QName lastMsgNumberQName = wsrmConstants.getLastMsgNumberQName();
+ SOAPElement lastMsgNumberElement = closeSequenceElement.addChildElement(lastMsgNumberQName);
+ lastMsgNumberElement.setValue(String.valueOf(object.getLastMsgNumber()));
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to serialize RM message", se);
+ }
}
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java 2007-09-10 08:33:00 UTC (rev 4536)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java 2007-09-10 14:13:48 UTC (rev 4537)
@@ -21,12 +21,24 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.addressing.AddressingBuilder;
+import javax.xml.ws.addressing.AddressingConstants;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.ws.extensions.wsrm.spi.Constants;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.CreateSequenceResponse;
+import org.jboss.ws.extensions.wsrm.spi.protocol.IncompleteSequenceBehavior;
/**
* <b>CreateSequenceResponse</b> object de/serializer
@@ -35,6 +47,9 @@
final class CreateSequenceResponseSerializer
{
+ private static final AddressingConstants ADDRESSING_CONSTANTS =
+ AddressingBuilder.getAddressingBuilder().newAddressingConstants();
+
private CreateSequenceResponseSerializer()
{
// no instances
@@ -49,7 +64,61 @@
public static void deserialize(CreateSequenceResponse object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
+ Constants wsrmConstants = provider.getConstants();
+
+ // read wsrm:CreateSequenceResponse
+ QName createSequenceResponseQName = wsrmConstants.getCreateSequenceResponseQName();
+ SOAPElement createSequenceResponseElement = getRequiredElement(soapBody, createSequenceResponseQName, "soap body");
+
+ // read wsrm:identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ SOAPElement identifierElement = getRequiredElement(createSequenceResponseElement, identifierQName, createSequenceResponseQName);
+ String identifier = getRequiredTextContent(identifierElement, identifierQName);
+ object.setIdentifier(identifier);
+
+ // read wsrm:Expires
+ QName expiresQName = wsrmConstants.getExpiresQName();
+ SOAPElement expiresElement = getOptionalElement(createSequenceResponseElement, expiresQName, createSequenceResponseQName);
+ if (expiresElement != null)
+ {
+ String duration = getRequiredTextContent(expiresElement, expiresQName);
+ object.setExpires(duration);
+ }
+
+ // read wsrm:IncompleteSequenceBehavior
+ QName behaviorQName = wsrmConstants.getIncompleteSequenceBehaviorQName();
+ SOAPElement behaviorElement = getOptionalElement(createSequenceResponseElement, behaviorQName, createSequenceResponseQName);
+ if (behaviorElement != null)
+ {
+ String behaviorString = getRequiredTextContent(behaviorElement, behaviorQName);
+ object.setIncompleteSequenceBehavior(IncompleteSequenceBehavior.getValue(behaviorString));
+ }
+
+ // read wsrm:Accept
+ QName acceptQName = wsrmConstants.getAcceptQName();
+ SOAPElement acceptElement = getOptionalElement(createSequenceResponseElement, acceptQName, createSequenceResponseQName);
+ if (acceptElement != null)
+ {
+ CreateSequenceResponse.Accept accept = object.newAccept();
+
+ // read wsrm:AcksTo
+ QName acksToQName = wsrmConstants.getAcksToQName();
+ SOAPElement acksToElement = getRequiredElement(acceptElement, acksToQName, acceptQName);
+ QName addressQName = ADDRESSING_CONSTANTS.getAddressQName();
+ SOAPElement acksToAddressElement = getRequiredElement(acksToElement, addressQName, acksToQName);
+ String acksToAddress = getRequiredTextContent(acksToAddressElement, addressQName);
+ accept.setAcksTo(acksToAddress);
+
+ object.setAccept(accept);
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to deserialize RM message", se);
+ }
}
/**
@@ -61,7 +130,56 @@
public static void serialize(CreateSequenceResponse object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ Constants wsrmConstants = provider.getConstants();
+
+ // Add xmlns:wsrm declaration
+ soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(), wsrmConstants.getNamespaceURI());
+
+ // write wsrm:CreateSequenceResponse
+ QName createSequenceResponseQName = wsrmConstants.getCreateSequenceResponseQName();
+ SOAPElement createSequenceResponseElement = soapEnvelope.getBody().addChildElement(createSequenceResponseQName);
+
+ // write wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ createSequenceResponseElement.addChildElement(identifierQName).setValue(object.getIdentifier());
+
+ if (object.getExpires() != null)
+ {
+ // write wsrm:Expires
+ QName expiresQName = wsrmConstants.getExpiresQName();
+ createSequenceResponseElement.addChildElement(expiresQName).setValue(object.getExpires());
+ }
+
+ if (object.getIncompleteSequenceBehavior() != null)
+ {
+ // write wsrm:IncompleteSequenceBehavior
+ IncompleteSequenceBehavior behavior = object.getIncompleteSequenceBehavior();
+ QName behaviorQName = wsrmConstants.getIncompleteSequenceBehaviorQName();
+ SOAPElement behaviorElement = createSequenceResponseElement.addChildElement(behaviorQName);
+ behaviorElement.setValue(behavior.toString());
+ }
+
+ if (object.getAccept() != null)
+ {
+ // write wsrm:Accept
+ QName acceptQName = wsrmConstants.getAcceptQName();
+ SOAPElement acceptElement = createSequenceResponseElement.addChildElement(acceptQName);
+
+ // write wsrm:AcksTo
+ QName acksToQName = wsrmConstants.getAcksToQName();
+ QName addressQName = ADDRESSING_CONSTANTS.getAddressQName();
+ acceptElement.addChildElement(acksToQName)
+ .addChildElement(addressQName)
+ .setValue(object.getAccept().getAcksTo());
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to serialize RM message", se);
+ }
}
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java 2007-09-10 08:33:00 UTC (rev 4536)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java 2007-09-10 14:13:48 UTC (rev 4537)
@@ -21,7 +21,9 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
-import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.*;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPBody;
@@ -37,7 +39,6 @@
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.CreateSequence;
import org.jboss.ws.extensions.wsrm.spi.protocol.IncompleteSequenceBehavior;
-import org.w3c.dom.Element;
/**
* <b>CreateSequence</b> object de/serializer
@@ -70,19 +71,19 @@
// read wsrm:CreateSequence
QName createSequenceQName = wsrmConstants.getCreateSequenceQName();
- Element createSequenceElement = getRequiredElement(soapBody, createSequenceQName, "soap body");
+ SOAPElement createSequenceElement = getRequiredElement(soapBody, createSequenceQName, "soap body");
// read wsrm:AcksTo
QName acksToQName = wsrmConstants.getAcksToQName();
- Element acksToElement = getRequiredElement(createSequenceElement, acksToQName, createSequenceQName);
+ SOAPElement acksToElement = getRequiredElement(createSequenceElement, acksToQName, createSequenceQName);
QName addressQName = ADDRESSING_CONSTANTS.getAddressQName();
- Element acksToAddressElement = getRequiredElement(acksToElement, addressQName, acksToQName);
+ SOAPElement acksToAddressElement = getRequiredElement(acksToElement, addressQName, acksToQName);
String acksToAddress = getRequiredTextContent(acksToAddressElement, addressQName);
object.setAcksTo(acksToAddress);
// read wsrm:Expires
QName expiresQName = wsrmConstants.getExpiresQName();
- Element expiresElement = getOptionalElement(createSequenceElement, expiresQName, createSequenceQName);
+ SOAPElement expiresElement = getOptionalElement(createSequenceElement, expiresQName, createSequenceQName);
if (expiresElement != null)
{
String duration = getRequiredTextContent(expiresElement, expiresQName);
@@ -91,29 +92,29 @@
// read wsrm:Offer
QName offerQName = wsrmConstants.getOfferQName();
- Element offerElement = getOptionalElement(createSequenceElement, offerQName, createSequenceQName);
+ SOAPElement offerElement = getOptionalElement(createSequenceElement, offerQName, createSequenceQName);
if (offerElement != null)
{
CreateSequence.Offer offer = object.newOffer();
- // read wsrm:identifier
+ // read wsrm:Identifier
QName identifierQName = wsrmConstants.getIdentifierQName();
- Element identifierElement = getRequiredElement(offerElement, identifierQName, offerQName);
+ SOAPElement identifierElement = getRequiredElement(offerElement, identifierQName, offerQName);
String identifier = getRequiredTextContent(identifierElement, identifierQName);
offer.setIdentifier(identifier);
// read wsrm:Endpoint
QName endpointQName = wsrmConstants.getEndpointQName();
- Element endpointElement = getOptionalElement(offerElement, endpointQName, offerQName);
+ SOAPElement endpointElement = getOptionalElement(offerElement, endpointQName, offerQName);
if (endpointElement != null)
{
- Element endpointAddressElement = getRequiredElement(endpointElement, addressQName, endpointQName);
+ SOAPElement endpointAddressElement = getRequiredElement(endpointElement, addressQName, endpointQName);
String endpointAddress = getRequiredTextContent(endpointAddressElement, addressQName);
offer.setEndpoint(endpointAddress);
}
// read wsrm:Expires
- Element offerExpiresElement = getOptionalElement(offerElement, expiresQName, offerQName);
+ SOAPElement offerExpiresElement = getOptionalElement(offerElement, expiresQName, offerQName);
if (offerExpiresElement != null)
{
String duration = getRequiredTextContent(offerExpiresElement, expiresQName);
@@ -122,7 +123,7 @@
// read wsrm:IncompleteSequenceBehavior
QName behaviorQName = wsrmConstants.getIncompleteSequenceBehaviorQName();
- Element behaviorElement = getOptionalElement(offerElement, behaviorQName, offerQName);
+ SOAPElement behaviorElement = getOptionalElement(offerElement, behaviorQName, offerQName);
if (behaviorElement != null)
{
String behaviorString = getRequiredTextContent(behaviorElement, behaviorQName);
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java 2007-09-10 08:33:00 UTC (rev 4536)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java 2007-09-10 14:13:48 UTC (rev 4537)
@@ -1,3 +1,24 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
package org.jboss.ws.extensions.wsrm.common.serialization;
import java.util.List;
@@ -4,8 +25,13 @@
import javax.xml.namespace.QName;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.wsf.common.DOMUtils;
+import javax.xml.soap.SOAPElement;
import org.w3c.dom.Element;
+/**
+ * Serialization helper - TODO: optimize it to minimize usage of org.w3c.dom.Element class
+ * @author richard.opalka(a)jboss.com
+ */
final class SerializationHelper
{
@@ -14,7 +40,7 @@
// no instances
}
- public static String getRequiredTextContent(Element element, QName nodeName)
+ public static String getRequiredTextContent(SOAPElement element, QName nodeName)
{
if (!DOMUtils.hasTextChildNodesOnly(element))
throw new ReliableMessagingException(
@@ -33,24 +59,39 @@
return getRequiredElementFromList(list, requiredQName.getLocalPart(), context);
}
- public static Element getRequiredElement(Element element, QName requiredQName, QName contextQName)
+ private static Element getRequiredElement(Element element, QName requiredQName, QName contextQName)
{
List<Element> list = DOMUtils.getChildElementsAsList(element, requiredQName);
return getRequiredElementFromList(list, requiredQName, contextQName);
}
- public static Element getRequiredElement(Element element, QName requiredQName, String context)
+ public static SOAPElement getRequiredElement(SOAPElement element, QName requiredQName, QName contextQName)
{
+ return (SOAPElement)getRequiredElement((Element)element, requiredQName, contextQName);
+ }
+
+ private static Element getRequiredElement(Element element, QName requiredQName, String context)
+ {
List<Element> list = DOMUtils.getChildElementsAsList(element, requiredQName);
return getRequiredElementFromList(list, requiredQName, context);
}
- public static Element getOptionalElement(Element element, QName optionalQName, QName contextQName)
+ public static SOAPElement getRequiredElement(SOAPElement element, QName requiredQName, String context)
{
+ return (SOAPElement)getRequiredElement((Element)element, requiredQName, context);
+ }
+
+ private static Element getOptionalElement(Element element, QName optionalQName, QName contextQName)
+ {
List<Element> list = DOMUtils.getChildElementsAsList(element, optionalQName);
return getOptionalElementFromList(list, optionalQName, contextQName);
}
+ public static SOAPElement getOptionalElement(SOAPElement element, QName optionalQName, QName contextQName)
+ {
+ return (SOAPElement)getOptionalElement((Element)element, optionalQName, contextQName);
+ }
+
private static Element getOptionalElementFromList(List<Element> list, QName requiredQName, QName contextQName)
{
return getOptionalElementFromList(list, requiredQName.getLocalPart(), contextQName.getLocalPart());
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java 2007-09-10 08:33:00 UTC (rev 4536)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java 2007-09-10 14:13:48 UTC (rev 4537)
@@ -21,10 +21,18 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.ws.extensions.wsrm.spi.Constants;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.TerminateSequenceResponse;
@@ -49,7 +57,25 @@
public static void deserialize(TerminateSequenceResponse object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
+ Constants wsrmConstants = provider.getConstants();
+
+ // read wsrm:TerminateSequenceResponse
+ QName terminateSequenceResponseQName = wsrmConstants.getTerminateSequenceResponseQName();
+ SOAPElement terminateSequenceResponseElement = getRequiredElement(soapBody, terminateSequenceResponseQName, "soap body");
+
+ // read wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ SOAPElement identifierElement = getRequiredElement(terminateSequenceResponseElement, identifierQName, terminateSequenceResponseQName);
+ String identifier = getRequiredTextContent(identifierElement, identifierQName);
+ object.setIdentifier(identifier);
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to deserialize RM message", se);
+ }
}
/**
@@ -61,7 +87,26 @@
public static void serialize(TerminateSequenceResponse object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ Constants wsrmConstants = provider.getConstants();
+
+ // Add xmlns:wsrm declaration
+ soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(), wsrmConstants.getNamespaceURI());
+
+ // write wsrm:TerminateSequenceResponse
+ QName terminateSequenceResponseQName = wsrmConstants.getTerminateSequenceResponseQName();
+ SOAPElement terminateSequenceResponseElement = soapEnvelope.getBody().addChildElement(terminateSequenceResponseQName);
+
+ // write wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ terminateSequenceResponseElement.addChildElement(identifierQName).setValue(object.getIdentifier());
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to serialize RM message", se);
+ }
}
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java 2007-09-10 08:33:00 UTC (rev 4536)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java 2007-09-10 14:13:48 UTC (rev 4537)
@@ -21,10 +21,19 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getOptionalElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredElement;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.getRequiredTextContent;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.ws.extensions.wsrm.spi.Constants;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.TerminateSequence;
@@ -49,7 +58,40 @@
public static void deserialize(TerminateSequence object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
+ Constants wsrmConstants = provider.getConstants();
+
+ // read wsrm:TerminateSequence
+ QName terminateSequenceQName = wsrmConstants.getTerminateSequenceQName();
+ SOAPElement terminateSequenceElement = getRequiredElement(soapBody, terminateSequenceQName, "soap body");
+
+ // read wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ SOAPElement identifierElement = getRequiredElement(terminateSequenceElement, identifierQName, terminateSequenceQName);
+ String identifier = getRequiredTextContent(identifierElement, identifierQName);
+ object.setIdentifier(identifier);
+
+ // read wsrm:LastMsgNumber
+ QName lastMsgNumberQName = wsrmConstants.getLastMsgNumberQName();
+ SOAPElement lastMsgNumberElement = getOptionalElement(terminateSequenceElement, lastMsgNumberQName, terminateSequenceQName);
+ if (lastMsgNumberElement != null)
+ {
+ try
+ {
+ long lastMsgNumber = Long.valueOf(getRequiredTextContent(lastMsgNumberElement, lastMsgNumberQName));
+ object.setLastMsgNumber(lastMsgNumber);
+ } catch (NumberFormatException nfe)
+ {
+ throw new ReliableMessagingException("Unable to parse LastMsgNumber element text content", nfe);
+ }
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to deserialize RM message", se);
+ }
}
/**
@@ -61,7 +103,34 @@
public static void serialize(TerminateSequence object, Provider provider, SOAPMessage soapMessage)
throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ Constants wsrmConstants = provider.getConstants();
+
+ // Add xmlns:wsrm declaration
+ soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(), wsrmConstants.getNamespaceURI());
+
+ // write wsrm:TerminateSequence
+ QName terminateSequenceQName = wsrmConstants.getTerminateSequenceQName();
+ SOAPElement terminateSequenceElement = soapEnvelope.getBody().addChildElement(terminateSequenceQName);
+
+ // write wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ terminateSequenceElement.addChildElement(identifierQName).setValue(object.getIdentifier());
+
+ if (object.getLastMsgNumber() != 0)
+ {
+ // write wsrm:LastMsgNumber
+ QName lastMsgNumberQName = wsrmConstants.getLastMsgNumberQName();
+ SOAPElement lastMsgNumberElement = terminateSequenceElement.addChildElement(lastMsgNumberQName);
+ lastMsgNumberElement.setValue(String.valueOf(object.getLastMsgNumber()));
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to serialize RM message", se);
+ }
}
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/CreateSequenceResponse.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/CreateSequenceResponse.java 2007-09-10 08:33:00 UTC (rev 4536)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/CreateSequenceResponse.java 2007-09-10 14:13:48 UTC (rev 4537)
@@ -83,9 +83,9 @@
/**
* This element, if present, specifies the behavior that the destination will exhibit upon the closure or
* termination of an incomplete Sequence.
- * @param incompletSequenceBehaviour
+ * @param incompleteSequenceBehavior
*/
- void setIncompleteSequenceBehavior(IncompleteSequenceBehavior incompletSequenceBehaviour);
+ void setIncompleteSequenceBehavior(IncompleteSequenceBehavior incompleteSequenceBehavior);
/**
* Getter
16 years, 8 months
JBossWS SVN: r4536 - common/branches/ropalka/trunk/src/main/java/org/jboss/wsf/common.
by jbossws-commits@lists.jboss.org
Author: richard.opalka(a)jboss.com
Date: 2007-09-10 04:33:00 -0400 (Mon, 10 Sep 2007)
New Revision: 4536
Modified:
common/branches/ropalka/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java
Log:
adding new methods + minor refactoring
Modified: common/branches/ropalka/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java
===================================================================
--- common/branches/ropalka/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java 2007-09-10 08:31:54 UTC (rev 4535)
+++ common/branches/ropalka/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java 2007-09-10 08:33:00 UTC (rev 4536)
@@ -31,6 +31,7 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
@@ -401,6 +402,24 @@
}
}
+ /** True if the node has text child elements only
+ */
+ public static boolean hasTextChildNodesOnly(Node node)
+ {
+ NodeList nodeList = node.getChildNodes();
+ if (nodeList.getLength() == 0)
+ return false;
+
+ for (int i = 0; i < nodeList.getLength(); i++)
+ {
+ Node acksToChildNode = nodeList.item(i);
+ if (acksToChildNode.getNodeType() != Node.TEXT_NODE)
+ return false;
+ }
+
+ return true;
+ }
+
/** True if the node has child elements
*/
public static boolean hasChildElements(Node node)
@@ -494,10 +513,20 @@
{
return getChildElementsIntern(node, nodeName);
}
-
- private static Iterator getChildElementsIntern(Node node, QName nodeName)
+
+ public static List<Element> getChildElementsAsList(Node node, String nodeName)
{
- ArrayList list = new ArrayList();
+ return getChildElementsAsListIntern(node, new QName(nodeName));
+ }
+
+ public static List<Element> getChildElementsAsList(Node node, QName nodeName)
+ {
+ return getChildElementsAsListIntern(node, nodeName);
+ }
+
+ private static List<Element> getChildElementsAsListIntern(Node node, QName nodeName)
+ {
+ List<Element> list = new ArrayList<Element>();
NodeList nlist = node.getChildNodes();
for (int i = 0; i < nlist.getLength(); i++)
{
@@ -506,7 +535,7 @@
{
if (nodeName == null)
{
- list.add(child);
+ list.add((Element)child);
}
else
{
@@ -521,14 +550,19 @@
}
if (qname.equals(nodeName))
{
- list.add(child);
+ list.add((Element)child);
}
}
}
}
- return list.iterator();
+ return list;
}
+ private static Iterator getChildElementsIntern(Node node, QName nodeName)
+ {
+ return getChildElementsAsListIntern(node, nodeName).iterator();
+ }
+
/** Gets parent element or null if there is none
*/
public static Element getParentElement(Node node)
16 years, 8 months
JBossWS SVN: r4535 - stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization.
by jbossws-commits@lists.jboss.org
Author: richard.opalka(a)jboss.com
Date: 2007-09-10 04:31:54 -0400 (Mon, 10 Sep 2007)
New Revision: 4535
Modified:
stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java
Log:
implemented de/serialization - enabling the test
Modified: stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java 2007-09-10 08:27:49 UTC (rev 4534)
+++ stack/native/branches/ropalka/trunk/src/test/java/org/jboss/test/ws/jaxws/wsrm/deserialization/WSRMDeSerializationTestCase.java 2007-09-10 08:31:54 UTC (rev 4535)
@@ -34,7 +34,9 @@
+ " <wsrm:Expires>PT0S</wsrm:Expires>"
+ " <wsrm:Offer>"
+ " <wsrm:Identifier>http://Business456.com/RM/ABC</wsrm:Identifier>"
- + " <wsrm:Endpoint>http://Business456.com/serviceA/ASDF</wsrm:Endpoint>"
+ + " <wsrm:Endpoint>"
+ + " <wsa:Address>http://Business456.com/serviceA/ASDF</wsa:Address>"
+ + " </wsrm:Endpoint>"
+ " <wsrm:Expires>PT1S</wsrm:Expires>"
+ " <wsrm:IncompleteSequenceBehavior>DiscardEntireSequence</wsrm:IncompleteSequenceBehavior>"
+ " </wsrm:Offer>"
@@ -189,8 +191,6 @@
public void testCreateSequenceMessageDeserialization() throws Exception
{
- System.out.println("FIXME [JBWS-515] Provide an initial implementation for WS-ReliableMessaging");
- if (true) return;
CreateSequence createSequenceMessage = WSRM_200702_FACTORY.newCreateSequence();
createSequenceMessage.deserializeFrom(toSOAPMessage(CREATE_SEQUENCE_MESSAGE));
// perform assertion
@@ -205,8 +205,6 @@
public void testCreateSequenceMessageSerialization() throws Exception
{
- System.out.println("FIXME [JBWS-515] Provide an initial implementation for WS-ReliableMessaging");
- if (true) return;
CreateSequence createSequenceMessage = WSRM_200702_FACTORY.newCreateSequence();
// construct message
createSequenceMessage.setAcksTo("http://Business456.com/serviceA/789");
16 years, 8 months
JBossWS SVN: r4534 - in stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm: common and 5 other directories.
by jbossws-commits@lists.jboss.org
Author: richard.opalka(a)jboss.com
Date: 2007-09-10 04:27:49 -0400 (Mon, 10 Sep 2007)
New Revision: 4534
Added:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/ReliableMessagingException.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java
Modified:
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/ConstantsImpl.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AbstractSerializable.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceAcknowledgementSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceFaultSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationRepository.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spec200502/ProviderImpl.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spec200702/ProviderImpl.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/Constants.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/IncompleteSequenceBehavior.java
stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/Serializable.java
Log:
adding RM exception + implemented CreateSequence de/serializer
Added: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/ReliableMessagingException.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/ReliableMessagingException.java (rev 0)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/ReliableMessagingException.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -0,0 +1,53 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ws.extensions.wsrm;
+
+import javax.xml.ws.WebServiceException;
+
+/**
+ * RM exception heavily used by RM framework
+ * @author richard.opalka(a)jboss.com
+ */
+public class ReliableMessagingException extends WebServiceException
+{
+
+ public ReliableMessagingException()
+ {
+ super();
+ }
+
+ public ReliableMessagingException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ public ReliableMessagingException(String message)
+ {
+ super(message);
+ }
+
+ public ReliableMessagingException(Throwable cause)
+ {
+ super(cause);
+ }
+
+}
Property changes on: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/ReliableMessagingException.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/ConstantsImpl.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/ConstantsImpl.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/ConstantsImpl.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -32,9 +32,9 @@
*/
public final class ConstantsImpl implements Constants
{
- // default namespace prefix
- private static final String WSRM_PREFIX = "wsrm";
- // heavily used constants
+
+ private final String prefix;
+ private final String namespaceURI;
private final QName acceptQName;
private final QName ackRequestedQName;
private final QName acknowledgementRangeQName;
@@ -65,48 +65,63 @@
private final QName terminateSequenceResponseQName;
private final QName upperQName;
- public ConstantsImpl(String namespace)
+ public ConstantsImpl(String prefix, String namespaceURI)
{
- if ((namespace == null) || (namespace.trim().equals("")))
- throw new IllegalArgumentException();
-
- acceptQName = new QName(WSRM_PREFIX, namespace, "Accept");
- ackRequestedQName = new QName(WSRM_PREFIX, namespace, "AckRequested");
- acknowledgementRangeQName = new QName(WSRM_PREFIX, namespace, "AcknowledgementRange");
- acksToQName = new QName(WSRM_PREFIX, namespace, "AcksTo");
- closeSequenceQName = new QName(WSRM_PREFIX, namespace, "CloseSequence");
- closeSequenceResponseQName = new QName(WSRM_PREFIX, namespace, "CloseSequenceResponse");
- createSequenceQName = new QName(WSRM_PREFIX, namespace, "CreateSequence");
- createSequenceResponseQName = new QName(WSRM_PREFIX, namespace, "CreateSequenceResponse");
- detailQName = new QName(WSRM_PREFIX, namespace, "Detail");
- endpointQName = new QName(WSRM_PREFIX, namespace, "Endpoint");
- expiresQName = new QName(WSRM_PREFIX, namespace, "Expires");
- faultCodeQName = new QName(WSRM_PREFIX, namespace, "FaultCode");
- finalQName = new QName(WSRM_PREFIX, namespace, "Final");
- identifierQName = new QName(WSRM_PREFIX, namespace, "Identifier");
- incompleteSequenceBehaviorQName = new QName(WSRM_PREFIX, namespace, "IncompleteSequenceBehavior");
- lastMessageNumberQName = new QName(WSRM_PREFIX, namespace, "LastMessageNumber");
- lastMessageQName = new QName(WSRM_PREFIX, namespace, "LastMessage");
- lastMsgNumberQName = new QName(WSRM_PREFIX, namespace, "LastMsgNumber");
- lowerQName = new QName(WSRM_PREFIX, namespace, "Lower");
- messageNumberQName = new QName(WSRM_PREFIX, namespace, "MessageNumber");
- nackQName = new QName(WSRM_PREFIX, namespace, "Nack");
- noneQName = new QName(WSRM_PREFIX, namespace, "None");
- offerQName = new QName(WSRM_PREFIX, namespace, "Offer");
- sequenceAcknowledgementQName = new QName(WSRM_PREFIX, namespace, "SequenceAcknowledgement");
- sequenceFaultQName = new QName(WSRM_PREFIX, namespace, "SequenceFault");
- equenceQName = new QName(WSRM_PREFIX, namespace, "Sequence");
- terminateSequenceQName = new QName(WSRM_PREFIX, namespace, "TerminateSequence");
- terminateSequenceResponseQName = new QName(WSRM_PREFIX, namespace, "TerminateSequenceResponse");
- upperQName = new QName(WSRM_PREFIX, namespace, "Upper");
+ this.prefix = prefix;
+ this.namespaceURI = namespaceURI;
+ this.acceptQName = new QName(namespaceURI, "Accept", prefix);
+ this.ackRequestedQName = new QName(namespaceURI, "AckRequested", prefix);
+ this.acknowledgementRangeQName = new QName(namespaceURI, "AcknowledgementRange", prefix);
+ this.acksToQName = new QName(namespaceURI, "AcksTo", prefix);
+ this.closeSequenceQName = new QName(namespaceURI, "CloseSequence", prefix);
+ this.closeSequenceResponseQName = new QName(namespaceURI, "CloseSequenceResponse", prefix);
+ this.createSequenceQName = new QName(namespaceURI, "CreateSequence", prefix);
+ this.createSequenceResponseQName = new QName(namespaceURI, "CreateSequenceResponse", prefix);
+ this.detailQName = new QName(namespaceURI, "Detail", prefix);
+ this.endpointQName = new QName(namespaceURI, "Endpoint", prefix);
+ this.expiresQName = new QName(namespaceURI, "Expires", prefix);
+ this.faultCodeQName = new QName(namespaceURI, "FaultCode", prefix);
+ this.finalQName = new QName(namespaceURI, "Final", prefix);
+ this.identifierQName = new QName(namespaceURI, "Identifier", prefix);
+ this.incompleteSequenceBehaviorQName = new QName(namespaceURI, "IncompleteSequenceBehavior", prefix);
+ this.lastMessageNumberQName = new QName(namespaceURI, "LastMessageNumber", prefix);
+ this.lastMessageQName = new QName(namespaceURI, "LastMessage", prefix);
+ this.lastMsgNumberQName = new QName(namespaceURI, "LastMsgNumber", prefix);
+ this.lowerQName = new QName(namespaceURI, "Lower", prefix);
+ this.messageNumberQName = new QName(namespaceURI, "MessageNumber", prefix);
+ this.nackQName = new QName(namespaceURI, "Nack", prefix);
+ this.noneQName = new QName(namespaceURI, "None", prefix);
+ this.offerQName = new QName(namespaceURI, "Offer", prefix);
+ this.sequenceAcknowledgementQName = new QName(namespaceURI, "SequenceAcknowledgement", prefix);
+ this.sequenceFaultQName = new QName(namespaceURI, "SequenceFault", prefix);
+ this.equenceQName = new QName(namespaceURI, "Sequence", prefix);
+ this.terminateSequenceQName = new QName(namespaceURI, "TerminateSequence", prefix);
+ this.terminateSequenceResponseQName = new QName(namespaceURI, "TerminateSequenceResponse", prefix);
+ this.upperQName = new QName(namespaceURI, "Upper", prefix);
}
/**
+ * @see org.jboss.ws.extensions.wsrm.spi.Constants#getPrefix()
+ */
+ public final String getPrefix()
+ {
+ return this.prefix;
+ }
+
+ /**
+ * @see org.jboss.ws.extensions.wsrm.spi.Constants#getNamespaceURI()
+ */
+ public final String getNamespaceURI()
+ {
+ return this.namespaceURI;
+ }
+
+ /**
* @see org.jboss.ws.extensions.wsrm.spi.Constants#getAcceptQName()
*/
public final QName getAcceptQName()
{
- return acceptQName;
+ return this.acceptQName;
}
/**
@@ -114,7 +129,7 @@
*/
public final QName getAckRequestedQName()
{
- return ackRequestedQName;
+ return this.ackRequestedQName;
}
/**
@@ -122,7 +137,7 @@
*/
public final QName getAcknowledgementRangeQName()
{
- return acknowledgementRangeQName;
+ return this.acknowledgementRangeQName;
}
/**
@@ -130,7 +145,7 @@
*/
public final QName getAcksToQName()
{
- return acksToQName;
+ return this.acksToQName;
}
/**
@@ -138,7 +153,7 @@
*/
public final QName getCloseSequenceQName()
{
- return closeSequenceQName;
+ return this.closeSequenceQName;
}
/**
@@ -146,7 +161,7 @@
*/
public final QName getCloseSequenceResponseQName()
{
- return closeSequenceResponseQName;
+ return this.closeSequenceResponseQName;
}
/**
@@ -154,7 +169,7 @@
*/
public final QName getCreateSequenceQName()
{
- return createSequenceQName;
+ return this.createSequenceQName;
}
/**
@@ -162,7 +177,7 @@
*/
public final QName getCreateSequenceResponseQName()
{
- return createSequenceResponseQName;
+ return this.createSequenceResponseQName;
}
/**
@@ -170,7 +185,7 @@
*/
public final QName getDetailQName()
{
- return detailQName;
+ return this.detailQName;
}
/**
@@ -178,7 +193,7 @@
*/
public final QName getEndpointQName()
{
- return endpointQName;
+ return this.endpointQName;
}
/**
@@ -186,7 +201,7 @@
*/
public final QName getExpiresQName()
{
- return expiresQName;
+ return this.expiresQName;
}
/**
@@ -194,7 +209,7 @@
*/
public final QName getFaultCodeQName()
{
- return faultCodeQName;
+ return this.faultCodeQName;
}
/**
@@ -202,7 +217,7 @@
*/
public final QName getFinalQName()
{
- return finalQName;
+ return this.finalQName;
}
/**
@@ -210,7 +225,7 @@
*/
public final QName getIdentifierQName()
{
- return identifierQName;
+ return this.identifierQName;
}
/**
@@ -218,7 +233,7 @@
*/
public final QName getIncompleteSequenceBehaviorQName()
{
- return incompleteSequenceBehaviorQName;
+ return this.incompleteSequenceBehaviorQName;
}
/**
@@ -226,7 +241,7 @@
*/
public final QName getLastMessageNumberQName()
{
- return lastMessageNumberQName;
+ return this.lastMessageNumberQName;
}
/**
@@ -234,7 +249,7 @@
*/
public final QName getLastMessageQName()
{
- return lastMessageQName;
+ return this.lastMessageQName;
}
/**
@@ -242,7 +257,7 @@
*/
public final QName getLastMsgNumberQName()
{
- return lastMsgNumberQName;
+ return this.lastMsgNumberQName;
}
/**
@@ -250,7 +265,7 @@
*/
public final QName getLowerQName()
{
- return lowerQName;
+ return this.lowerQName;
}
/**
@@ -258,7 +273,7 @@
*/
public final QName getMessageNumberQName()
{
- return messageNumberQName;
+ return this.messageNumberQName;
}
/**
@@ -266,7 +281,7 @@
*/
public final QName getNackQName()
{
- return nackQName;
+ return this.nackQName;
}
/**
@@ -274,7 +289,7 @@
*/
public final QName getNoneQName()
{
- return noneQName;
+ return this.noneQName;
}
/**
@@ -282,7 +297,7 @@
*/
public final QName getOfferQName()
{
- return offerQName;
+ return this.offerQName;
}
/**
@@ -290,7 +305,7 @@
*/
public final QName getSequenceAcknowledgementQName()
{
- return sequenceAcknowledgementQName;
+ return this.sequenceAcknowledgementQName;
}
/**
@@ -298,7 +313,7 @@
*/
public final QName getSequenceFaultQName()
{
- return sequenceFaultQName;
+ return this.sequenceFaultQName;
}
/**
@@ -306,7 +321,7 @@
*/
public final QName getSequenceQName()
{
- return equenceQName;
+ return this.equenceQName;
}
/**
@@ -314,7 +329,7 @@
*/
public final QName getTerminateSequenceQName()
{
- return terminateSequenceQName;
+ return this.terminateSequenceQName;
}
/**
@@ -322,7 +337,7 @@
*/
public final QName getTerminateSequenceResponseQName()
{
- return terminateSequenceResponseQName;
+ return this.terminateSequenceResponseQName;
}
/**
@@ -330,7 +345,7 @@
*/
public final QName getUpperQName()
{
- return upperQName;
+ return this.upperQName;
}
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AbstractSerializable.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AbstractSerializable.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AbstractSerializable.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -22,6 +22,8 @@
package org.jboss.ws.extensions.wsrm.common.serialization;
import javax.xml.soap.SOAPMessage;
+
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.Serializable;
@@ -41,7 +43,7 @@
/*
* @see org.jboss.ws.extensions.wsrm.spi.protocol.Serializable#deserializeFrom(javax.xml.soap.SOAPMessage)
*/
- public final void deserializeFrom(SOAPMessage soapMessage)
+ public final void deserializeFrom(SOAPMessage soapMessage) throws ReliableMessagingException
{
SerializationRepository.deserialize(this, soapMessage);
validate(); // finally ensure that object is in correct state
@@ -50,7 +52,7 @@
/*
* @see org.jboss.ws.extensions.wsrm.spi.protocol.Serializable#serializeTo(javax.xml.soap.SOAPMessage)
*/
- public final void serializeTo(SOAPMessage soapMessage)
+ public final void serializeTo(SOAPMessage soapMessage) throws ReliableMessagingException
{
validate(); // ensure object is in correct state first
SerializationRepository.serialize(this, soapMessage);
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/AckRequestedSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -24,6 +24,7 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.AckRequested;
@@ -46,6 +47,7 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(AckRequested object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
@@ -57,6 +59,7 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(AckRequested object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceResponseSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -24,6 +24,7 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.CloseSequenceResponse;
@@ -46,6 +47,7 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(CloseSequenceResponse object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
@@ -57,6 +59,7 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(CloseSequenceResponse object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CloseSequenceSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -24,6 +24,7 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.CloseSequence;
@@ -46,6 +47,7 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(CloseSequence object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
@@ -57,6 +59,7 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(CloseSequence object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceResponseSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -24,6 +24,7 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.CreateSequenceResponse;
@@ -46,6 +47,7 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(CreateSequenceResponse object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
@@ -57,6 +59,7 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(CreateSequenceResponse object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/CreateSequenceSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -21,11 +21,23 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import static org.jboss.ws.extensions.wsrm.common.serialization.SerializationHelper.*;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.addressing.AddressingBuilder;
+import javax.xml.ws.addressing.AddressingConstants;
-import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.ws.extensions.wsrm.spi.Constants;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.CreateSequence;
+import org.jboss.ws.extensions.wsrm.spi.protocol.IncompleteSequenceBehavior;
+import org.w3c.dom.Element;
/**
* <b>CreateSequence</b> object de/serializer
@@ -34,6 +46,9 @@
final class CreateSequenceSerializer
{
+ private static final AddressingConstants ADDRESSING_CONSTANTS =
+ AddressingBuilder.getAddressingBuilder().newAddressingConstants();
+
private CreateSequenceSerializer()
{
// no instances
@@ -46,10 +61,84 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(CreateSequence object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPBody soapBody = soapMessage.getSOAPPart().getEnvelope().getBody();
+ Constants wsrmConstants = provider.getConstants();
+
+ // read wsrm:CreateSequence
+ QName createSequenceQName = wsrmConstants.getCreateSequenceQName();
+ Element createSequenceElement = getRequiredElement(soapBody, createSequenceQName, "soap body");
+
+ // read wsrm:AcksTo
+ QName acksToQName = wsrmConstants.getAcksToQName();
+ Element acksToElement = getRequiredElement(createSequenceElement, acksToQName, createSequenceQName);
+ QName addressQName = ADDRESSING_CONSTANTS.getAddressQName();
+ Element acksToAddressElement = getRequiredElement(acksToElement, addressQName, acksToQName);
+ String acksToAddress = getRequiredTextContent(acksToAddressElement, addressQName);
+ object.setAcksTo(acksToAddress);
+
+ // read wsrm:Expires
+ QName expiresQName = wsrmConstants.getExpiresQName();
+ Element expiresElement = getOptionalElement(createSequenceElement, expiresQName, createSequenceQName);
+ if (expiresElement != null)
+ {
+ String duration = getRequiredTextContent(expiresElement, expiresQName);
+ object.setExpires(duration);
+ }
+
+ // read wsrm:Offer
+ QName offerQName = wsrmConstants.getOfferQName();
+ Element offerElement = getOptionalElement(createSequenceElement, offerQName, createSequenceQName);
+ if (offerElement != null)
+ {
+ CreateSequence.Offer offer = object.newOffer();
+
+ // read wsrm:identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ Element identifierElement = getRequiredElement(offerElement, identifierQName, offerQName);
+ String identifier = getRequiredTextContent(identifierElement, identifierQName);
+ offer.setIdentifier(identifier);
+
+ // read wsrm:Endpoint
+ QName endpointQName = wsrmConstants.getEndpointQName();
+ Element endpointElement = getOptionalElement(offerElement, endpointQName, offerQName);
+ if (endpointElement != null)
+ {
+ Element endpointAddressElement = getRequiredElement(endpointElement, addressQName, endpointQName);
+ String endpointAddress = getRequiredTextContent(endpointAddressElement, addressQName);
+ offer.setEndpoint(endpointAddress);
+ }
+
+ // read wsrm:Expires
+ Element offerExpiresElement = getOptionalElement(offerElement, expiresQName, offerQName);
+ if (offerExpiresElement != null)
+ {
+ String duration = getRequiredTextContent(offerExpiresElement, expiresQName);
+ offer.setExpires(duration);
+ }
+
+ // read wsrm:IncompleteSequenceBehavior
+ QName behaviorQName = wsrmConstants.getIncompleteSequenceBehaviorQName();
+ Element behaviorElement = getOptionalElement(offerElement, behaviorQName, offerQName);
+ if (behaviorElement != null)
+ {
+ String behaviorString = getRequiredTextContent(behaviorElement, behaviorQName);
+ offer.setIncompleteSequenceBehavior(IncompleteSequenceBehavior.getValue(behaviorString));
+ }
+
+ // set created offer
+ object.setOffer(offer);
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to deserialize RM message", se);
+ }
}
-
+
/**
* Serialize <b>CreateSequence</b> using <b>provider</b> to the <b>soapMessage</b>
* @param object to be serialized
@@ -57,8 +146,76 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(CreateSequence object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
- throw new NotImplementedException();
+ try
+ {
+ SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
+ Constants wsrmConstants = provider.getConstants();
+
+ // Add xmlns:wsrm declaration
+ soapEnvelope.addNamespaceDeclaration(wsrmConstants.getPrefix(), wsrmConstants.getNamespaceURI());
+
+ // write wsrm:CreateSequence
+ QName createSequenceQName = wsrmConstants.getCreateSequenceQName();
+ SOAPElement createSequenceElement = soapEnvelope.getBody().addChildElement(createSequenceQName);
+
+ // write wsrm:AcksTo
+ QName acksToQName = wsrmConstants.getAcksToQName();
+ QName addressQName = ADDRESSING_CONSTANTS.getAddressQName();
+ createSequenceElement.addChildElement(acksToQName)
+ .addChildElement(addressQName)
+ .setValue(object.getAcksTo());
+
+ if (object.getExpires() != null)
+ {
+ // write wsrm:Expires
+ QName expiresQName = wsrmConstants.getExpiresQName();
+ createSequenceElement.addChildElement(expiresQName).setValue(object.getExpires());
+ }
+
+ if (object.getOffer() != null)
+ {
+ CreateSequence.Offer offer = object.getOffer();
+
+ // write wsrm:Offer
+ QName offerQName = wsrmConstants.getOfferQName();
+ SOAPElement offerElement = createSequenceElement.addChildElement(offerQName);
+
+ // write wsrm:Identifier
+ QName identifierQName = wsrmConstants.getIdentifierQName();
+ offerElement.addChildElement(identifierQName).setValue(offer.getIdentifier());
+
+ if (offer.getEndpoint() != null)
+ {
+ // write wsrm:Endpoint
+ QName endpointQName = wsrmConstants.getEndpointQName();
+ offerElement.addChildElement(endpointQName)
+ .addChildElement(addressQName)
+ .setValue(offer.getEndpoint());
+ }
+
+ if (offer.getExpires() != null)
+ {
+ // write wsrm:Expires
+ QName expiresQName = wsrmConstants.getExpiresQName();
+ offerElement.addChildElement(expiresQName).setValue(offer.getExpires());
+ }
+
+ if (offer.getIncompleteSequenceBehavior() != null)
+ {
+ // write wsrm:IncompleteSequenceBehavior
+ IncompleteSequenceBehavior behavior = offer.getIncompleteSequenceBehavior();
+ QName behaviorQName = wsrmConstants.getIncompleteSequenceBehaviorQName();
+ SOAPElement behaviorElement = offerElement.addChildElement(behaviorQName);
+ behaviorElement.setValue(behavior.toString());
+ }
+ }
+ }
+ catch (SOAPException se)
+ {
+ throw new ReliableMessagingException("Unable to serialize RM message", se);
+ }
}
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceAcknowledgementSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceAcknowledgementSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceAcknowledgementSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -24,6 +24,7 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.SequenceAcknowledgement;
@@ -46,6 +47,7 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(SequenceAcknowledgement object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
@@ -57,6 +59,7 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(SequenceAcknowledgement object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceFaultSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceFaultSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceFaultSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -24,6 +24,7 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.SequenceFault;
@@ -46,6 +47,7 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(SequenceFault object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
@@ -57,6 +59,7 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(SequenceFault object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SequenceSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -24,6 +24,7 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.Sequence;
@@ -46,6 +47,7 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(Sequence object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
@@ -57,6 +59,7 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(Sequence object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
Added: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java (rev 0)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -0,0 +1,81 @@
+package org.jboss.ws.extensions.wsrm.common.serialization;
+
+import java.util.List;
+import javax.xml.namespace.QName;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+import org.jboss.wsf.common.DOMUtils;
+import org.w3c.dom.Element;
+
+final class SerializationHelper
+{
+
+ private SerializationHelper()
+ {
+ // no instances
+ }
+
+ public static String getRequiredTextContent(Element element, QName nodeName)
+ {
+ if (!DOMUtils.hasTextChildNodesOnly(element))
+ throw new ReliableMessagingException(
+ "Only text content is allowed for element " + nodeName.getLocalPart());
+
+ return DOMUtils.getTextContent(element).trim();
+ }
+
+ private static Element getRequiredElementFromList(List<Element> list, QName requiredQName, QName contextQName)
+ {
+ return getRequiredElementFromList(list, requiredQName.getLocalPart(), contextQName.getLocalPart());
+ }
+
+ private static Element getRequiredElementFromList(List<Element> list, QName requiredQName, String context)
+ {
+ return getRequiredElementFromList(list, requiredQName.getLocalPart(), context);
+ }
+
+ public static Element getRequiredElement(Element element, QName requiredQName, QName contextQName)
+ {
+ List<Element> list = DOMUtils.getChildElementsAsList(element, requiredQName);
+ return getRequiredElementFromList(list, requiredQName, contextQName);
+ }
+
+ public static Element getRequiredElement(Element element, QName requiredQName, String context)
+ {
+ List<Element> list = DOMUtils.getChildElementsAsList(element, requiredQName);
+ return getRequiredElementFromList(list, requiredQName, context);
+ }
+
+ public static Element getOptionalElement(Element element, QName optionalQName, QName contextQName)
+ {
+ List<Element> list = DOMUtils.getChildElementsAsList(element, optionalQName);
+ return getOptionalElementFromList(list, optionalQName, contextQName);
+ }
+
+ private static Element getOptionalElementFromList(List<Element> list, QName requiredQName, QName contextQName)
+ {
+ return getOptionalElementFromList(list, requiredQName.getLocalPart(), contextQName.getLocalPart());
+ }
+
+ private static Element getOptionalElementFromList(List<Element> list, String required, String context)
+ {
+ if (list.size() > 1)
+ throw new ReliableMessagingException(
+ "At most one " + required + " element can be present in " + context + " element");
+
+ return (list.size() == 1) ? list.get(0) : null;
+ }
+
+ private static Element getRequiredElementFromList(List<Element> list, String required, String context)
+ {
+ if (list.size() < 1)
+ throw new ReliableMessagingException(
+ "Required " + required + " element not found in " + context + " element");
+
+ if (list.size() > 1)
+ throw new ReliableMessagingException(
+ "Only one " + required + " element can be present in " + context + " element");
+
+ return list.get(0);
+ }
+
+}
Property changes on: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationHelper.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationRepository.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationRepository.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/SerializationRepository.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -21,6 +21,7 @@
*/
package org.jboss.ws.extensions.wsrm.common.serialization;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.AckRequested;
import org.jboss.ws.extensions.wsrm.spi.protocol.CloseSequence;
@@ -46,7 +47,7 @@
// forbidden inheritance
}
- public static void serialize(AbstractSerializable object, SOAPMessage soapMessage)
+ public static void serialize(AbstractSerializable object, SOAPMessage soapMessage) throws ReliableMessagingException
{
Provider provider = object.getProvider();
@@ -80,11 +81,9 @@
if (object instanceof TerminateSequenceResponse)
TerminateSequenceResponseSerializer
.serialize((TerminateSequenceResponse)object, provider, soapMessage);
-
- throw new IllegalArgumentException();
}
- public static void deserialize(AbstractSerializable object, SOAPMessage soapMessage)
+ public static void deserialize(AbstractSerializable object, SOAPMessage soapMessage) throws ReliableMessagingException
{
Provider provider = object.getProvider();
@@ -118,8 +117,6 @@
if (object instanceof TerminateSequenceResponse)
TerminateSequenceResponseSerializer
.deserialize((TerminateSequenceResponse)object, provider, soapMessage);
-
- throw new IllegalArgumentException();
}
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceResponseSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -24,6 +24,7 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.TerminateSequenceResponse;
@@ -46,6 +47,7 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(TerminateSequenceResponse object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
@@ -57,6 +59,7 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(TerminateSequenceResponse object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/common/serialization/TerminateSequenceSerializer.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -24,6 +24,7 @@
import javax.xml.soap.SOAPMessage;
import org.jboss.util.NotImplementedException;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
import org.jboss.ws.extensions.wsrm.spi.Provider;
import org.jboss.ws.extensions.wsrm.spi.protocol.TerminateSequence;
@@ -46,6 +47,7 @@
* @param soapMessage soap message from which object will be deserialized
*/
public static void deserialize(TerminateSequence object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
@@ -57,6 +59,7 @@
* @param soapMessage soap message to which object will be serialized
*/
public static void serialize(TerminateSequence object, Provider provider, SOAPMessage soapMessage)
+ throws ReliableMessagingException
{
throw new NotImplementedException();
}
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spec200502/ProviderImpl.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spec200502/ProviderImpl.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spec200502/ProviderImpl.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -34,7 +34,7 @@
{
private static final String IMPLEMENTATION_VERSION = "http://schemas.xmlsoap.org/ws/2005/02/rm";
- private static final Constants CONSTANTS = new ConstantsImpl(IMPLEMENTATION_VERSION);
+ private static final Constants CONSTANTS = new ConstantsImpl("wsrm10", IMPLEMENTATION_VERSION);
private static final Provider INSTANCE = new ProviderImpl();
private ProviderImpl()
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spec200702/ProviderImpl.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spec200702/ProviderImpl.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spec200702/ProviderImpl.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -34,7 +34,7 @@
{
private static final String IMPLEMENTATION_VERSION = "http://docs.oasis-open.org/ws-rx/wsrm/200702";
- private static final Constants CONSTANTS = new ConstantsImpl(IMPLEMENTATION_VERSION);
+ private static final Constants CONSTANTS = new ConstantsImpl("wsrm11",IMPLEMENTATION_VERSION);
private static final Provider INSTANCE = new ProviderImpl();
private ProviderImpl()
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/Constants.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/Constants.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/Constants.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -33,6 +33,18 @@
/**
* getter
+ * @return wsrm <b>prefix</b>
+ */
+ String getPrefix();
+
+ /**
+ * getter
+ * @return wsrm <b>namespace</b>
+ */
+ String getNamespaceURI();
+
+ /**
+ * getter
* @return <b>LastMessage</b> QName
*/
QName getLastMessageQName();
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/IncompleteSequenceBehavior.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/IncompleteSequenceBehavior.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/IncompleteSequenceBehavior.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -45,17 +45,43 @@
* A value of <b>"DiscardEntireSequence"</b> indicates that the entire Sequence MUST be discarded if the
* Sequence is closed, or terminated, when there are one or more gaps in the final <b>SequenceAcknowledgement</b>.
*/
- DISCARD_ENTIRE_SEQUENCE,
+ DISCARD_ENTIRE_SEQUENCE("DiscardEntireSequence"),
/**
* A value of <b>"DiscardFollowingFirstGap"</b> indicates that messages in the Sequence beyond the first
* gap MUST be discarded when there are one or more gaps in the final <b>SequenceAcknowledgement</b>.
*/
- DISCARD_FOLLOWING_FIRST_GAP,
+ DISCARD_FOLLOWING_FIRST_GAP("DiscardFollowingFirstGap"),
/**
* The default value of <b>"NoDiscard"</b> indicates that no acknowledged messages in the Sequence will
* be discarded.
*/
- NO_DISCARD
+ NO_DISCARD("NoDiscard");
+
+ private final String value;
+
+ IncompleteSequenceBehavior(String value)
+ {
+ this.value = value;
+ }
+
+ public String toString()
+ {
+ return value;
+ }
+
+ /**
+ * Returns this enum instance if value string matches, <b>null</b> otherwise
+ * @param stringValue value in the form of string
+ * @return enum or null if string not recognized
+ */
+ public static IncompleteSequenceBehavior getValue(String stringValue)
+ {
+ if (DISCARD_ENTIRE_SEQUENCE.toString().equals(stringValue)) return DISCARD_ENTIRE_SEQUENCE;
+ if (DISCARD_FOLLOWING_FIRST_GAP.toString().equals(stringValue)) return DISCARD_FOLLOWING_FIRST_GAP;
+ if (NO_DISCARD.toString().equals(stringValue)) return NO_DISCARD;
+ return null;
+ }
+
}
\ No newline at end of file
Modified: stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/Serializable.java
===================================================================
--- stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/Serializable.java 2007-09-07 13:01:33 UTC (rev 4533)
+++ stack/native/branches/ropalka/trunk/src/main/java/org/jboss/ws/extensions/wsrm/spi/protocol/Serializable.java 2007-09-10 08:27:49 UTC (rev 4534)
@@ -23,6 +23,8 @@
import javax.xml.soap.SOAPMessage;
+import org.jboss.ws.extensions.wsrm.ReliableMessagingException;
+
/**
* This interface identifies classes that are de/serializable from/to SOAP messages
*
@@ -35,13 +37,13 @@
* Serialize object instance to SOAP message
* @param soapMessage
*/
- void serializeTo(SOAPMessage soapMessage);
+ void serializeTo(SOAPMessage soapMessage) throws ReliableMessagingException;
/**
* Deserialize object instance from SOAP message
* @param soapMessage
*/
- void deserializeFrom(SOAPMessage soapMessage);
+ void deserializeFrom(SOAPMessage soapMessage) throws ReliableMessagingException;
/**
* Validate object state if everything is all right
16 years, 8 months
JBossWS SVN: r4533 - in legacy/branches/jbossws-1.2.1.GA_CP: integration-jboss42/src/java/org/jboss/ws/integration/jboss42 and 4 other directories.
by jbossws-commits@lists.jboss.org
Author: heiko.braun(a)jboss.com
Date: 2007-09-07 09:01:33 -0400 (Fri, 07 Sep 2007)
New Revision: 4533
Modified:
legacy/branches/jbossws-1.2.1.GA_CP/build/version.properties
legacy/branches/jbossws-1.2.1.GA_CP/integration-jboss42/src/java/org/jboss/ws/integration/jboss42/ServiceEndpointInterceptor.java
legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/core/CommonSOAPBinding.java
legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/HandlerRegistryImpl.java
legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/UnifiedHandlerMetaData.java
legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/metadata/umdm/HandlerMetaData.java
Log:
JBCTS-647: webservices handlerinfo test failures, JBCTS-623: Handler message change failure, align dependencies with JBAPP_CP01
Modified: legacy/branches/jbossws-1.2.1.GA_CP/build/version.properties
===================================================================
--- legacy/branches/jbossws-1.2.1.GA_CP/build/version.properties 2007-09-07 12:56:24 UTC (rev 4532)
+++ legacy/branches/jbossws-1.2.1.GA_CP/build/version.properties 2007-09-07 13:01:33 UTC (rev 4533)
@@ -5,8 +5,8 @@
specification.vendor=JBoss (http://www.jboss.org)
specification.version=jbossws-1.2
-version.id=1.2.1.GA
-repository.id=1.2.1.GA
+version.id=1.2.1.GA_CP01
+repository.id=1.2.1.GA_CP01
implementation.title=JBoss Web Services (JBossWS)
implementation.url=http://www.jboss.org/products/jbossws
@@ -16,7 +16,7 @@
# Thirdparty library versions that are referenced in component-info.xml
apache-xmlsec=1.3.0
ibm-wsdl4j=1.6.2
-javassist=3.5.0.CR1
+javassist=3.5.0.GA
jbossws-wsconsume-impl=2.0.0
jbpm-bpel=1.1.0.Beta5
sun-jaxb=2.0.3jboss
@@ -33,12 +33,12 @@
jboss-remoting-jboss50=2.2.0.GA
# JBossAS-4.2
-jboss-jbossxb-jboss42=1.0.0.CR10
+jboss-jbossxb-jboss42=1.0.0.GA_CP01
jboss-microcontainer-jboss42=1.0.2
-jboss-remoting-jboss42=2.0.0.GA
+jboss-remoting-jboss42=2.2.2.GA
# JBossAS-4.0
-jboss-jbossxb-jboss40=1.0.0.CR10
+jboss-jbossxb-jboss40=1.0.0.GA_CP01
jboss-microcontainer-jboss40=1.0.2
jboss-remoting-jboss40=1.4.3.GA
Modified: legacy/branches/jbossws-1.2.1.GA_CP/integration-jboss42/src/java/org/jboss/ws/integration/jboss42/ServiceEndpointInterceptor.java
===================================================================
--- legacy/branches/jbossws-1.2.1.GA_CP/integration-jboss42/src/java/org/jboss/ws/integration/jboss42/ServiceEndpointInterceptor.java 2007-09-07 12:56:24 UTC (rev 4532)
+++ legacy/branches/jbossws-1.2.1.GA_CP/integration-jboss42/src/java/org/jboss/ws/integration/jboss42/ServiceEndpointInterceptor.java 2007-09-07 13:01:33 UTC (rev 4533)
@@ -24,6 +24,7 @@
// $Id$
import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPEnvelope;
import org.jboss.ejb.plugins.AbstractInterceptor;
import org.jboss.invocation.Invocation;
@@ -34,10 +35,16 @@
import org.jboss.ws.core.CommonMessageContext;
import org.jboss.ws.core.EndpointInvocation;
import org.jboss.ws.core.MessageAbstraction;
+import org.jboss.ws.core.CommonSOAP11Binding;
+import org.jboss.ws.core.CommonSOAPBinding;
import org.jboss.ws.core.jaxrpc.SOAPFaultHelperJAXRPC;
+import org.jboss.ws.core.jaxrpc.SOAP11BindingJAXRPC;
+import org.jboss.ws.core.jaxrpc.SOAP12BindingJAXRPC;
import org.jboss.ws.core.soap.SOAPMessageImpl;
+import org.jboss.ws.core.soap.SOAPEnvelopeImpl;
import org.jboss.ws.metadata.umdm.OperationMetaData;
import org.jboss.ws.metadata.umdm.HandlerMetaData.HandlerType;
+import org.jboss.ws.Constants;
/**
* This Interceptor does the ws4ee handler processing.
@@ -86,6 +93,29 @@
// Call the next interceptor in the chain
if (handlersPass)
{
+
+ // [JBCTS-623] Check if handlers modified the payload
+
+ if (msgContext.isModified())
+ {
+ log.debug("Handler modified payload, unbind message again");
+ SOAPMessage reqMessage = msgContext.getSOAPMessage();
+ SOAPEnvelopeImpl env = (SOAPEnvelopeImpl)reqMessage.getSOAPPart().getEnvelope();
+
+ CommonSOAPBinding soapBinding;
+ if(env.getNamespaceURI().equals(Constants.NS_SOAP11_ENV) )
+ {
+ soapBinding = new SOAP11BindingJAXRPC();
+ }
+ else
+ {
+ soapBinding = new SOAP12BindingJAXRPC();
+ }
+
+ epInv = soapBinding.unbindRequestMessage(opMetaData, msgContext.getMessageAbstraction());
+ }
+
+
// The SOAPContentElements stored in the EndpointInvocation might have changed after
// handler processing. Get the updated request payload. This should be a noop if request
// handlers did not modify the incomming SOAP message.
Modified: legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/core/CommonSOAPBinding.java
===================================================================
--- legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/core/CommonSOAPBinding.java 2007-09-07 12:56:24 UTC (rev 4532)
+++ legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/core/CommonSOAPBinding.java 2007-09-07 13:01:33 UTC (rev 4533)
@@ -79,6 +79,8 @@
import org.jboss.ws.metadata.umdm.TypesMetaData;
import org.jboss.xb.binding.NamespaceRegistry;
import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Node;
/**
* The SOAPBinding interface is an abstraction for the SOAP binding.
@@ -305,6 +307,29 @@
Name elName = soapBodyElement.getElementName();
+ //
+ NodeList childNodes = soapBodyElement.getChildNodes();
+ int childElementsLength = 0;
+ for ( int i=0; i<childNodes.getLength(); i++)
+ {
+ if(childNodes.item(i).getNodeType() == Node.ELEMENT_NODE)
+ {
+ childElementsLength++;
+ }
+ }
+
+ int expectedNumChildElements = 0;
+ for (ParameterMetaData paramMetaData : opMetaData.getParameters())
+ {
+ if(!paramMetaData.isInHeader() && !paramMetaData.isSwA() && paramMetaData.getMode()!=ParameterMode.OUT )
+ {
+ expectedNumChildElements++;
+ }
+ }
+
+ if(childElementsLength!=expectedNumChildElements)
+ throw new BindingException("The number of child elements doesn't match OperationMetaData: " + elName);
+
QName elQName = new QName(elName.getURI(), elName.getLocalName(), elName.getPrefix());
elQName = namespaceRegistry.registerQName(elQName);
}
Modified: legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/HandlerRegistryImpl.java
===================================================================
--- legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/HandlerRegistryImpl.java 2007-09-07 12:56:24 UTC (rev 4532)
+++ legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/core/jaxrpc/client/HandlerRegistryImpl.java 2007-09-07 13:01:33 UTC (rev 4533)
@@ -24,12 +24,12 @@
// $Id$
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.Iterator;
import javax.xml.namespace.QName;
import javax.xml.rpc.handler.HandlerChain;
@@ -42,6 +42,7 @@
import org.jboss.ws.metadata.umdm.HandlerMetaDataJAXRPC;
import org.jboss.ws.metadata.umdm.ServiceMetaData;
import org.jboss.ws.metadata.umdm.HandlerMetaData.HandlerType;
+import org.jboss.ws.metadata.j2ee.serviceref.UnifiedInitParamMetaData;
/**
* Provides support for the programmatic configuration of
@@ -115,7 +116,25 @@
handler.setEndpointMetaData(epMetaData);
handler.setHandlerClassName(info.getHandlerClass().getName());
handler.setSoapRoles(roles);
-
+
+ // pass the init parameters
+ ArrayList<UnifiedInitParamMetaData> params = new ArrayList<UnifiedInitParamMetaData>();
+ Iterator configkeys = info.getHandlerConfig().keySet().iterator();
+ while(configkeys.hasNext())
+ {
+ String name = (String)configkeys.next();
+ if(info.getHandlerConfig().get(name) instanceof String) // might be Object instances used internally
+ {
+ String value = (String)info.getHandlerConfig().get(name);
+ UnifiedInitParamMetaData initParam = new UnifiedInitParamMetaData();
+ initParam.setParamName(name);
+ initParam.setParamValue(value);
+ params.add(initParam);
+ }
+ }
+
+ handler.setInitParams(params);
+
Set<QName> headers = new HashSet<QName>();
for (QName header : info.getHeaders())
headers.add(header);
Modified: legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/UnifiedHandlerMetaData.java
===================================================================
--- legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/UnifiedHandlerMetaData.java 2007-09-07 12:56:24 UTC (rev 4532)
+++ legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/metadata/j2ee/serviceref/UnifiedHandlerMetaData.java 2007-09-07 13:01:33 UTC (rev 4533)
@@ -132,7 +132,7 @@
HandlerMetaDataJAXRPC hmd = new HandlerMetaDataJAXRPC(type);
hmd.setHandlerName(getHandlerName());
hmd.setHandlerClassName(getHandlerClass());
- hmd.seiInitParams(getInitParams());
+ hmd.setInitParams(getInitParams());
hmd.setSoapHeaders(getSoapHeaders());
hmd.setSoapRoles(getSoapRoles());
hmd.setPortNames(getPortNames());
@@ -144,7 +144,7 @@
HandlerMetaDataJAXWS hmd = new HandlerMetaDataJAXWS(type);
hmd.setHandlerName(getHandlerName());
hmd.setHandlerClassName(getHandlerClass());
- hmd.seiInitParams(getInitParams());
+ hmd.setInitParams(getInitParams());
if (handlerChain != null)
{
hmd.setProtocolBindings(handlerChain.getProtocolBindings());
Modified: legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/metadata/umdm/HandlerMetaData.java
===================================================================
--- legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/metadata/umdm/HandlerMetaData.java 2007-09-07 12:56:24 UTC (rev 4532)
+++ legacy/branches/jbossws-1.2.1.GA_CP/jbossws-core/src/java/org/jboss/ws/metadata/umdm/HandlerMetaData.java 2007-09-07 13:01:33 UTC (rev 4533)
@@ -144,7 +144,7 @@
return soapHeaders;
}
- public void seiInitParams(List<UnifiedInitParamMetaData> initParams)
+ public void setInitParams(List<UnifiedInitParamMetaData> initParams)
{
this.initParams = initParams;
}
16 years, 8 months