You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ds...@apache.org on 2011/06/18 03:51:04 UTC

svn commit: r1137112 [1/7] - in /cxf/trunk: rt/ws/rm/ rt/ws/rm/src/main/build-resources/ rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/ rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/feature/ rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/ rt/ws/rm...

Author: dsosnoski
Date: Sat Jun 18 01:51:01 2011
New Revision: 1137112

URL: http://svn.apache.org/viewvc?rev=1137112&view=rev
Log:
WS-ReliableMessaging changeover to internal use of WS-RM 1.1 data structures

Added:
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RM10Constants.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RM11Constants.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/VersionTransformer.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RM10PolicyUtils.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RM11AssertionBuilder.java
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrmp-1.1-schema-200702.xjb
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrmp-1.1-schema-200702.xsd
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/wsdl/wsrm-1.0-wsa15.xjb
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/wsdl/wsrm-1.0-wsa15.xsd
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/wsdl/wsrm-1.0.xjb
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/wsdl/wsrm-1.0.xsd
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/wsdl/wsrm-1.1.xjb
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/wsdl/wsrm-1.1.xsd
Removed:
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/PolicyUtils.java
Modified:
    cxf/trunk/rt/ws/rm/pom.xml
    cxf/trunk/rt/ws/rm/src/main/build-resources/catalog.cat
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractEndpoint.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractSequence.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/BindingFaultFactory.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Messages.properties
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConstants.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMContextUtils.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMEndpoint.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMProperties.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMUtils.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RetransmissionCallback.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/SequenceFault.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/SequenceFaultFactory.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/SequenceIdentifierGenerator.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Servant.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Source.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/SourceSequence.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/feature/RMFeature.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/PersistenceUtils.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/RMStore.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMAssertionBuilder.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/Messages.properties
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptor.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImpl.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/SoapFaultFactory.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMFeatureBeanDefinitionParser.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMManagerBeanDefinitionParser.java
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager-types.xsd
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd
    cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-policy.xjb
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/AbstractEndpointTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/AbstractRMInterceptorTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/AbstractSequenceTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/DestinationSequenceTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/DestinationTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMContextUtilsTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMEndpointTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerConfigurationTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ServantTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/SourceSequenceTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/feature.xml
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/manager-bean.xml
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/PersistenceUtilsTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/PolicyUtilsTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptorTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImplTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/SoapFaultFactoryTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addressing/MAPTestBase.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/RMPolicyTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/RMPolicyWsdlTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/CachedOutClientPersistenceTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/CachedOutMessageTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/CachedOutServerPersistenceTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ClientPersistenceTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/DeliveryAssuranceOnewayTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/MessageLossSimulator.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/RetransmissionQueueTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServerPersistenceTest.java
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/rminterceptors.xml
    cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/util/MessageFlow.java

Modified: cxf/trunk/rt/ws/rm/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/pom.xml?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/pom.xml (original)
+++ cxf/trunk/rt/ws/rm/pom.xml Sat Jun 18 01:51:01 2011
@@ -112,8 +112,24 @@
                             <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
                             <xsdOptions>
                                 <xsdOption>
-                                    <xsd>${basedir}/src/main/resources/schemas/wsdl/wsrm.xsd</xsd>
-                                    <bindingFile>${basedir}/src/main/resources/schemas/wsdl/wsrm.xjb</bindingFile>
+                                    <xsd>${basedir}/src/main/resources/schemas/wsdl/wsrm-1.0.xsd</xsd>
+                                    <bindingFile>${basedir}/src/main/resources/schemas/wsdl/wsrm-1.0.xjb</bindingFile>
+                                    <catalog>${basedir}/src/main/build-resources/catalog.cat</catalog>
+                                    <deleteDirs>
+                                        <deleteDir>${basedir}/target/generated/src/main/java/org/apache/cxf/ws/addressing</deleteDir>
+                                    </deleteDirs>
+                                </xsdOption>
+                                <xsdOption>
+                                    <xsd>${basedir}/src/main/resources/schemas/wsdl/wsrm-1.0-wsa15.xsd</xsd>
+                                    <bindingFile>${basedir}/src/main/resources/schemas/wsdl/wsrm-1.0-wsa15.xjb</bindingFile>
+                                    <catalog>${basedir}/src/main/build-resources/catalog.cat</catalog>
+                                    <deleteDirs>
+                                        <deleteDir>${basedir}/target/generated/src/main/java/org/apache/cxf/ws/addressing</deleteDir>
+                                    </deleteDirs>
+                                </xsdOption>
+                                <xsdOption>
+                                    <xsd>${basedir}/src/main/resources/schemas/wsdl/wsrm-1.1.xsd</xsd>
+                                    <bindingFile>${basedir}/src/main/resources/schemas/wsdl/wsrm-1.1.xjb</bindingFile>
                                     <catalog>${basedir}/src/main/build-resources/catalog.cat</catalog>
                                     <deleteDirs>
                                         <deleteDir>${basedir}/target/generated/src/main/java/org/apache/cxf/ws/addressing</deleteDir>
@@ -127,7 +143,16 @@
                                     <extensionArgs>
                                         <extensionArg>-Xdv</extensionArg>
                                     </extensionArgs>
