You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by an...@apache.org on 2007/02/07 18:11:27 UTC

svn commit: r504621 [2/2] - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/phase/ api/src/main/java/org/apache/cxf/ws/policy/ api/src/test/java/org/apache/cxf/phase/ rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/ rt/ws/policy/src/main/...

Added: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyTest.java?view=auto&rev=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyTest.java (added)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyTest.java Wed Feb  7 09:11:23 2007
@@ -0,0 +1,138 @@
+/**
+ * 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.policy;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import junit.framework.TestCase;
+
+import org.apache.cxf.helpers.CastUtils;
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Constants;
+import org.apache.neethi.Policy;
+import org.apache.neethi.PolicyComponent;
+import org.apache.neethi.PolicyOperator;
+
+/**
+ * 
+ */
+public class PolicyTest extends TestCase {
+
+    private static final String INDENT = "  ";
+    
+    public void testNothing() {
+    }
+    
+    public void xtestMergeIdentical() {
+        Policy p1 = new Policy();
+        Assertion a1 = new TestAssertion(new QName("http://x.y.z", "a"));
+        p1.addPolicyComponent(a1);
+        System.out.println("Policy p1:");
+        printPolicyComponent(p1);
+        
+        Policy p2 = new Policy();
+        Assertion a2 = new TestAssertion(new QName("http://x.y.z", "b"));
+        p2.addPolicyComponent(a2);
+        System.out.println("Policy p2:");
+        printPolicyComponent(p2);
+        
+        Policy p3 = new Policy();
+        p3.addPolicyComponent(a1);
+        System.out.println("Policy p3:");
+        printPolicyComponent(p3);
+        
+        Policy p = p1.merge(p2);
+        System.out.println("p1 merged with p2:");
+        printPolicyComponent(p);
+        
+        System.out.println("normalised merge result:");
+        printPolicyComponent(p.normalize(true));
+        
+        p = p1.merge(p3);
+        System.out.println("p1 merged with p3:");
+        printPolicyComponent(p);
+        
+        System.out.println("normalised merge result:");
+        printPolicyComponent(p.normalize(true));
+        
+        
+        
+        
+    }
+    
+    private void printPolicyComponent(PolicyComponent pc) {
+        StringBuffer buf = new StringBuffer();
+        printPolicyComponent(pc, buf, 0);
+        System.out.println(buf.toString());
+    }
+    
+    private void printPolicyComponent(PolicyComponent pc, StringBuffer buf, int level) {
+        indent(buf, level);
+        buf.append("type: ");
+        buf.append(typeToString(pc.getType()));
+        if (Constants.TYPE_ASSERTION == pc.getType()) {
+            buf.append(" (");
+            buf.append(((Assertion)pc).getName());
+            buf.append(")");
+            nl(buf);
+        } else {
+            level++;
+            List<PolicyComponent> children = CastUtils.cast(((PolicyOperator)pc).getPolicyComponents(),
+                PolicyComponent.class);
+            nl(buf);
+            for (PolicyComponent child : children) {
+                printPolicyComponent(child, buf, level);
+            }
+            level--;
+        }
+    }
+    
+    private void indent(StringBuffer buf, int level) {
+        for (int i = 0; i < level; i++) {
+            buf.append(INDENT);
+        }
+    }
+    
+    private void nl(StringBuffer buf) {
+        buf.append(System.getProperty("line.separator"));
+    }
+    
+    private String typeToString(short type) {
+        switch(type) {
+        case Constants.TYPE_ASSERTION:
+            return "Assertion";
+        case Constants.TYPE_ALL:
+            return "All";
+        case Constants.TYPE_EXACTLYONE:
+            return "ExactlyOne";
+        case Constants.TYPE_POLICY:
+            return "Policy";
+        case Constants.TYPE_POLICY_REF:
+            return "PolicyReference";
+        default:
+            break;
+        }
+        return "";
+    }
+    
+    
+}

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/TestAssertion.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/TestAssertion.java?view=auto&rev=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/TestAssertion.java (added)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/TestAssertion.java Wed Feb  7 09:11:23 2007
@@ -0,0 +1,68 @@
+/**
+ * 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.policy;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.neethi.Assertion;
+import org.apache.neethi.Constants;
+import org.apache.neethi.PolicyComponent;
+
+/**
+ * 
+ */
+public class TestAssertion implements Assertion {
+    
+    private QName name;
+    private boolean optional;
+    
+    TestAssertion() {
+        this(null);
+    }
+    
+    TestAssertion(QName n) {
+        name = n;
+    }
+    
+    public QName getName() {
+        return name;
+    }
+
+    public boolean isOptional() {
+        return optional;
+    }
+
+    public PolicyComponent normalize() {
+        return this;
+    }
+
+    public void serialize(XMLStreamWriter writer) throws XMLStreamException {
+    }
+
+    public boolean equal(PolicyComponent policyComponent) {
+        return this == policyComponent;
+    }
+
+    public short getType() {
+        return Constants.TYPE_ASSERTION;
+    }
+}

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/TestAssertion.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/TestAssertion.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProviderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProviderTest.java?view=diff&rev=504621&r1=504620&r2=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProviderTest.java (original)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProviderTest.java Wed Feb  7 09:11:23 2007
@@ -61,7 +61,6 @@
 
     private static final String NAMESPACE_URI = "http://apache.org/cxf/calculator";
     private static final QName OPERATION_NAME = new QName(NAMESPACE_URI, "add");
-    // private static Bus bus;
     private static ServiceInfo[] services;
     private static EndpointInfo[] endpoints;
     private Wsdl11AttachmentPolicyProvider app; 

Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/builders/jaxb/JaxbAssertionBuilderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/builders/jaxb/JaxbAssertionBuilderTest.java?view=diff&rev=504621&r1=504620&r2=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/builders/jaxb/JaxbAssertionBuilderTest.java (original)
+++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/builders/jaxb/JaxbAssertionBuilderTest.java Wed Feb  7 09:11:23 2007
@@ -37,7 +37,21 @@
  */
 public class JaxbAssertionBuilderTest extends TestCase {
     
-    public void testGetSupported() throws Exception {
+    public void testConstructors() throws Exception {        
+        QName qn = new QName("http://cxf.apache.org/test/assertions/foo", "FooType");
+        try {
+            new JaxbAssertionBuilder("org.apache.cxf.test.assertions.foo.UnknownType", qn);
+            fail("Expected ClassNotFoundException not thrown.");
+        } catch (ClassNotFoundException ex) {
+            // expected
+        }
+        assertNotNull(new JaxbAssertionBuilder(qn)); 
+        assertNotNull(new JaxbAssertionBuilder("org.apache.cxf.test.assertions.foo.FooType", qn));   
+        assertNotNull(new JaxbAssertionBuilder<FooType>(FooType.class, qn));
+    }
+    
+    
+    public void testGetKnownElements() throws Exception {
         QName qn = new QName("http://cxf.apache.org/test/assertions/foo", "FooType");
         JaxbAssertionBuilder<FooType> ab = new JaxbAssertionBuilder<FooType>(FooType.class, qn);
         assertNotNull(ab);
@@ -58,8 +72,7 @@
         JaxbAssertion<FooType> jba = (JaxbAssertion<FooType>)a;
         FooType foo = jba.getData();
         assertEquals("CXF", foo.getName());
-        assertEquals(2, foo.getNumber().intValue()); 
-        
+        assertEquals(2, foo.getNumber().intValue());         
     }
 
 }

Modified: incubator/cxf/trunk/rt/ws/rm/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/rm/pom.xml?view=diff&rev=504621&r1=504620&r2=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/rm/pom.xml (original)
+++ incubator/cxf/trunk/rt/ws/rm/pom.xml Wed Feb  7 09:11:23 2007
@@ -54,12 +54,12 @@
             <version>${project.version}</version>
         </dependency>
         <!--
+        -->
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-ws-policy</artifactId>
             <version>${project.version}</version>
         </dependency>
-        -->
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-ws-addr</artifactId>

Modified: incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConstants.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConstants.java?view=diff&rev=504621&r1=504620&r2=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConstants.java (original)
+++ incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConstants.java Wed Feb  7 09:11:23 2007
@@ -69,6 +69,11 @@
     
     private static final String WSA_NONE_ADDRESS =
         WSA_NAMESPACE_NAME + "/none";
+    
+    private static final String RMASSERTION_NAME = "RMAssertion";
+    
+    private static final QName RMASSERTION_QNAME = 
+        new QName(WSRMP_NAMESPACE_NAME, RMASSERTION_NAME);
       
     /**
      * The set of headers understood by the protocol binding.
@@ -147,6 +152,8 @@
         return HEADERS;
     }
     
+    // namespaces
+    
     public static String getNamespace() {
         return WSRM_NAMESPACE_NAME; 
     }
@@ -165,7 +172,9 @@
     
     public static  String getWsdlNamespace() {
         return WSRM_WSDL_NAMESPACE_NAME;
-    }    
+    }  
+    
+    // schema type constants
   
     public static String getSequenceName() {
         return WSRM_SEQUENCE_NAME;
@@ -199,6 +208,8 @@
         return WSA_NONE_ADDRESS;
     }
     
+    // service model constants
+    
     public static QName getCreateSequenceOperationName() {
         return WSRM_CREATE_SEQUENCE_QNAME;
     }
@@ -223,6 +234,8 @@
         return WSRM_SEQUENCE_ACKNOWLEDGEMENT_QNAME;
     }
     
+    // actions
+    
     public static String getCreateSequenceAction() {
         return WSRM_CREATE_SEQUENCE_ACTION;
     }
@@ -251,6 +264,8 @@
         return WSRM_SEQUENCE_INFO_ACTION;
     }
     
+    // fault codes
+    
     public static QName getUnknownSequenceFaultCode() {
         return new QName(WSRM_NAMESPACE_NAME, WSRM_UNKNOWN_SEQUENCE_FAULT_CODE);
     }
@@ -273,5 +288,15 @@
     
     public static QName getLastMessageNumberExceededFaultCode() {
         return new QName(WSRM_NAMESPACE_NAME, WSRM_LAST_MESSAGE_NUMBER_EXCEEDED_FAULT_CODE);
+    }
+    
+    // policies
+    
+    public static String getRMAssertionName() {
+        return RMASSERTION_NAME;
+    }
+    
+    public static QName getRMAssertionQName() {
+        return RMASSERTION_QNAME;
     }
 }

Modified: incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java?view=diff&rev=504621&r1=504620&r2=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java (original)
+++ incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java Wed Feb  7 09:11:23 2007
@@ -171,7 +171,7 @@
                 rmpsOut.addAck(seq);
             } else if (LOG.isLoggable(Level.FINE)) {
                 if (!seq.sendAcknowledgement()) {
-                    LOG.fine("no need to add an acknowledgements for sequence "
+                    LOG.fine("no need to add acknowledgements for sequence "
                              + seq.getIdentifier().getValue());
                 } else {
                     LOG.fine("sequences acksTo address (" + seq.getAcksTo().getAddress().getValue()

Added: incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyInterceptorProvider.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyInterceptorProvider.java?view=auto&rev=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyInterceptorProvider.java (added)
+++ incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyInterceptorProvider.java Wed Feb  7 09:11:23 2007
@@ -0,0 +1,47 @@
+/**
+ * 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.policy;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.interceptor.AbstractAttributedInterceptorProvider;
+import org.apache.cxf.ws.policy.PolicyInterceptorProvider;
+import org.apache.cxf.ws.rm.RMConstants;
+
+/**
+ * 
+ */
+public class RMPolicyInterceptorProvider  extends AbstractAttributedInterceptorProvider 
+    implements PolicyInterceptorProvider {
+
+    private static final Collection<QName> ASSERTION_TYPES 
+        = Collections.singletonList(RMConstants.getRMAssertionQName());    
+    
+    public RMPolicyInterceptorProvider() {
+        // configurable content
+    } 
+    
+    public Collection<QName> getAssertionTypes() {
+        return ASSERTION_TYPES;
+    }
+}

Propchange: incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyInterceptorProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyInterceptorProvider.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/rt/ws/rm/src/main/resources/META-INF/cxf/cxf-extension-rm.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/rm/src/main/resources/META-INF/cxf/cxf-extension-rm.xml?view=diff&rev=504621&r1=504620&r2=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/rm/src/main/resources/META-INF/cxf/cxf-extension-rm.xml (original)
+++ incubator/cxf/trunk/rt/ws/rm/src/main/resources/META-INF/cxf/cxf-extension-rm.xml Wed Feb  7 09:11:23 2007
@@ -27,4 +27,63 @@
         <property name="bus" ref="cxf"/>
     </bean>
     
+    <!-- global definition of interceptors, may need to switch qualified names -->
+    
+    <bean id="mapAggregator" class="org.apache.cxf.ws.addressing.MAPAggregator"/>
+    <bean id="mapCodec" class="org.apache.cxf.ws.addressing.soap.MAPCodec"/>
+    <bean id="rmLogicalOut" class="org.apache.cxf.ws.rm.RMOutInterceptor">
+        <property name="bus" ref="cxf"/>
+    </bean>
+    <bean id="rmLogicalIn" class="org.apache.cxf.ws.rm.RMInInterceptor">
+        <property name="bus" ref="cxf"/>
+    </bean>    
+    <bean id="rmCodec" class="org.apache.cxf.ws.rm.soap.RMSoapInterceptor"/>
+    
+    <bean class="org.apache.cxf.ws.rm.policy.RMPolicyInterceptorProvider">
+        <property name="inInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalIn"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+        <property name="inFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <!--
+                <ref bean="mapCodec"/>
+                -->
+                <ref bean="rmLogicalIn"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+        <property name="outInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalOut"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+        <property name="outFaultInterceptors">
+            <list>
+                <ref bean="mapAggregator"/>
+                <ref bean="mapCodec"/>
+                <ref bean="rmLogicalOut"/>
+                <ref bean="rmCodec"/>
+            </list>
+        </property>
+    </bean>
+    
+    <bean id="org.apache.cxf.ws.rm.RMAssertionBuilder" class="org.apache.cxf.ws.policy.builders.jaxb.JaxbAssertionBuilder">
+        <constructor-arg value="org.apache.cxf.ws.rm.policy.RMAssertion"/>
+        <constructor-arg>
+            <bean class="javax.xml.namespace.QName">
+              <constructor-arg value="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"/>
+              <constructor-arg value="RMAssertion"/>
+          </bean>
+        </constructor-arg>
+    </bean>
+    
 </beans>

Added: incubator/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/RMPolicyExtensionsTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/RMPolicyExtensionsTest.java?view=auto&rev=504621
==============================================================================
--- incubator/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/RMPolicyExtensionsTest.java (added)
+++ incubator/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/RMPolicyExtensionsTest.java Wed Feb  7 09:11:23 2007
@@ -0,0 +1,72 @@
+/**
+ * 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.policy;
+
+import junit.framework.TestCase;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.phase.PhaseInterceptorChain;
+import org.apache.cxf.phase.PhaseManager;
+import org.apache.cxf.ws.policy.AssertionBuilder;
+import org.apache.cxf.ws.policy.AssertionBuilderRegistry;
+import org.apache.cxf.ws.policy.PolicyInterceptorProvider;
+import org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry;
+import org.apache.cxf.ws.rm.RMConstants;
+
+/**
+ * 
+ */
+public class RMPolicyExtensionsTest extends TestCase {
+
+    public void testExtensions() {
+        Bus bus = null;
+        try {
+            bus = new SpringBusFactory().createBus();
+
+            AssertionBuilderRegistry abr = bus.getExtension(AssertionBuilderRegistry.class);
+            assertNotNull(abr);
+            AssertionBuilder ab = abr.get(RMConstants.getRMAssertionQName());
+            assertNotNull(ab);
+
+            PolicyInterceptorProviderRegistry pipr = bus
+                .getExtension(PolicyInterceptorProviderRegistry.class);
+            assertNotNull(pipr);
+            PolicyInterceptorProvider pip = pipr.get(RMConstants.getRMAssertionQName());
+            assertNotNull(pip);
+            
+            assertEquals(4, pip.getOutInterceptors().size());
+            assertEquals(4, pip.getOutFaultInterceptors().size());
+            assertEquals(4, pip.getInInterceptors().size());
+            assertEquals(3, pip.getInFaultInterceptors().size());
+            
+            PhaseManager pm = bus.getExtension(PhaseManager.class);
+            PhaseInterceptorChain chain = new PhaseInterceptorChain(pm.getOutPhases());
+            chain.add(pip.getOutInterceptors());
+            
+        } finally {
+            if (null != bus) {
+                bus.shutdown(true);
+                BusFactory.setDefaultBus(null);
+            }
+        }
+    }
+}

Propchange: incubator/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/RMPolicyExtensionsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/RMPolicyExtensionsTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java?view=diff&rev=504621&r1=504620&r2=504621
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java Wed Feb  7 09:11:23 2007
@@ -53,7 +53,6 @@
         greeterBus = bf.createBus(cfgResource);
         BusFactory.setDefaultBus(greeterBus);
         LOG.info("Initialised bus with cfg file resource: " + cfgResource);
-        // greeterBus.getOutInterceptors().add(new JaxwsInterceptorRemover());
         greeterBus.getOutInterceptors().add(new OutMessageRecorder());
         greeterBus.getInInterceptors().add(new InMessageRecorder());
         

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java?view=diff&rev=504621&r1=504620&r2=504621
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/rm/SequenceTest.java Wed Feb  7 09:11:23 2007
@@ -20,6 +20,8 @@
 package org.apache.cxf.systest.ws.rm;
 
 import java.math.BigInteger;
+import java.util.Iterator;
+import java.util.List;
 import java.util.logging.Logger;
 
 import junit.framework.Test;
@@ -32,10 +34,14 @@
 import org.apache.cxf.greeter_control.ControlService;
 import org.apache.cxf.greeter_control.Greeter;
 import org.apache.cxf.greeter_control.GreeterService;
+import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.systest.common.ClientServerSetupBase;
 import org.apache.cxf.systest.common.ClientServerTestBase;
 import org.apache.cxf.ws.rm.RMConstants;
+import org.apache.cxf.ws.rm.RMInInterceptor;
 import org.apache.cxf.ws.rm.RMManager;
+import org.apache.cxf.ws.rm.RMOutInterceptor;
+import org.apache.cxf.ws.rm.soap.RMSoapInterceptor;
 
 
 /**
@@ -117,8 +123,13 @@
         }
     }
 
+    /** 
+      * Server is configured with RM interceptors, client without;
+      * Addressing interceptors are installed on either side.
+      * The (oneway) application request should be dispatched straight to the
+      * implementor.
+      */
     public void xtestRMServerPlainClient() throws Exception {
-        setupGreeter("org/apache/cxf/systest/ws/rm/anonymous.xml");
 
         SpringBusFactory bf = new SpringBusFactory();
         
@@ -129,12 +140,15 @@
         control = cs.getControlPort();
 
         assertTrue("Failed to start greeter",
-            control.startGreeter("org/apache/cxf/systest/ws/rm/twoway.xml"));
-        
+            control.startGreeter("org/apache/cxf/systest/ws/rm/anonymous.xml"));
 
-        greeterBus = bf.createBus();
+        greeterBus = bf.createBus("org/apache/cxf/systest/ws/rm/anonymous.xml");
         BusFactory.setDefaultBus(greeterBus);
-        LOG.fine("Initialised greeter default bus with configuration");
+        removeRMInterceptors(greeterBus.getOutInterceptors());
+        removeRMInterceptors(greeterBus.getOutFaultInterceptors());
+        removeRMInterceptors(greeterBus.getInInterceptors());
+        removeRMInterceptors(greeterBus.getInFaultInterceptors());
+        LOG.fine("Initialised greeter bus with addressing but without RM interceptors");
 
         outRecorder = new OutMessageRecorder();
         greeterBus.getOutInterceptors().add(outRecorder);
@@ -145,7 +159,7 @@
         greeter = gs.getGreeterPort();
         LOG.fine("Created greeter client.");
 
-        greeter.greetMe("Andrea");
+        greeter.greetMeOneWay("once");
 
     }
 
@@ -803,5 +817,17 @@
         }
         assertEquals("Did not receive expected number of inbound messages", nExpectedIn, nIn);
         assertEquals("Did not send expected number of outbound messages", nExpectedOut, nOut);        
+    }
+
+    private void removeRMInterceptors(List<Interceptor> interceptors) {
+        int n = interceptors.size();
+        for (Iterator<Interceptor> it = interceptors.iterator(); it.hasNext();) {
+            Interceptor i = it.next();
+            if (i instanceof RMSoapInterceptor
+                || i instanceof RMOutInterceptor
+                || i instanceof RMInInterceptor) {
+                it.remove();
+            }
+        }
     }
 }