-                                    `</xsdOption>
+                                 </xsdOption>
+                                 <xsdOption>
+                                    <xsd>${basedir}/src/main/resources/schemas/configuration/wsrmp-1.1-schema-200702.xsd</xsd>
+                                    <bindingFile>${basedir}/src/main/resources/schemas/configuration/wsrmp-1.1-schema-200702.xjb</bindingFile>
+                                    <catalog>${basedir}/src/main/build-resources/catalog.cat</catalog>
+                                    <extension>true</extension>
+                                    <extensionArgs>
+                                        <extensionArg>-Xdv</extensionArg>
+                                    </extensionArgs>
+                                 </xsdOption>
                             </xsdOptions>
                         </configuration>
                         <goals>

Modified: cxf/trunk/rt/ws/rm/src/main/build-resources/catalog.cat
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/build-resources/catalog.cat?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/build-resources/catalog.cat (original)
+++ cxf/trunk/rt/ws/rm/src/main/build-resources/catalog.cat Sat Jun 18 01:51:01 2011
@@ -1,24 +1,28 @@
-
---
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements. See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership. The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License. You may obtain a copy of the License at
- 
-  http://www.apache.org/licenses/LICENSE-2.0
- 
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied. See the License for the
-  specific language governing permissions and limitations
-  under the License.
---
-
-
-SYSTEM "http://schemas.xmlsoap.org/ws/2004/08/addressing" "../../../../../../api/src/main/resources/schemas/wsdl/addressing.xsd"
-
-SYSTEM "http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd" "../resources/schemas/configuration/wsrm-policy.xsd" 
+
+--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+ 
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+--
+
+
+SYSTEM "http://schemas.xmlsoap.org/ws/2004/08/addressing" "../../../../../../api/src/main/resources/schemas/wsdl/addressing.xsd"
+SYSTEM "http://www.w3.org/2006/03/addressing/ws-addr.xsd" "../../../../../../api/src/main/resources/schemas/wsdl/ws-addr.xsd"
+
+SYSTEM "http://docs.oasis-open.org/ws-rx/wsrm/200702" "../resources/schemas/wsdl/wsrm-1.1.xsd"
+
+SYSTEM "http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd" "../resources/schemas/configuration/wsrm-policy.xsd"
+SYSTEM "http://docs.oasis-open.org/ws-rx/wsrmp/200702" "../resources/schemas/configuration/wsrmp-1.1-schema-200702.xsd"

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractEndpoint.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractEndpoint.java?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractEndpoint.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractEndpoint.java Sat Jun 18 01:51:01 2011
@@ -20,6 +20,7 @@
 package org.apache.cxf.ws.rm;
 
 import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.ws.rm.v200702.Identifier;
 
 public class AbstractEndpoint {
     

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java Sat Jun 18 01:51:01 2011
@@ -33,6 +33,7 @@ import org.apache.cxf.phase.AbstractPhas
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.ws.policy.AssertionInfo;
 import org.apache.cxf.ws.policy.AssertionInfoMap;
+import org.apache.cxf.ws.rm.policy.RM10PolicyUtils;
 
 /**
  * Interceptor responsible for implementing exchange of RM protocol messages,
@@ -93,7 +94,7 @@ public abstract class AbstractRMIntercep
                 RMManager m = getManager();
                 LOG.fine("Manager: " + m);
                 BindingFaultFactory bff = m.getBindingFaultFactory(b);
-                Fault f = bff.createFault(sf);
+                Fault f = bff.createFault(sf, msg);
                 LogUtils.log(LOG, Level.SEVERE, "SEQ_FAULT_MSG", bff.toString(f));
                 throw f;
             }
@@ -111,15 +112,7 @@ public abstract class AbstractRMIntercep
      */
     void assertReliability(Message message) {
         AssertionInfoMap aim = message.get(AssertionInfoMap.class);
-        if (null == aim) {
-            return;
-            
-        }
-        Collection<AssertionInfo> ais = aim.get(RMConstants.getRMAssertionQName());
-        if (null == ais || ais.size() == 0) {
-            return;
-        }
-        
+        Collection<AssertionInfo> ais = RM10PolicyUtils.collectRMAssertions(aim);
         for (AssertionInfo ai : ais) {
             ai.setAsserted(true);
         }

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractSequence.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractSequence.java?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractSequence.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractSequence.java Sat Jun 18 01:51:01 2011
@@ -19,8 +19,9 @@
 
 package org.apache.cxf.ws.rm;
 
-import org.apache.cxf.ws.rm.SequenceAcknowledgement.AcknowledgementRange;
-
+import org.apache.cxf.ws.rm.v200702.Identifier;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement.AcknowledgementRange;
 
 public abstract class AbstractSequence {
     
@@ -37,7 +38,7 @@ public abstract class AbstractSequence {
     public Identifier getIdentifier() {
         return id;
     }
-    
+
     public String toString() {
         return id.getValue();
     }

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/BindingFaultFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/BindingFaultFactory.java?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/BindingFaultFactory.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/BindingFaultFactory.java Sat Jun 18 01:51:01 2011
@@ -20,13 +20,14 @@
 package org.apache.cxf.ws.rm;
 
 import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.message.Message;
 
 /**
  * 
  */
 public interface BindingFaultFactory {
       
-    Fault createFault(SequenceFault sf);
+    Fault createFault(SequenceFault sf, Message msg);
     
     String toString(Fault f);
     

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Destination.java Sat Jun 18 01:51:01 2011
@@ -37,6 +37,9 @@ import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.ws.addressing.AddressingPropertiesImpl;
 import org.apache.cxf.ws.rm.persistence.RMMessage;
 import org.apache.cxf.ws.rm.persistence.RMStore;
+import org.apache.cxf.ws.rm.v200702.AckRequestedType;
+import org.apache.cxf.ws.rm.v200702.Identifier;
+import org.apache.cxf.ws.rm.v200702.SequenceType;
 
 public class Destination extends AbstractEndpoint {
     
@@ -95,7 +98,8 @@ public class Destination extends Abstrac
      *             <code>sequenceType</code> does not exist
      */
     public void acknowledge(Message message) throws SequenceFault, RMException {
-        SequenceType sequenceType = RMContextUtils.retrieveRMProperties(message, false).getSequence();
+        RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
+        SequenceType sequenceType = rmps.getSequence();
         if (null == sequenceType) {
             return;
         }
@@ -106,7 +110,7 @@ public class Destination extends Abstrac
             if (seq.applyDeliveryAssurance(sequenceType.getMessageNumber(), message)) {
                 seq.acknowledge(message);
     
-                if (null != sequenceType.getLastMessage()) {
+                if (null != rmps.getCloseSequence()) {
                     seq.setLastMessageNumber(sequenceType.getMessageNumber());
                     ackImmediately(seq, message);
                 }
@@ -130,7 +134,8 @@ public class Destination extends Abstrac
                 }
             }
         } else {
-            SequenceFaultFactory sff = new SequenceFaultFactory();
+            RMConstants consts = getReliableEndpoint().getEncoderDecoder().getConstants();
+            SequenceFaultFactory sff = new SequenceFaultFactory(consts);
             throw sff.createUnknownSequenceFault(sequenceType.getIdentifier());
         }
 

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/DestinationSequence.java Sat Jun 18 01:51:01 2011
@@ -32,15 +32,18 @@ import org.apache.cxf.continuations.Cont
 import org.apache.cxf.continuations.ContinuationProvider;
 import org.apache.cxf.continuations.SuspendedInvocationException;
 import org.apache.cxf.message.Message;
-import org.apache.cxf.ws.addressing.v200408.EndpointReferenceType;
-import org.apache.cxf.ws.rm.SequenceAcknowledgement.AcknowledgementRange;
+import org.apache.cxf.ws.addressing.EndpointReferenceType;
 import org.apache.cxf.ws.rm.manager.AcksPolicyType;
 import org.apache.cxf.ws.rm.manager.DeliveryAssuranceType;
 import org.apache.cxf.ws.rm.persistence.RMStore;
-import org.apache.cxf.ws.rm.policy.PolicyUtils;
-import org.apache.cxf.ws.rm.policy.RMAssertion;
-import org.apache.cxf.ws.rm.policy.RMAssertion.AcknowledgementInterval;
-import org.apache.cxf.ws.rm.policy.RMAssertion.InactivityTimeout;
+import org.apache.cxf.ws.rm.policy.RM10PolicyUtils;
+import org.apache.cxf.ws.rm.v200702.Identifier;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement.AcknowledgementRange;
+import org.apache.cxf.ws.rm.v200702.SequenceType;
+import org.apache.cxf.ws.rmp.v200502.RMAssertion;
+import org.apache.cxf.ws.rmp.v200502.RMAssertion.AcknowledgementInterval;
+import org.apache.cxf.ws.rmp.v200502.RMAssertion.InactivityTimeout;
 
 public class DestinationSequence extends AbstractSequence {
     
@@ -70,7 +73,7 @@ public class DestinationSequence extends
         lastMessageNumber = lmn;
         acknowledgement = ac;
         if (null == acknowledgement) {
-            acknowledgement = RMUtils.getWSRMFactory().createSequenceAcknowledgement();
+            acknowledgement = new SequenceAcknowledgement();
             acknowledgement.setIdentifier(id);
         }
         monitor = new SequenceMonitor();
@@ -105,11 +108,14 @@ public class DestinationSequence extends
     }
     
     public void acknowledge(Message message) throws SequenceFault {
-        SequenceType st = RMContextUtils.retrieveRMProperties(message, false).getSequence();
+        RMProperties rmps = RMContextUtils.retrieveRMProperties(message, false);
+        SequenceType st = rmps.getSequence();
         long messageNumber = st.getMessageNumber().longValue();
         LOG.fine("Acknowledging message: " + messageNumber);
         if (0 != lastMessageNumber && messageNumber > lastMessageNumber) {
-            throw new SequenceFaultFactory().createLastMessageNumberExceededFault(st.getIdentifier());
+            RMConstants consts = destination.getReliableEndpoint().getEncoderDecoder().getConstants();
+            SequenceFaultFactory sff = new SequenceFaultFactory(consts);
+            throw sff.createSequenceTerminatedFault(st.getIdentifier(), false);
         }        
         
         monitor.acknowledgeMessage();
@@ -123,18 +129,17 @@ public class DestinationSequence extends
                     && r.getUpper().compareTo(messageNumber) >= 0) {
                     done = true;
                     break;
-                } else {
-                    long diff = r.getLower() - messageNumber;
-                    if (diff == 1) {
-                        r.setLower(messageNumber);
-                        done = true;
-                    } else if (diff > 0) {
-                        break;
-                    } else if (messageNumber - r.getUpper().longValue() == 1) {
-                        r.setUpper(messageNumber);
-                        done = true;
-                        break;
-                    }
+                }
+                long diff = r.getLower() - messageNumber;
+                if (diff == 1) {
+                    r.setLower(messageNumber);
+                    done = true;
+                } else if (diff > 0) {
+                    break;
+                } else if (messageNumber - r.getUpper().longValue() == 1) {
+                    r.setUpper(messageNumber);
+                    done = true;
+                    break;
                 }
             }
 
@@ -148,8 +153,8 @@ public class DestinationSequence extends
             mergeRanges();
             wakeupAll();
         }
-                
-        RMAssertion rma = PolicyUtils.getRMAssertion(destination.getManager().getRMAssertion(), message);
+        
+        RMAssertion rma = RM10PolicyUtils.getRMAssertion(destination.getManager().getRMAssertion(), message);
         long acknowledgementInterval = 0;
         AcknowledgementInterval ai = rma.getAcknowledgementInterval();
         if (null != ai) {
@@ -209,7 +214,7 @@ public class DestinationSequence extends
     boolean canPiggybackAckOnPartialResponse() {
         // TODO: should also check if we allow breaking the WI Profile rule by which no headers
         // can be included in a HTTP response
-        return getAcksTo().getAddress().getValue().equals(RMConstants.getAnonymousAddress());
+        return getAcksTo().getAddress().getValue().equals(RMUtils.getAddressingConstants().getAnonymousURI());
     }
     
     /**
@@ -221,13 +226,13 @@ public class DestinationSequence extends
      * 
      * @param mn message number
      * @return <code>true</code> if message processing to continue, <code>false</code> if to be dropped
-     * @throws Fault if message had already been acknowledged
+     * @throws RMException if message had already been acknowledged
      */
     boolean applyDeliveryAssurance(long mn, Message message) throws RMException {
         Continuation cont = getContinuation(message);
         DeliveryAssuranceType da = destination.getManager().getDeliveryAssurance();
         if (cont != null && da.isSetInOrder() && !cont.isNew()) {
-            return waitInQueue(mn, !(da.isSetAtLeastOnce() || da.isSetExactlyOnce()),
+            return waitInQueue(mn, da.isSetAtLeastOnce() && da.isSetExactlyOnce(),
                                message, cont);
         }
         if ((da.isSetExactlyOnce() || da.isSetAtMostOnce()) && isAcknowledged(mn)) {            
@@ -485,6 +490,4 @@ public class DestinationSequence extends
             }
         }
     }
-    
-    
-}
+}
\ No newline at end of file

Added: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java?rev=1137112&view=auto
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java (added)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder.java Sat Jun 18 01:51:01 2011
@@ -0,0 +1,196 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.ws.rm;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Element;
+
+import org.apache.cxf.ws.rm.v200702.AckRequestedType;
+import org.apache.cxf.ws.rm.v200702.CreateSequenceResponseType;
+import org.apache.cxf.ws.rm.v200702.CreateSequenceType;
+import org.apache.cxf.ws.rm.v200702.Identifier;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement;
+import org.apache.cxf.ws.rm.v200702.SequenceType;
+import org.apache.cxf.ws.rm.v200702.TerminateSequenceType;
+
+/**
+ * Interface for converting WS-ReliableMessaging structures to and from XML. Implementations of this interface
+ * provide version-specific encoding and decoding.
+ */
+public interface EncoderDecoder {
+    
+    /**
+     * Get the WS-ReliableMessaging namespace used by this encoder/decoder.
+     * 
+     * @return URI
+     */
+    String getWSRMNamespace();
+    
+    /**
+     * Get the WS-Addressing namespace used by this encoder/decoder.
+     * 
+     * @return URI
+     */
+    String getWSANamespace();
+    
+    /**
+     * Get the WS-ReliableMessaging constants used by this encoder/decoder.
+     * 
+     * @return
+     */
+    RMConstants getConstants();
+    
+    /**
+     * Get the class used for the CreateSequenceType.
+     * 
+     * @return class
+     */
+    Class getCreateSequenceType();
+    
+    /**
+     * Get the class used for the CreateSequenceResponseType.
+     * 
+     * @return class
+     */
+    Class getCreateSequenceResponseType();
+    
+    /**
+     * Get the class used for the TerminateSequenceType.
+     * 
+     * @return class
+     */
+    Class getTerminateSequenceType();
+    
+    /**
+     * Builds an element containing WS-RM headers. This adds the appropriate WS-RM and WS-A namespace
+     * declarations to the element, and then adds any WS-RM headers set in the supplied properties as child
+     * elements.
+     * 
+     * @param rmps
+     * @param qname constructed element name
+     * @return element
+     */
+    Element buildHeaders(RMProperties rmps, QName qname) throws JAXBException;
+    
+    /**
+     * Builds an element containing a WS-RM Fault. This adds the appropriate WS-RM namespace declaration to
+     * the element, and then adds the Fault as a child element.
+     * 
+     * @param sf
+     * @param qname constructed element name
+     * @return element
+     */
+    Element buildHeaderFault(SequenceFault sf, QName qname) throws JAXBException;
+    
+    /**
+     * Marshals a SequenceAcknowledgement to the appropriate external form.
+     * 
+     * @param ack
+     * @return element
+     * @throws JAXBException
+     */
+    Element encodeSequenceAcknowledgement(SequenceAcknowledgement ack) throws JAXBException;
+    
+    /**
+     * Marshals an Identifier to the appropriate external form.
+     * 
+     * @param id
+     * @return element
+     * @throws JAXBException
+     */
+    Element encodeIdentifier(Identifier id) throws JAXBException;
+    
+    /**
+     * Unmarshals a SequenceType, converting it if necessary to the internal form.
+     * 
+     * @param elem
+     * @return
+     * @throws JAXBException
+     */
+    SequenceType decodeSequenceType(Element elem) throws JAXBException;
+    
+    /**
+     * Unmarshals a SequenceAcknowledgement, converting it if necessary to the internal form.
+     * 
+     * @param elem
+     * @return
+     * @throws JAXBException
+     */
+    SequenceAcknowledgement decodeSequenceAcknowledgement(Element elem) throws JAXBException;
+    
+    /**
+     * Unmarshals a AckRequestedType, converting it if necessary to the internal form.
+     * 
+     * @param elem
+     * @return
+     * @throws JAXBException
+     */
+    AckRequestedType decodeAckRequestedType(Element elem) throws JAXBException;
+    
+    /**
+     * Convert a CreateSequence message to the correct format for transmission.
+     * 
+     * @param create
+     * @return converted
+     */
+    Object convertToSend(CreateSequenceType create);
+    
+    /**
+     * Convert a CreateSequenceResponse message to the correct format for transmission.
+     * 
+     * @param create
+     * @return converted
+     */
+    Object convertToSend(CreateSequenceResponseType create);
+    
+    /**
+     * Convert a TerminateSequence message to the correct format for transmission.
+     * 
+     * @param term
+     * @return converted
+     */
+    Object convertToSend(TerminateSequenceType term);
+    
+    /**
+     * Convert a received TerminateSequence message to internal form.
+     * 
+     * @param term
+     * @return converted
+     */
+    TerminateSequenceType convertReceivedTerminateSequence(Object term);
+    
+    /**
+     * Convert a received CreateSequence message to internal form.
+     * 
+     * @param create
+     * @return converted
+     */
+    CreateSequenceType convertReceivedCreateSequence(Object create);
+    
+    /**
+     * Convert a received CreateSequenceResponse message to internal form.
+     * 
+     * @param create
+     * @return converted
+     */
+    CreateSequenceResponseType convertReceivedCreateSequenceResponse(Object create);
+}
\ No newline at end of file

Added: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java?rev=1137112&view=auto
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java (added)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10AImpl.java Sat Jun 18 01:51:01 2011
@@ -0,0 +1,218 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.ws.rm;
+
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.PackageUtils;
+import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.ws.addressing.Names;
+import org.apache.cxf.ws.rm.v200702.AckRequestedType;
+import org.apache.cxf.ws.rm.v200702.CreateSequenceResponseType;
+import org.apache.cxf.ws.rm.v200702.CreateSequenceType;
+import org.apache.cxf.ws.rm.v200702.Identifier;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement;
+import org.apache.cxf.ws.rm.v200702.SequenceFaultType;
+import org.apache.cxf.ws.rm.v200702.SequenceType;
+import org.apache.cxf.ws.rm.v200702.TerminateSequenceType;
+
+/**
+ * WS-ReliableMessaging 1.0 encoding and decoding. This converts between the standard WS-RM objects and the
+ * 1.0 representation using the WS-Addressing recommendation 200508 namespace.
+ */
+public final class EncoderDecoder10AImpl implements EncoderDecoder {
+    
+    public static final EncoderDecoder10AImpl INSTANCE = new EncoderDecoder10AImpl();
+
+    private static JAXBContext jaxbContext;
+
+    private static final Logger LOG = LogUtils.getL7dLogger(EncoderDecoder10AImpl.class);
+    
+    private EncoderDecoder10AImpl() {
+    }
+    
+    public String getWSRMNamespace() {
+        return RM10Constants.NAMESPACE_URI;
+    }
+
+    public String getWSANamespace() {
+        return Names.WSA_NAMESPACE_NAME;
+    }
+
+    public RMConstants getConstants() {
+        return RM10Constants.INSTANCE;
+    }
+
+    public Class getCreateSequenceType() {
+        return org.apache.cxf.ws.rm.v200502wsa15.CreateSequenceType.class;
+    }
+
+    public Class getCreateSequenceResponseType() {
+        return org.apache.cxf.ws.rm.v200502wsa15.CreateSequenceResponseType.class;
+    }
+
+    public Class getTerminateSequenceType() {
+        return org.apache.cxf.ws.rm.v200502wsa15.TerminateSequenceType.class;
+    }
+
+    private static JAXBContext getContext() throws JAXBException {
+        synchronized (EncoderDecoder10AImpl.class) {
+            if (jaxbContext == null) {
+                Class clas = RMUtils.getWSRM200502WSA200508Factory().getClass();
+                jaxbContext = JAXBContext.newInstance(PackageUtils.getPackageName(clas),
+                    clas.getClassLoader());
+            }
+        }
+        return jaxbContext;
+    }
+    
+    public Element buildHeaders(RMProperties rmps, QName qname) throws JAXBException {
+        
+        Document doc = DOMUtils.createDocument();
+        Element header = doc.createElementNS(qname.getNamespaceURI(), qname.getLocalPart());
+        // add WSRM namespace declaration to header, instead of
+        // repeating in each individual child node
+        Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", 
+            "xmlns:" + RMConstants.NAMESPACE_PREFIX);
+        attr.setValue(RM10Constants.NAMESPACE_URI);
+        header.setAttributeNodeNS(attr);
+
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+       
+        SequenceType seq = rmps.getSequence();
+        if (null != seq) {
+            LOG.log(Level.FINE, "encoding sequence into RM header");
+            org.apache.cxf.ws.rm.v200502wsa15.SequenceType toseq = VersionTransformer.convert200502wsa15(seq);
+            JAXBElement element = RMUtils.getWSRM200502WSA200508Factory().createSequence(toseq);
+            marshaller.marshal(element, header);
+        } 
+        Collection<SequenceAcknowledgement> acks = rmps.getAcks();
+        if (null != acks) {
+            LOG.log(Level.FINE, "encoding sequence acknowledgement(s) into RM header");
+            for (SequenceAcknowledgement ack : acks) {
+                marshaller.marshal(VersionTransformer.convert200502wsa15(ack), header);
+            }
+        }
+        Collection<AckRequestedType> reqs = rmps.getAcksRequested();
+        if (null != reqs) {
+            LOG.log(Level.FINE, "encoding acknowledgement request(s) into RM header");
+            for (AckRequestedType req : reqs) {
+                marshaller.marshal(RMUtils.getWSRM200502WSA200508Factory()
+                    .createAckRequested(VersionTransformer.convert200502wsa15(req)), header);
+            }
+        }
+        return header;
+    }
+
+    public Element buildHeaderFault(SequenceFault sf, QName qname) throws JAXBException {
+        
+        Document doc = DOMUtils.createDocument();
+        Element header = doc.createElementNS(qname.getNamespaceURI(), qname.getLocalPart());
+        // add WSRM namespace declaration to header, instead of
+        // repeating in each individual child node
+        
+        Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", 
+            "xmlns:" + RMConstants.NAMESPACE_PREFIX);
+        attr.setValue(RM10Constants.NAMESPACE_URI);
+        header.setAttributeNodeNS(attr);
+
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+        QName fqname = RM10Constants.SEQUENCE_FAULT_QNAME;
+        marshaller.marshal(new JAXBElement<SequenceFaultType>(fqname, SequenceFaultType.class,
+            sf.getSequenceFault()), header);
+        return header;
+    }
+
+    public Element encodeSequenceAcknowledgement(SequenceAcknowledgement ack) throws JAXBException {
+        Document doc = DOMUtils.createDocument();
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.marshal(VersionTransformer.convert200502wsa15(ack), doc);
+        return (Element)doc.getFirstChild();
+    }
+
+    public Element encodeIdentifier(Identifier id) throws JAXBException {
+        Document doc = DOMUtils.createDocument();
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.marshal(VersionTransformer.convert200502wsa15(id), doc);
+        return (Element)doc.getFirstChild();
+    }
+
+    public SequenceType decodeSequenceType(Element elem) throws JAXBException {
+        Unmarshaller unmarshaller = getContext().createUnmarshaller();
+        JAXBElement<org.apache.cxf.ws.rm.v200502wsa15.SequenceType> jaxbElement
+            = unmarshaller.unmarshal(elem, org.apache.cxf.ws.rm.v200502wsa15.SequenceType.class);
+        return VersionTransformer.convert(jaxbElement.getValue());
+    }
+
+    public SequenceAcknowledgement decodeSequenceAcknowledgement(Element elem) throws JAXBException {
+        Unmarshaller unmarshaller = getContext().createUnmarshaller();
+        org.apache.cxf.ws.rm.v200502wsa15.SequenceAcknowledgement ack
+            = (org.apache.cxf.ws.rm.v200502wsa15.SequenceAcknowledgement)unmarshaller.unmarshal(elem);
+        return VersionTransformer.convert(ack);
+    }
+
+    public AckRequestedType decodeAckRequestedType(Element elem) throws JAXBException {
+        Unmarshaller unmarshaller = getContext().createUnmarshaller();
+        JAXBElement<org.apache.cxf.ws.rm.v200502wsa15.AckRequestedType> jaxbElement
+            = unmarshaller.unmarshal(elem, org.apache.cxf.ws.rm.v200502wsa15.AckRequestedType.class);
+        return VersionTransformer.convert(jaxbElement.getValue());
+    }
+
+    public Object convertToSend(CreateSequenceType create) {
+        return VersionTransformer.convert200502wsa15(create);
+    }
+    
+    public Object convertToSend(TerminateSequenceType term) {
+        return VersionTransformer.convert200502wsa15(term);
+    }
+
+    public Object convertToSend(CreateSequenceResponseType create) {
+        return VersionTransformer.convert200502wsa15(create);
+    }
+
+    public CreateSequenceType convertReceivedCreateSequence(Object create) {
+        return VersionTransformer.convert((org.apache.cxf.ws.rm.v200502wsa15.CreateSequenceType)create);
+    }
+
+    public CreateSequenceResponseType convertReceivedCreateSequenceResponse(Object response) {
+        return VersionTransformer.
+            convert((org.apache.cxf.ws.rm.v200502wsa15.CreateSequenceResponseType)response);
+    }
+
+    public TerminateSequenceType convertReceivedTerminateSequence(Object term) {
+        return VersionTransformer.convert((org.apache.cxf.ws.rm.v200502wsa15.TerminateSequenceType)term);
+    }
+}
\ No newline at end of file

Added: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java?rev=1137112&view=auto
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java (added)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder10Impl.java Sat Jun 18 01:51:01 2011
@@ -0,0 +1,217 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.ws.rm;
+
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.PackageUtils;
+import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.ws.addressing.VersionTransformer.Names200408;
+import org.apache.cxf.ws.rm.v200702.AckRequestedType;
+import org.apache.cxf.ws.rm.v200702.CreateSequenceResponseType;
+import org.apache.cxf.ws.rm.v200702.CreateSequenceType;
+import org.apache.cxf.ws.rm.v200702.Identifier;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement;
+import org.apache.cxf.ws.rm.v200702.SequenceFaultType;
+import org.apache.cxf.ws.rm.v200702.SequenceType;
+import org.apache.cxf.ws.rm.v200702.TerminateSequenceType;
+
+/**
+ * WS-ReliableMessaging 1.0 encoding and decoding. This converts between the standard WS-RM objects and the
+ * 1.0 representation using the WS-Addressing 200408 namespace specified in the WS-RM 1.0 recommendation.
+ */
+public final class EncoderDecoder10Impl implements EncoderDecoder {
+    
+    public static final EncoderDecoder10Impl INSTANCE = new EncoderDecoder10Impl();
+
+    private static JAXBContext jaxbContext;
+
+    private static final Logger LOG = LogUtils.getL7dLogger(EncoderDecoder10Impl.class);
+    
+    private EncoderDecoder10Impl() {
+    }
+    
+    public String getWSRMNamespace() {
+        return RM10Constants.NAMESPACE_URI;
+    }
+
+    public String getWSANamespace() {
+        return Names200408.WSA_NAMESPACE_NAME;
+    }
+
+    public RMConstants getConstants() {
+        return RM10Constants.INSTANCE;
+    }
+
+    public Class getCreateSequenceType() {
+        return org.apache.cxf.ws.rm.v200502.CreateSequenceType.class;
+    }
+
+    public Class getCreateSequenceResponseType() {
+        return org.apache.cxf.ws.rm.v200502.CreateSequenceResponseType.class;
+    }
+
+    public Class getTerminateSequenceType() {
+        return org.apache.cxf.ws.rm.v200502.TerminateSequenceType.class;
+    }
+
+    private static JAXBContext getContext() throws JAXBException {
+        synchronized (EncoderDecoder10Impl.class) {
+            if (jaxbContext == null) {
+                Class clas = RMUtils.getWSRM200502Factory().getClass();
+                jaxbContext = JAXBContext.newInstance(PackageUtils.getPackageName(clas),
+                    clas.getClassLoader());
+            }
+        }
+        return jaxbContext;
+    }
+    
+    public Element buildHeaders(RMProperties rmps, QName qname) throws JAXBException {
+        
+        Document doc = DOMUtils.createDocument();
+        Element header = doc.createElementNS(qname.getNamespaceURI(), qname.getLocalPart());
+        // add WSRM namespace declaration to header, instead of
+        // repeating in each individual child node
+        Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", 
+            "xmlns:" + RMConstants.NAMESPACE_PREFIX);
+        attr.setValue(RM10Constants.NAMESPACE_URI);
+        header.setAttributeNodeNS(attr);
+
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+       
+        SequenceType seq = rmps.getSequence();
+        if (null != seq) {
+            LOG.log(Level.FINE, "encoding sequence into RM header");
+            org.apache.cxf.ws.rm.v200502.SequenceType toseq = VersionTransformer.convert200502(seq);
+            JAXBElement element = RMUtils.getWSRM200502Factory().createSequence(toseq);
+            marshaller.marshal(element, header);
+        } 
+        Collection<SequenceAcknowledgement> acks = rmps.getAcks();
+        if (null != acks) {
+            LOG.log(Level.FINE, "encoding sequence acknowledgement(s) into RM header");
+            for (SequenceAcknowledgement ack : acks) {
+                marshaller.marshal(VersionTransformer.convert200502(ack), header);
+            }
+        }
+        Collection<AckRequestedType> reqs = rmps.getAcksRequested();
+        if (null != reqs) {
+            LOG.log(Level.FINE, "encoding acknowledgement request(s) into RM header");
+            for (AckRequestedType req : reqs) {
+                marshaller.marshal(RMUtils.getWSRM200502Factory()
+                    .createAckRequested(VersionTransformer.convert200502(req)), header);
+            }
+        }
+        return header;
+    }
+
+    public Element buildHeaderFault(SequenceFault sf, QName qname) throws JAXBException {
+        
+        Document doc = DOMUtils.createDocument();
+        Element header = doc.createElementNS(qname.getNamespaceURI(), qname.getLocalPart());
+        // add WSRM namespace declaration to header, instead of
+        // repeating in each individual child node
+        
+        Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", 
+            "xmlns:" + RMConstants.NAMESPACE_PREFIX);
+        attr.setValue(RM10Constants.NAMESPACE_URI);
+        header.setAttributeNodeNS(attr);
+
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+        QName fqname = RM10Constants.SEQUENCE_FAULT_QNAME;
+        marshaller.marshal(new JAXBElement<SequenceFaultType>(fqname, SequenceFaultType.class,
+            sf.getSequenceFault()), header);
+        return header;
+    }
+
+    public Element encodeSequenceAcknowledgement(SequenceAcknowledgement ack) throws JAXBException {
+        Document doc = DOMUtils.createDocument();
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.marshal(VersionTransformer.convert200502(ack), doc);
+        return (Element)doc.getFirstChild();
+    }
+
+    public Element encodeIdentifier(Identifier id) throws JAXBException {
+        Document doc = DOMUtils.createDocument();
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.marshal(VersionTransformer.convert200502(id), doc);
+        return (Element)doc.getFirstChild();
+    }
+
+    public SequenceType decodeSequenceType(Element elem) throws JAXBException {
+        Unmarshaller unmarshaller = getContext().createUnmarshaller();
+        JAXBElement<org.apache.cxf.ws.rm.v200502.SequenceType> jaxbElement
+            = unmarshaller.unmarshal(elem, org.apache.cxf.ws.rm.v200502.SequenceType.class);
+        return VersionTransformer.convert(jaxbElement.getValue());
+    }
+
+    public SequenceAcknowledgement decodeSequenceAcknowledgement(Element elem) throws JAXBException {
+        Unmarshaller unmarshaller = getContext().createUnmarshaller();
+        org.apache.cxf.ws.rm.v200502.SequenceAcknowledgement ack
+            = (org.apache.cxf.ws.rm.v200502.SequenceAcknowledgement)unmarshaller.unmarshal(elem);
+        return VersionTransformer.convert(ack);
+    }
+
+    public AckRequestedType decodeAckRequestedType(Element elem) throws JAXBException {
+        Unmarshaller unmarshaller = getContext().createUnmarshaller();
+        JAXBElement<org.apache.cxf.ws.rm.v200502.AckRequestedType> jaxbElement
+            = unmarshaller.unmarshal(elem, org.apache.cxf.ws.rm.v200502.AckRequestedType.class);
+        return VersionTransformer.convert(jaxbElement.getValue());
+    }
+
+    public Object convertToSend(CreateSequenceType create) {
+        return VersionTransformer.convert200502(create);
+    }
+
+    public Object convertToSend(CreateSequenceResponseType create) {
+        return VersionTransformer.convert200502(create);
+    }
+    
+    public Object convertToSend(TerminateSequenceType term) {
+        return VersionTransformer.convert200502(term);
+    }
+
+    public CreateSequenceType convertReceivedCreateSequence(Object create) {
+        return VersionTransformer.convert((org.apache.cxf.ws.rm.v200502.CreateSequenceType)create);
+    }
+
+    public CreateSequenceResponseType convertReceivedCreateSequenceResponse(Object response) {
+        return VersionTransformer.convert((org.apache.cxf.ws.rm.v200502.CreateSequenceResponseType)response);
+    }
+
+    public TerminateSequenceType convertReceivedTerminateSequence(Object term) {
+        return VersionTransformer.convert((org.apache.cxf.ws.rm.v200502.TerminateSequenceType)term);
+    }
+}
\ No newline at end of file

Added: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java?rev=1137112&view=auto
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java (added)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/EncoderDecoder11Impl.java Sat Jun 18 01:51:01 2011
@@ -0,0 +1,211 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.ws.rm;
+
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.PackageUtils;
+import org.apache.cxf.helpers.DOMUtils;
+import org.apache.cxf.ws.addressing.Names;
+import org.apache.cxf.ws.rm.v200702.AckRequestedType;
+import org.apache.cxf.ws.rm.v200702.CreateSequenceResponseType;
+import org.apache.cxf.ws.rm.v200702.CreateSequenceType;
+import org.apache.cxf.ws.rm.v200702.Identifier;
+import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement;
+import org.apache.cxf.ws.rm.v200702.SequenceFaultType;
+import org.apache.cxf.ws.rm.v200702.SequenceType;
+import org.apache.cxf.ws.rm.v200702.TerminateSequenceType;
+
+/**
+ * WS-ReliableMessaging 1.1 encoding and decoding. This just works with the standard internal form of the
+ * WS-RM data structures.
+ */
+public final class EncoderDecoder11Impl implements EncoderDecoder {
+    
+    public static final EncoderDecoder11Impl INSTANCE = new EncoderDecoder11Impl();
+
+    private static JAXBContext jaxbContext;
+
+    private static final Logger LOG = LogUtils.getL7dLogger(EncoderDecoder11Impl.class);
+    
+    private EncoderDecoder11Impl() {
+    }
+    
+    public String getWSRMNamespace() {
+        return RM11Constants.NAMESPACE_URI;
+    }
+
+    public String getWSANamespace() {
+        return Names.WSA_NAMESPACE_NAME;
+    }
+
+    public RMConstants getConstants() {
+        return RM11Constants.INSTANCE;
+    }
+
+    public Class getCreateSequenceType() {
+        return org.apache.cxf.ws.rm.v200702.CreateSequenceType.class;
+    }
+
+    public Class getCreateSequenceResponseType() {
+        return org.apache.cxf.ws.rm.v200702.CreateSequenceResponseType.class;
+    }
+
+    public Class getTerminateSequenceType() {
+        return org.apache.cxf.ws.rm.v200702.TerminateSequenceType.class;
+    }
+
+    private static JAXBContext getContext() throws JAXBException {
+        synchronized (EncoderDecoder11Impl.class) {
+            if (jaxbContext == null) {
+                Class clas = RMUtils.getWSRMFactory().getClass();
+                jaxbContext = JAXBContext.newInstance(PackageUtils.getPackageName(clas),
+                    clas.getClassLoader());
+            }
+        }
+        return jaxbContext;
+    }
+    
+    public Element buildHeaders(RMProperties rmps, QName qname) throws JAXBException {
+        
+        Document doc = DOMUtils.createDocument();
+        Element header = doc.createElementNS(qname.getNamespaceURI(), qname.getLocalPart());
+        // add WSRM namespace declaration to header, instead of
+        // repeating in each individual child node
+        Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", 
+            "xmlns:" + RMConstants.NAMESPACE_PREFIX);
+        attr.setValue(RM10Constants.NAMESPACE_URI);
+        header.setAttributeNodeNS(attr);
+
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+       
+        SequenceType seq = rmps.getSequence();
+        if (null != seq) {
+            LOG.log(Level.FINE, "encoding sequence into RM header");
+            JAXBElement element = RMUtils.getWSRMFactory().createSequence(seq);
+            marshaller.marshal(element, header);
+        } 
+        Collection<SequenceAcknowledgement> acks = rmps.getAcks();
+        if (null != acks) {
+            LOG.log(Level.FINE, "encoding sequence acknowledgement(s) into RM header");
+            for (SequenceAcknowledgement ack : acks) {
+                marshaller.marshal(ack, header);
+            }
+        }
+        Collection<AckRequestedType> reqs = rmps.getAcksRequested();
+        if (null != reqs) {
+            LOG.log(Level.FINE, "encoding acknowledgement request(s) into RM header");
+            for (AckRequestedType req : reqs) {
+                marshaller.marshal(RMUtils.getWSRMFactory().createAckRequested(req), header);
+            }
+        }
+        return header;
+    }
+
+    public Element buildHeaderFault(SequenceFault sf, QName qname) throws JAXBException {
+        
+        Document doc = DOMUtils.createDocument();
+        Element header = doc.createElementNS(qname.getNamespaceURI(), qname.getLocalPart());
+        // add WSRM namespace declaration to header, instead of
+        // repeating in each individual child node
+        
+        Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/", 
+            "xmlns:" + RMConstants.NAMESPACE_PREFIX);
+        attr.setValue(RM11Constants.NAMESPACE_URI);
+        header.setAttributeNodeNS(attr);
+
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+        QName fqname = RM11Constants.SEQUENCE_FAULT_QNAME;
+        marshaller.marshal(new JAXBElement<SequenceFaultType>(fqname, SequenceFaultType.class,
+            sf.getSequenceFault()), header);
+        return header;
+    }
+
+    public Element encodeSequenceAcknowledgement(SequenceAcknowledgement ack) throws JAXBException {
+        Document doc = DOMUtils.createDocument();
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.marshal(ack, doc);
+        return (Element)doc.getFirstChild();
+    }
+
+    public Element encodeIdentifier(Identifier id) throws JAXBException {
+        Document doc = DOMUtils.createDocument();
+        Marshaller marshaller = getContext().createMarshaller();
+        marshaller.marshal(id, doc);
+        return (Element)doc.getFirstChild();
+    }
+
+    public SequenceType decodeSequenceType(Element elem) throws JAXBException {
+        Unmarshaller unmarshaller = getContext().createUnmarshaller();
+        JAXBElement<SequenceType> jaxbElement = unmarshaller.unmarshal(elem, SequenceType.class);
+        return jaxbElement.getValue();
+    }
+
+    public SequenceAcknowledgement decodeSequenceAcknowledgement(Element elem) throws JAXBException {
+        Unmarshaller unmarshaller = getContext().createUnmarshaller();
+        return (SequenceAcknowledgement)unmarshaller.unmarshal(elem);
+    }
+
+    public AckRequestedType decodeAckRequestedType(Element elem) throws JAXBException {
+        Unmarshaller unmarshaller = getContext().createUnmarshaller();
+        JAXBElement<AckRequestedType> jaxbElement = unmarshaller.unmarshal(elem, AckRequestedType.class);
+        return jaxbElement.getValue();
+    }
+
+    public Object convertToSend(CreateSequenceType create) {
+        return create;
+    }
+
+    public Object convertToSend(CreateSequenceResponseType create) {
+        return create;
+    }
+    
+    public Object convertToSend(TerminateSequenceType term) {
+        return term;
+    }
+
+    public CreateSequenceType convertReceivedCreateSequence(Object create) {
+        return (CreateSequenceType)create;
+    }
+
+    public CreateSequenceResponseType convertReceivedCreateSequenceResponse(Object create) {
+        return (CreateSequenceResponseType)create;
+    }
+
+    public TerminateSequenceType convertReceivedTerminateSequence(Object term) {
+        return (TerminateSequenceType)term;
+    }
+}
\ No newline at end of file

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Messages.properties
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Messages.properties?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Messages.properties (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Messages.properties Sat Jun 18 01:51:01 2011
@@ -24,8 +24,8 @@ RM_INVOCATION_FAILED = Invocation of RM 
 SEQ_TERMINATION_FAILURE = Failed to terminate sequence {0}.
 
 STANDALONE_ANON_ACKS_NOT_SUPPORTED = It is not possible to send out-of-band acknowledgments to the anonymous address.\nAn acknowledgement will be piggybacked on the next response. 
-STANDALONE_LAST_MESSAGE_NO_TARGET_MSG = No target address to send out-of-band last message to.
-STANDALONE_LAST_MESSAGE_ANON_TARGET_MSG = It is not possible to send an out-of-band last message to the anonymous address.
+STANDALONE_CLOSE_SEQUENCE_NO_TARGET_MSG = No target address to send out-of-band close sequence to.
+STANDALONE_CLOSE_SEQUENCE_ANON_TARGET_MSG = It is not possible to send an out-of-band close sequence to the anonymous address.
 
 POLICY_PROVIDER_CREATION_EXC = Failed to create provider for RM assertion.
 POLICY_REFERENCE_RESOLUTION_EXC = Policy reference {0} cannot be resolved.
@@ -34,7 +34,8 @@ SEQ_TERMINATED_EXC = The Sequence has be
 UNKNOWN_SEQ_EXC = The value of wsrm:Identifier is not a known Sequence identifier.
 INVALID_ACK_EXC = The SequenceAcknowledgement violates the cumulative acknowledgement invariant.
 MESSAGE_NR_ROLLOVER_EXC = The maximum value for wsrm:MessageNumber has been exceeded.
-LAST_MESSAGE_NUMBER_EXCEEDED_EXC = The value for wsrm:MessageNumber exceeds the value of the MessageNumber accompanying a LastMessage element in this Sequence.
+SEQUENCE_CLOSED_EXC = The Sequence has been closed.
+WSRM_REQUIRED_EXC = WS-ReliableMessaging is required by this endpoint.
 CREATE_SEQ_REFUSED = The create sequence request has been refused by the RM destination.
 
 SEQ_FAULT_MSG = Interceptor encountered a SequenceFault: {0}.

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java?rev=1137112&r1=1137111&r2=1137112&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java Sat Jun 18 01:51:01 2011
@@ -19,7 +19,6 @@
 
 package org.apache.cxf.ws.rm;
 
-
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -43,10 +42,15 @@ import org.apache.cxf.service.model.Inte
 import org.apache.cxf.service.model.OperationInfo;
 import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.ws.addressing.AttributedURIType;
+import org.apache.cxf.ws.addressing.EndpointReferenceType;
 import org.apache.cxf.ws.addressing.RelatesToType;
-import org.apache.cxf.ws.addressing.v200408.EndpointReferenceType;
 import org.apache.cxf.ws.rm.manager.SourcePolicyType;
-
+import org.apache.cxf.ws.rm.v200702.CreateSequenceResponseType;
+import org.apache.cxf.ws.rm.v200702.CreateSequenceType;
+import org.apache.cxf.ws.rm.v200702.Expires;
+import org.apache.cxf.ws.rm.v200702.Identifier;
+import org.apache.cxf.ws.rm.v200702.OfferType;
+import org.apache.cxf.ws.rm.v200702.TerminateSequenceType;
 
 /**
  * 
@@ -69,29 +73,34 @@ public class Proxy {
     }
 
     void acknowledge(DestinationSequence ds) throws RMException {        
-        if (RMConstants.getAnonymousAddress().equals(ds.getAcksTo().getAddress().getValue())) {
+        String address = ds.getAcksTo().getAddress().getValue();
+        if (RMUtils.getAddressingConstants().getAnonymousURI().equals(address)) {
             LOG.log(Level.WARNING, "STANDALONE_ANON_ACKS_NOT_SUPPORTED");
             return;
         }
         
+        RMConstants constants = reliableEndpoint.getEncoderDecoder().getConstants();
         OperationInfo oi = reliableEndpoint.getEndpoint().getEndpointInfo().getService().getInterface()
-            .getOperation(RMConstants.getSequenceAckOperationName());
+            .getOperation(constants.getSequenceAckOperationName());
         invoke(oi, new Object[] {ds}, null);
     }
     
     void terminate(SourceSequence ss) throws RMException {
+        RMConstants constants = reliableEndpoint.getEncoderDecoder().getConstants();
         OperationInfo oi = reliableEndpoint.getEndpoint().getEndpointInfo().getService().getInterface()
-            .getOperation(RMConstants.getTerminateSequenceOperationName());
+            .getOperation(constants.getTerminateSequenceOperationName());
         
         TerminateSequenceType ts = RMUtils.getWSRMFactory().createTerminateSequenceType();
         ts.setIdentifier(ss.getIdentifier());
-        invoke(oi, new Object[] {ts}, null);
+        EncoderDecoder codec = reliableEndpoint.getEncoderDecoder();
+        invoke(oi, new Object[] {codec.convertToSend(ts)}, null);
     }
     
-    void createSequenceResponse(final CreateSequenceResponseType createResponse) throws RMException {
+    void createSequenceResponse(final Object createResponse) throws RMException {
         LOG.fine("sending CreateSequenceResponse from client side");
+        RMConstants constants = reliableEndpoint.getEncoderDecoder().getConstants();
         final OperationInfo oi = reliableEndpoint.getEndpoint().getEndpointInfo().getService().getInterface()
-            .getOperation(RMConstants.getCreateSequenceResponseOnewayOperationName());
+            .getOperation(constants.getCreateSequenceResponseOnewayOperationName());
         
         // TODO: need to set relatesTo
 
@@ -105,12 +114,12 @@ public class Proxy {
                         boolean isServer) throws RMException {
         
         SourcePolicyType sp = reliableEndpoint.getManager().getSourcePolicy();
-        final CreateSequenceType create = RMUtils.getWSRMFactory().createCreateSequenceType();        
+        CreateSequenceType create = new CreateSequenceType();        
 
         String address = sp.getAcksTo();
         EndpointReferenceType acksTo = null;
         if (null != address) {
-            acksTo = RMUtils.createReference2004(address);
+            acksTo = RMUtils.createReference(address);
         } else {
             acksTo = defaultAcksTo; 
         }
@@ -118,16 +127,16 @@ public class Proxy {
 
         Duration d = sp.getSequenceExpiration();
         if (null != d) {
-            Expires expires = RMUtils.getWSRMFactory().createExpires();
+            Expires expires = new Expires();
             expires.setValue(d);  
             create.setExpires(expires);
         }
         
         if (sp.isIncludeOffer()) {
-            OfferType offer = RMUtils.getWSRMFactory().createOfferType();
+            OfferType offer = new OfferType();
             d = sp.getOfferedSequenceExpiration();
             if (null != d) {
-                Expires expires = RMUtils.getWSRMFactory().createExpires();
+                Expires expires = new Expires();
                 expires.setValue(d);  
                 offer.setExpires(expires);
             }
@@ -138,10 +147,13 @@ public class Proxy {
         
         InterfaceInfo ii = reliableEndpoint.getEndpoint().getEndpointInfo().getService().getInterface();
         
+        EncoderDecoder codec = reliableEndpoint.getEncoderDecoder();
+        RMConstants constants = codec.getConstants();
         final OperationInfo oi = isServer 
-            ? ii.getOperation(RMConstants.getCreateSequenceOnewayOperationName())
-            : ii.getOperation(RMConstants.getCreateSequenceOperationName());
-        
+            ? ii.getOperation(constants.getCreateSequenceOnewayOperationName())
+            : ii.getOperation(constants.getCreateSequenceOperationName());
+        final Object send = codec.convertToSend(create);
+            
         // tried using separate thread - did not help either
         
         if (isServer) {
@@ -149,7 +161,7 @@ public class Proxy {
             Runnable r = new Runnable() {
                 public void run() {
                     try {
-                        invoke(oi, new Object[] {create}, null);
+                        invoke(oi, new Object[] {send}, null);
                     } catch (RMException ex) {
                         // already logged
                     }
@@ -160,11 +172,12 @@ public class Proxy {
         }
         
         
-        return (CreateSequenceResponseType)invoke(oi, new Object[] {create}, null);
+        Object resp = invoke(oi, new Object[] {send}, null);
+        return codec.convertReceivedCreateSequenceResponse(resp);
     }
     
     void lastMessage(SourceSequence s) throws RMException {
-        org.apache.cxf.ws.addressing.EndpointReferenceType target = s.getTarget();
+        EndpointReferenceType target = s.getTarget();
         AttributedURIType uri = null;
         if (null != target) {
             uri = target.getAddress();
@@ -175,17 +188,18 @@ public class Proxy {
         }
         
         if (addr == null) {
-            LOG.log(Level.WARNING, "STANDALONE_LAST_MESSAGE_NO_TARGET_MSG");
+            LOG.log(Level.WARNING, "STANDALONE_CLOSE_SEQUENCE_NO_TARGET_MSG");
             return;
         }
         
         if (RMUtils.getAddressingConstants().getAnonymousURI().equals(addr)) {
-            LOG.log(Level.WARNING, "STANDALONE_LAST_MESSAGE_ANON_TARGET_MSG");
+            LOG.log(Level.WARNING, "STANDALONE_CLOSE_SEQUENCE_ANON_TARGET_MSG");
             return; 
         }
         
+        RMConstants constants = reliableEndpoint.getEncoderDecoder().getConstants();
         OperationInfo oi = reliableEndpoint.getEndpoint().getEndpointInfo().getService().getInterface()
-            .getOperation(RMConstants.getLastMessageOperationName());
+            .getOperation(constants.getCloseSequenceOperationName());
         // pass reference to source sequence in invocation context
         Map<String, Object> context = new HashMap<String, Object>(
                 Collections.singletonMap(SourceSequence.class.getName(), 
@@ -195,7 +209,7 @@ public class Proxy {
     }
     
     void ackRequested(SourceSequence s) throws RMException {
-        org.apache.cxf.ws.addressing.EndpointReferenceType target = s.getTarget();
+        EndpointReferenceType target = s.getTarget();
         AttributedURIType uri = null;
         if (null != target) {
             uri = target.getAddress();
@@ -215,8 +229,9 @@ public class Proxy {
             return; 
         }
         
+        RMConstants constants = reliableEndpoint.getEncoderDecoder().getConstants();
         OperationInfo oi = reliableEndpoint.getEndpoint().getEndpointInfo().getService().getInterface()
-            .getOperation(RMConstants.getAckRequestedOperationName());
+            .getOperation(constants.getAckRequestedOperationName());
         invoke(oi, new Object[] {}, null);
     }
         
@@ -244,19 +259,16 @@ public class Proxy {
         Conduit c = reliableEndpoint.getConduit();
         Client client = null;
         if (params.length > 0 && params[0] instanceof DestinationSequence) {
-            EndpointReferenceType acksTo = 
-                ((DestinationSequence)params[0]).getAcksTo();
+            EndpointReferenceType acksTo = ((DestinationSequence)params[0]).getAcksTo();
             String acksAddress = acksTo.getAddress().getValue();
-            org.apache.cxf.ws.addressing.AttributedURIType attrURIType = 
-                new org.apache.cxf.ws.addressing.AttributedURIType();
+            AttributedURIType attrURIType =  new AttributedURIType();
             attrURIType.setValue(acksAddress);
-            org.apache.cxf.ws.addressing.EndpointReferenceType acks = 
-                new org.apache.cxf.ws.addressing.EndpointReferenceType();
+            EndpointReferenceType acks =  new EndpointReferenceType();
             acks.setAddress(attrURIType);
             client = createClient(bus, endpoint, c, acks);
             params = new Object[] {};
         } else {
-            org.apache.cxf.ws.addressing.EndpointReferenceType replyTo = reliableEndpoint.getReplyTo();
+            EndpointReferenceType replyTo = reliableEndpoint.getReplyTo();
             client = createClient(bus, endpoint, c, replyTo);
         }
         
@@ -278,13 +290,13 @@ public class Proxy {
     }
     
     protected Client createClient(Bus bus, Endpoint endpoint, Conduit conduit,
-                                  final org.apache.cxf.ws.addressing.EndpointReferenceType address) {
+                                  final EndpointReferenceType address) {
         ConduitSelector cs = new DeferredConduitSelector(conduit) {
             @Override
             public synchronized Conduit selectConduit(Message message) {
                 Conduit conduit = null;
                 EndpointInfo endpointInfo = getEndpoint().getEndpointInfo();
-                org.apache.cxf.ws.addressing.EndpointReferenceType original = 
+                EndpointReferenceType original = 
                     endpointInfo.getTarget();
                 try {
                     if (null != address) {
@@ -318,6 +330,4 @@ public class Proxy {
     void setReliableEndpoint(RMEndpoint rme) {
         reliableEndpoint = rme;
     }
-    
-
-}
+}
\ No newline at end of file

Added: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RM10Constants.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RM10Constants.java?rev=1137112&view=auto
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RM10Constants.java (added)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RM10Constants.java Sat Jun 18 01:51:01 2011
@@ -0,0 +1,246 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.ws.rm;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Holder for names for WS-ReliableMessaging 1.0.
+ */
+public final class RM10Constants extends RMConstants {
+    
+    public static final RM10Constants INSTANCE = new RM10Constants();
+    
+    // namespaces
+    public static final String NAMESPACE_URI = "http://schemas.xmlsoap.org/ws/2005/02/rm";
+    
+    public static final String WSRMP_NAMESPACE_URI = "http://schemas.xmlsoap.org/ws/2005/02/rm/policy";
+    
+    public static final String WSDL_NAMESPACE_URI = NAMESPACE_URI + "/wsdl";
+    
+    // element and header names
+    
+    public static final QName SEQUENCE_QNAME = new QName(NAMESPACE_URI, SEQUENCE_NAME);
+    
+    public static final QName SEQUENCE_FAULT_QNAME = new QName(NAMESPACE_URI, SEQUENCE_FAULT_NAME);
+    
+    public static final QName SEQUENCE_ACK_QNAME = new QName(NAMESPACE_URI, SEQUENCE_ACK_NAME);
+    
+    public static final QName ACK_REQUESTED_QNAME = new QName(NAMESPACE_URI, ACK_REQUESTED_NAME);
+    
+    public static final QName WSRMP_RMASSERTION_QNAME = new QName(WSRMP_NAMESPACE_URI, RMASSERTION_NAME);
+    
+    // protocol operation names
+    
+    public static final QName PORT_NAME =
+        new QName(WSDL_NAMESPACE_URI, "SequenceAbstractSoapPort"); 
+    
+    public static final QName CREATE_SEQUENCE_QNAME = new QName(NAMESPACE_URI, "CreateSequence");
+    
+    public static final QName CREATE_SEQUENCE_RESPONSE_QNAME =
+        new QName(NAMESPACE_URI, "CreateSequenceResponse");
+    
+    public static final QName TERMINATE_SEQUENCE_QNAME =
+        new QName(NAMESPACE_URI, "TerminateSequence");
+    
+    public static final QName SEQUENCE_ACKNOWLEDGEMENT_QNAME =
+        new QName(NAMESPACE_URI, "SequenceAcknowledgement");
+    
+    public static final QName CLOSE_SEQUENCE_QNAME = new QName(NAMESPACE_URI, "LastMessage");
+    
+    public static final QName ACK_REQ_QNAME = new QName(NAMESPACE_URI, "AckRequested");
+    
+    public static final QName CREATE_SEQUENCE_ONEWAY_QNAME =
+        new QName(NAMESPACE_URI, "CreateSequenceOneway");
+    
+    public static final QName CREATE_SEQUENCE_RESPONSE_ONEWAY_QNAME =
+        new QName(NAMESPACE_URI, "CreateSequenceResponseOneway");
+    
+    public static final QName RMASSERTION_QNAME =  new QName(WSRMP_NAMESPACE_URI, RMASSERTION_NAME);
+
+    // actions
+    
+    public static final String CREATE_SEQUENCE_ACTION =
+        NAMESPACE_URI + "/CreateSequence";
+    
+    public static final String CREATE_SEQUENCE_RESPONSE_ACTION =
+        NAMESPACE_URI + "/CreateSequenceResponse";
+    
+    public static final String TERMINATE_SEQUENCE_ACTION =
+        NAMESPACE_URI + "/TerminateSequence";
+    
+    public static final String CLOSE_SEQUENCE_ACTION =
+        NAMESPACE_URI + "/LastMessage";    
+    
+    public static final String ACK_REQUESTED_ACTION =
+        NAMESPACE_URI + "/AckRequested";
+    
+    public static final String SEQUENCE_ACKNOWLEDGMENT_ACTION =
+        NAMESPACE_URI + "/SequenceAcknowledgement";
+    
+    public static final String SEQUENCE_INFO_ACTION =
+        NAMESPACE_URI + "/SequenceInfo";
+    
+    public static final Set<String> ACTIONS;
+    static {
+        Set<String> actions = new HashSet<String>();
+        actions.add(CREATE_SEQUENCE_ACTION);
+        actions.add(CREATE_SEQUENCE_RESPONSE_ACTION);
+        actions.add(TERMINATE_SEQUENCE_ACTION);
+        actions.add(CLOSE_SEQUENCE_ACTION);
+        actions.add(ACK_REQUESTED_ACTION);
+        actions.add(SEQUENCE_ACKNOWLEDGMENT_ACTION);
+        actions.add(SEQUENCE_INFO_ACTION);
+        ACTIONS = actions;
+    }
+
+    // fault codes
+    
+    public static final QName UNKNOWN_SEQUENCE_FAULT_QNAME =
+        new QName(NAMESPACE_URI, UNKNOWN_SEQUENCE_FAULT_CODE);
+    
+    public static final QName SEQUENCE_TERMINATED_FAULT_QNAME =
+        new QName(NAMESPACE_URI, SEQUENCE_TERMINATED_FAULT_CODE);
+    
+    public static final QName INVALID_ACKNOWLEDGMENT_FAULT_QNAME =
+        new QName(NAMESPACE_URI, INVALID_ACKNOWLEDGMENT_FAULT_CODE);
+    
+    public static final QName MESSAGE_NUMBER_ROLLOVER_FAULT_QNAME =
+        new QName(NAMESPACE_URI, MESSAGE_NUMBER_ROLLOVER_FAULT_CODE);
+    
+    public static final QName CREATE_SEQUENCE_REFUSED_FAULT_QNAME =
+        new QName(NAMESPACE_URI, CREATE_SEQUENCE_REFUSED_FAULT_CODE);
+    
+    // headers
+    
+    public static final Set<QName> HEADERS;
+    static {
+        Set<QName> headers = new HashSet<QName>();
+        headers.add(new QName(NAMESPACE_URI, SEQUENCE_NAME));
+        headers.add(new QName(NAMESPACE_URI, SEQUENCE_ACK_NAME));
+        headers.add(new QName(NAMESPACE_URI, ACK_REQUESTED_NAME));
+        HEADERS = Collections.unmodifiableSet(headers);
+    }
+    
+    private RM10Constants() {
+    }
+    
+    // actions access methods
+    
+    public String getCreateSequenceAction() {
+        return CREATE_SEQUENCE_ACTION;
+    }
+
+    public String getCreateSequenceResponseAction() {
+        return CREATE_SEQUENCE_RESPONSE_ACTION;
+    }
+    
+    public String getTerminateSequenceAction() {
+        return TERMINATE_SEQUENCE_ACTION;
+    }
+    
+    public String getCloseSequenceAction() {
+        return CLOSE_SEQUENCE_ACTION;
+    }
+    
+    public String getAckRequestedAction() {
+        return ACK_REQUESTED_ACTION;
+    }
+    
+    public String getSequenceAckAction() {
+        return SEQUENCE_ACKNOWLEDGMENT_ACTION;
+    }
+    
+    public String getSequenceInfoAction() {
+        return SEQUENCE_INFO_ACTION;
+    }
+    
+    // service model constants access methods
+    
+    public QName getPortName() {
+        return PORT_NAME;
+    }
+    
+    public QName getCreateSequenceOperationName() {
+        return CREATE_SEQUENCE_QNAME;
+    }
+    
+    public QName getCreateSequenceResponseOperationName() {
+        return CREATE_SEQUENCE_RESPONSE_QNAME;
+    }
+    
+    public QName getCreateSequenceOnewayOperationName() {
+        return CREATE_SEQUENCE_ONEWAY_QNAME;
+    }
+    
+    public QName getCreateSequenceResponseOnewayOperationName() {
+        return CREATE_SEQUENCE_RESPONSE_ONEWAY_QNAME;
+    }
+    
+    public QName getTerminateSequenceOperationName() {
+        return TERMINATE_SEQUENCE_QNAME;
+    }
+    
+    public QName getSequenceAckOperationName() {
+        return SEQUENCE_ACKNOWLEDGEMENT_QNAME;
+    }
+    
+    public QName getCloseSequenceOperationName() {
+        return CLOSE_SEQUENCE_QNAME;
+    }
+    
+    public QName getAckRequestedOperationName() {
+        return ACK_REQ_QNAME;
+    }
+    
+    // fault codes access methods
+    
+    public QName getUnknownSequenceFaultCode() {
+        return UNKNOWN_SEQUENCE_FAULT_QNAME;
+    }
+        
+    public QName getSequenceTerminatedFaultCode() {
+        return SEQUENCE_TERMINATED_FAULT_QNAME;
+    }
+        
+    public QName getInvalidAcknowledgmentFaultCode() {
+        return INVALID_ACKNOWLEDGMENT_FAULT_QNAME;
+    }
+  
+    public QName getMessageNumberRolloverFaultCode() {
+        return MESSAGE_NUMBER_ROLLOVER_FAULT_QNAME;
+    }
+    
+    public QName getCreateSequenceRefusedFaultCode() {
+        return CREATE_SEQUENCE_REFUSED_FAULT_QNAME;
+    }
+    
+    public QName getSequenceClosedFaultCode() {
+        return null;
+    }
+    
+    public QName getWSRMRequiredFaultCode() {
+        return null;
+    }
+}
\ No newline at end of file