Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java?view=diff&rev=510614&r1=510613&r2=510614 ============================================================================== --- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java (original) +++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyInterceptorsTest.java Thu Feb 22 10:28:42 2007 @@ -19,19 +19,22 @@ package org.apache.cxf.ws.policy; +import java.util.Collection; import java.util.Collections; import junit.framework.TestCase; import org.apache.cxf.Bus; +import org.apache.cxf.endpoint.Endpoint; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.interceptor.Interceptor; import org.apache.cxf.interceptor.InterceptorChain; +import org.apache.cxf.message.Exchange; import org.apache.cxf.message.Message; import org.apache.cxf.service.model.BindingOperationInfo; -import org.apache.cxf.service.model.EndpointInfo; import org.apache.cxf.transport.Conduit; import org.apache.cxf.transport.Destination; +import org.apache.neethi.Assertion; import org.easymock.classextension.EasyMock; import org.easymock.classextension.IMocksControl; @@ -42,8 +45,9 @@ private IMocksControl control; private Message message; + private Exchange exchange; private BindingOperationInfo boi; - private EndpointInfo ei; + private Endpoint endpoint; private Bus bus; private PolicyEngine pe; private Conduit conduit; @@ -64,12 +68,15 @@ control.reset(); setupMessage(true, true, true, true, true, true); Interceptor i = control.createMock(Interceptor.class); - EasyMock.expect(pe.getClientOutInterceptors(boi, ei, conduit)) + EasyMock.expect(pe.getClientOutInterceptors(endpoint, boi, conduit)) .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class)); InterceptorChain ic = control.createMock(InterceptorChain.class); EasyMock.expect(message.getInterceptorChain()).andReturn(ic); ic.add(i); EasyMock.expectLastCall(); + Collection<Assertion> assertions = CastUtils.cast(Collections.EMPTY_LIST, Assertion.class); + EasyMock.expect(pe.getClientOutAssertions(endpoint, boi, conduit)).andReturn(assertions); + EasyMock.expect(message.put(PolicyConstants.CLIENT_OUT_ASSERTIONS, assertions)).andReturn(null); control.replay(); interceptor.handleMessage(message); control.verify(); @@ -84,7 +91,7 @@ control.reset(); setupMessage(true, true, false, false, true, true); Interceptor i = control.createMock(Interceptor.class); - EasyMock.expect(pe.getClientInInterceptors(ei, conduit)) + EasyMock.expect(pe.getClientInInterceptors(endpoint, conduit)) .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class)); InterceptorChain ic = control.createMock(InterceptorChain.class); EasyMock.expect(message.getInterceptorChain()).andReturn(ic); @@ -94,7 +101,7 @@ interceptor.handleMessage(message); control.verify(); } - + public void testClientPolicyInFaultInterceptor() { ClientPolicyInFaultInterceptor interceptor = new ClientPolicyInFaultInterceptor(); interceptor.setBus(bus); @@ -104,7 +111,7 @@ control.reset(); setupMessage(true, true, false, false, true, true); Interceptor i = control.createMock(Interceptor.class); - EasyMock.expect(pe.getClientInFaultInterceptors(ei, conduit)) + EasyMock.expect(pe.getClientInFaultInterceptors(endpoint, conduit)) .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class)); InterceptorChain ic = control.createMock(InterceptorChain.class); EasyMock.expect(message.getInterceptorChain()).andReturn(ic); @@ -114,7 +121,7 @@ interceptor.handleMessage(message); control.verify(); } - + public void testServerPolicyInInterceptor() { ServerPolicyInInterceptor interceptor = new ServerPolicyInInterceptor(); interceptor.setBus(bus); @@ -124,7 +131,7 @@ control.reset(); setupMessage(false, false, false, false, true, true); Interceptor i = control.createMock(Interceptor.class); - EasyMock.expect(pe.getServerInInterceptors(ei, destination)) + EasyMock.expect(pe.getServerInInterceptors(endpoint, destination)) .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class)); InterceptorChain ic = control.createMock(InterceptorChain.class); EasyMock.expect(message.getInterceptorChain()).andReturn(ic); @@ -144,12 +151,15 @@ control.reset(); setupMessage(false, false, true, true, true, true); Interceptor i = control.createMock(Interceptor.class); - EasyMock.expect(pe.getServerOutInterceptors(boi, ei, destination)) + EasyMock.expect(pe.getServerOutInterceptors(endpoint, boi, destination)) .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class)); InterceptorChain ic = control.createMock(InterceptorChain.class); EasyMock.expect(message.getInterceptorChain()).andReturn(ic); ic.add(i); EasyMock.expectLastCall(); + Collection<Assertion> assertions = CastUtils.cast(Collections.EMPTY_LIST, Assertion.class); + EasyMock.expect(pe.getServerOutAssertions(endpoint, boi, destination)).andReturn(assertions); + EasyMock.expect(message.put(PolicyConstants.SERVER_OUT_ASSERTIONS, assertions)).andReturn(null); control.replay(); interceptor.handleMessage(message); control.verify(); @@ -164,7 +174,7 @@ control.reset(); setupMessage(false, false, true, true, true, true); Interceptor i = control.createMock(Interceptor.class); - EasyMock.expect(pe.getServerOutFaultInterceptors(boi, ei, destination)) + EasyMock.expect(pe.getServerOutFaultInterceptors(endpoint, boi, destination)) .andReturn(CastUtils.cast(Collections.singletonList(i), Interceptor.class)); InterceptorChain ic = control.createMock(InterceptorChain.class); EasyMock.expect(message.getInterceptorChain()).andReturn(ic); @@ -208,31 +218,41 @@ Boolean setupEngine) { message = control.createMock(Message.class); - EasyMock.expect(message.get(Message.REQUESTOR_ROLE)) .andReturn(setupRequestor ? Boolean.TRUE : Boolean.FALSE); if (setupRequestor != isClient) { return; } + + exchange = control.createMock(Exchange.class); + EasyMock.expect(message.getExchange()).andReturn(exchange); + if (usesOperationInfo) { - if (null == boi) { + if (null == boi && setupOperation) { boi = control.createMock(BindingOperationInfo.class); } - EasyMock.expect(message.get(BindingOperationInfo.class)).andReturn(setupOperation ? boi : null); + EasyMock.expect(exchange.get(BindingOperationInfo.class)).andReturn(setupOperation ? boi : null); if (!setupOperation) { return; } } - if (null == ei) { - ei = control.createMock(EndpointInfo.class); + if (null == endpoint && setupEndpoint) { + endpoint = control.createMock(Endpoint.class); } - EasyMock.expect(message.get(EndpointInfo.class)).andReturn(setupEndpoint ? ei : null); + EasyMock.expect(exchange.get(Endpoint.class)).andReturn(setupEndpoint ? endpoint : null); if (!setupEndpoint) { return; } - if (null == pe) { + /* + if (null == ei) { + ei = control.createMock(EndpointInfo.class); + } + EasyMock.expect(endpoint.getEndpointInfo()).andReturn(ei); + */ + + if (null == pe && setupEngine) { pe = control.createMock(PolicyEngine.class); } EasyMock.expect(bus.getExtension(PolicyEngine.class)).andReturn(setupEngine ? pe : null);
Modified: 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=diff&rev=510614&r1=510613&r2=510614 ============================================================================== --- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyTest.java (original) +++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/PolicyTest.java Thu Feb 22 10:28:42 2007 @@ -19,6 +19,9 @@ package org.apache.cxf.ws.policy; +import java.util.ArrayList; +import java.util.List; + import javax.xml.namespace.QName; import junit.framework.TestCase; @@ -35,6 +38,21 @@ public class PolicyTest extends TestCase { public void testNothing() { + } + + public void testContains() { + List<Assertion> alt1 = new ArrayList<Assertion>(); + Assertion a11 = new PrimitiveAssertion(new QName("http://x.y.z", "a1")); + alt1.add(a11); + Assertion a12 = new PrimitiveAssertion(new QName("http://x.y.z", "a2")); + alt1.add(a12); + + List<Assertion> alt2 = new ArrayList<Assertion>(); + Assertion a21 = new PrimitiveAssertion(new QName("http://x.y.z", "a1")); + alt2.add(a21); + + assertTrue("second alternative should be contained in first alternative", + PolicyUtils.contains(alt1, alt2)); } public void xtestMergeIdentical() { Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProviderTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProviderTest.java?view=diff&rev=510614&r1=510613&r2=510614 ============================================================================== --- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProviderTest.java (original) +++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProviderTest.java Thu Feb 22 10:28:42 2007 @@ -20,6 +20,7 @@ package org.apache.cxf.ws.policy.attachment.external; import java.io.FileNotFoundException; +import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Collection; @@ -43,6 +44,8 @@ import org.apache.neethi.Policy; import org.easymock.classextension.EasyMock; import org.easymock.classextension.IMocksControl; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; /** * @@ -66,9 +69,10 @@ } public void testBasic() { - assertNull(eap.getURI()); - eap.setURI("abc.xml"); - assertEquals("abc.xml", eap.getURI()); + assertNull(eap.getLocation()); + Resource uri = control.createMock(Resource.class); + eap.setLocation(uri); + assertSame(uri, eap.getLocation()); } @@ -142,11 +146,11 @@ control.verify(); } - public void testReadDocumentNotExisting() { + public void testReadDocumentNotExisting() throws MalformedURLException { URL url = ExternalAttachmentProviderTest.class.getResource("resources/attachments1.xml"); String uri = url.toExternalForm(); uri = uri.replaceAll("attachments1.xml", "attachments0.xml"); - eap.setURI(uri); + eap.setLocation(new UrlResource(uri)); try { eap.readDocument(); fail("Expected PolicyException not thrown."); @@ -155,23 +159,23 @@ } } - public void testReadDocumentWithoutAttachmentElements() { + public void testReadDocumentWithoutAttachmentElements() throws MalformedURLException { URL url = ExternalAttachmentProviderTest.class.getResource("resources/attachments1.xml"); String uri = url.toExternalForm(); - eap.setURI(uri); + eap.setLocation(new UrlResource(uri)); eap.readDocument(); assertTrue(eap.getAttachments().isEmpty()); } - public void testReadDocumentAttachmentElementWithoutAppliesTo() { + public void testReadDocumentAttachmentElementWithoutAppliesTo() throws MalformedURLException { URL url = ExternalAttachmentProviderTest.class.getResource("resources/attachments2.xml"); String uri = url.toExternalForm(); - eap.setURI(uri); + eap.setLocation(new UrlResource(uri)); eap.readDocument(); assertTrue(eap.getAttachments().isEmpty()); } - public void testReadDocumentUnknownDomainExpression() { + public void testReadDocumentUnknownDomainExpression() throws MalformedURLException { Bus bus = control.createMock(Bus.class); eap = new ExternalAttachmentProvider(bus); DomainExpressionBuilderRegistry debr = control.createMock(DomainExpressionBuilderRegistry.class); @@ -180,7 +184,7 @@ .andThrow(new PolicyException(new Exception())); URL url = ExternalAttachmentProviderTest.class.getResource("resources/attachments3.xml"); String uri = url.toExternalForm(); - eap.setURI(uri); + eap.setLocation(new UrlResource(uri)); control.replay(); try { @@ -192,7 +196,7 @@ control.verify(); } - public void testReadDocumentEPRDomainExpression() { + public void testReadDocumentEPRDomainExpression() throws MalformedURLException { Bus bus = control.createMock(Bus.class); eap = new ExternalAttachmentProvider(bus); DomainExpressionBuilderRegistry debr = control.createMock(DomainExpressionBuilderRegistry.class); @@ -206,7 +210,7 @@ URL url = ExternalAttachmentProviderTest.class.getResource("resources/attachments4.xml"); String uri = url.toExternalForm(); - eap.setURI(uri); + eap.setLocation(new UrlResource(uri)); control.replay(); eap.readDocument(); Modified: incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/policy-bus.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/policy-bus.xml?view=diff&rev=510614&r1=510613&r2=510614 ============================================================================== --- incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/policy-bus.xml (original) +++ incubator/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/policy-bus.xml Thu Feb 22 10:28:42 2007 @@ -34,10 +34,11 @@ <bean class="org.apache.cxf.bus.spring.BusExtensionPostProcessor"/> <import resource="../../../../../META-INF/cxf/cxf-extension-policy.xml"/> - <!-- + <!-- use bean ids if you want to load multiple external attachment providers --> + <bean class="org.apache.cxf.ws.policy.attachment.external.ExternalAttachmentProvider"> - <property name="uri" value="test-externals.xml"/> + <constructor-arg ref="cxf"/> + <property name="location" value="org/apache/cxf/ws/policy/policy-bus.xml"/> </bean> - --> </beans> Modified: incubator/cxf/trunk/systests/pom.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/pom.xml?view=diff&rev=510614&r1=510613&r2=510614 ============================================================================== --- incubator/cxf/trunk/systests/pom.xml (original) +++ incubator/cxf/trunk/systests/pom.xml Thu Feb 22 10:28:42 2007 @@ -138,6 +138,11 @@ </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-integration-jca</artifactId> <version>${project.version}</version> </dependency> Added: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/GreeterImpl.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/GreeterImpl.java?view=auto&rev=510614 ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/GreeterImpl.java (added) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/GreeterImpl.java Thu Feb 22 10:28:42 2007 @@ -0,0 +1,131 @@ +/** + * 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.systest.ws.policy; + +import java.util.concurrent.Future; +import java.util.logging.Logger; + +import javax.jws.WebService; +import javax.xml.ws.AsyncHandler; +import javax.xml.ws.Response; + +import org.apache.cxf.greeter_control.Greeter; +import org.apache.cxf.greeter_control.PingMeFault; +import org.apache.cxf.greeter_control.types.FaultDetail; +import org.apache.cxf.greeter_control.types.GreetMeResponse; +import org.apache.cxf.greeter_control.types.PingMeResponse; +import org.apache.cxf.greeter_control.types.SayHiResponse; + +/** + * + */ + [EMAIL PROTECTED](serviceName = "BasicGreeterService", + portName = "GreeterPort", + endpointInterface = "org.apache.cxf.greeter_control.Greeter", + targetNamespace = "http://cxf.apache.org/greeter_control") +public class GreeterImpl implements Greeter { + + private static final Logger LOG = Logger.getLogger(GreeterImpl.class.getName()); + private long delay; + private String lastOnewayArg; + private int pingMeCount; + + public long getDelay() { + return delay; + } + + public void setDelay(long d) { + delay = d; + } + + public String greetMe(String arg0) { + LOG.fine("Executing operation greetMe with parameter: " + arg0); + if (delay > 0) { + try { + Thread.sleep(delay); + } catch (InterruptedException ex) { + // ignore + } + } + String result = null; + synchronized (this) { + result = null == lastOnewayArg ? arg0.toUpperCase() : lastOnewayArg; + } + LOG.fine("returning: " + result); + return result; + } + + public Future<?> greetMeAsync(String arg0, AsyncHandler<GreetMeResponse> arg1) { + // TODO Auto-generated method stub + return null; + } + + public Response<GreetMeResponse> greetMeAsync(String arg0) { + // TODO Auto-generated method stub + return null; + } + + public void greetMeOneWay(String arg0) { + synchronized (this) { + lastOnewayArg = arg0; + } + LOG.fine("Executing operation greetMeOneWay with parameter: " + arg0); + } + + public void pingMe() throws PingMeFault { + pingMeCount++; + if ((pingMeCount % 2) > 0) { + LOG.fine("Executing operation pingMe"); + } else { + LOG.fine("Throwing PingMeFault while executiong operation pingMe"); + FaultDetail fd = new FaultDetail(); + fd.setMajor((short)2); + fd.setMinor((short)1); + throw new PingMeFault("Pings succeed only every other time.", fd); + } + } + + public Response<PingMeResponse> pingMeAsync() { + // TODO Auto-generated method stub + return null; + } + + public Future<?> pingMeAsync(AsyncHandler<PingMeResponse> arg0) { + // TODO Auto-generated method stub + return null; + } + + public String sayHi() { + // TODO Auto-generated method stub + return null; + } + + public Response<SayHiResponse> sayHiAsync() { + // TODO Auto-generated method stub + return null; + } + + public Future<?> sayHiAsync(AsyncHandler<SayHiResponse> arg0) { + // TODO Auto-generated method stub + return null; + } + +} Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/GreeterImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/GreeterImpl.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/PolicyClientServerTest.java URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/PolicyClientServerTest.java?view=auto&rev=510614 ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/PolicyClientServerTest.java (added) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/PolicyClientServerTest.java Thu Feb 22 10:28:42 2007 @@ -0,0 +1,141 @@ +/** + * 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.systest.ws.policy; + +import java.util.logging.Logger; + +import javax.xml.ws.Endpoint; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.apache.cxf.Bus; +import org.apache.cxf.BusFactory; +import org.apache.cxf.bus.spring.SpringBusFactory; +import org.apache.cxf.greeter_control.BasicGreeterService; +import org.apache.cxf.greeter_control.Greeter; +import org.apache.cxf.greeter_control.PingMeFault; +import org.apache.cxf.interceptor.LoggingInInterceptor; +import org.apache.cxf.interceptor.LoggingOutInterceptor; +import org.apache.cxf.systest.common.ClientServerSetupBase; +import org.apache.cxf.systest.common.ClientServerTestBase; +import org.apache.cxf.systest.common.TestServerBase; + + +/** + * Tests the use of the WS-Policy Framework to automatically engage WS-Addressing and + * WS-RM in response to Policies defined for the endpoint via an external policy attachment. + */ +public class PolicyClientServerTest extends ClientServerTestBase { + + private static final Logger LOG = Logger.getLogger(PolicyClientServerTest.class.getName()); + private Bus bus; + + public static class Server extends TestServerBase { + + protected void run() { + SpringBusFactory bf = new SpringBusFactory(); + Bus bus = bf.createBus("org/apache/cxf/systest/ws/policy/addr-only.xml"); + BusFactory.setDefaultBus(bus); + LoggingInInterceptor in = new LoggingInInterceptor(); + bus.getInInterceptors().add(in); + bus.getInFaultInterceptors().add(in); + LoggingOutInterceptor out = new LoggingOutInterceptor(); + bus.getOutInterceptors().add(out); + bus.getOutFaultInterceptors().add(out); + + GreeterImpl implementor = new GreeterImpl(); + String address = "http://localhost:9020/SoapContext/GreeterPort"; + Endpoint.publish(address, implementor); + LOG.info("Published greeter endpoint."); + } + + + public static void main(String[] args) { + try { + Server s = new Server(); + s.start(); + } catch (Exception ex) { + ex.printStackTrace(); + System.exit(-1); + } finally { + System.out.println("done!"); + } + } + } + + public static Test suite() throws Exception { + TestSuite suite = new TestSuite(PolicyClientServerTest.class); + return new ClientServerSetupBase(suite) { + public void startServers() throws Exception { + assertTrue("server did not launch correctly", launchServer(Server.class)); + } + + public void setUp() throws Exception { + startServers(); + LOG.fine("Started server."); + } + }; + } + + public void tearDown() { + bus.shutdown(true); + } + + public void testUsingAddressing() throws Exception { + SpringBusFactory bf = new SpringBusFactory(); + bus = bf.createBus("org/apache/cxf/systest/ws/policy/addr-only.xml"); + BusFactory.setDefaultBus(bus); + LoggingInInterceptor in = new LoggingInInterceptor(); + bus.getInInterceptors().add(in); + bus.getInFaultInterceptors().add(in); + LoggingOutInterceptor out = new LoggingOutInterceptor(); + bus.getOutInterceptors().add(out); + bus.getOutFaultInterceptors().add(out); + + BasicGreeterService gs = new BasicGreeterService(); + final Greeter greeter = gs.getGreeterPort(); + LOG.fine("Created greeter client."); + + // oneway + + greeter.greetMeOneWay("CXF"); + + // two-way + + assertEquals("CXF", greeter.greetMe("cxf")); + + // exception + + try { + greeter.pingMe(); + } catch (PingMeFault ex) { + fail("First invocation should have succeeded."); + } + + try { + greeter.pingMe(); + fail("Expected PingMeFault not thrown."); + } catch (PingMeFault ex) { + assertEquals(2, ex.getFaultInfo().getMajor()); + assertEquals(1, ex.getFaultInfo().getMinor()); + } + } +} Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/PolicyClientServerTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/PolicyClientServerTest.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only-external.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only-external.xml?view=auto&rev=510614 ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only-external.xml (added) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only-external.xml Thu Feb 22 10:28:42 2007 @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- + 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. +--> +<attachments xmlns:wsp="http://www.w3.org/2006/07/ws-policy" xmlns:wsa="http://www.w3.org/2005/08/addressing"> + <wsp:PolicyAttachment> + <wsp:AppliesTo> + <wsa:EndpointReference> + <wsa:Address>http://localhost:9020/SoapContext/GreeterPort</wsa:Address> + </wsa:EndpointReference> + </wsp:AppliesTo> + <wsp:Policy> + <wsam:Addressing xmlns:wsam="http://www.w3.org/2007/01/addressing/metadata"> + <wsp:Policy/> + </wsam:Addressing> + </wsp:Policy> + </wsp:PolicyAttachment> +</attachments> + Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only-external.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only-external.xml ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only-external.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Added: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only.xml URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only.xml?view=auto&rev=510614 ============================================================================== --- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only.xml (added) +++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only.xml Thu Feb 22 10:28:42 2007 @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + 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. +--> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:wsrm-mgmt="http://cxf.apache.org/ws/rm/manager" + xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy" + xmlns:http="http://cxf.apache.org/transports/http/configuration" + xsi:schemaLocation=" +http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schema/transports/http.xsd +http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> + + <!-- + <http:conduit id="{http://cxf.apache.org/greeter_control}GreeterPort.http-conduit"> + <http:client DecoupledEndpoint="http://localhost:9995/decoupled_endpoint"/> + </http:conduit> + --> + + <bean id="org.apache.cxf.ws.policy.PolicyEngine" class="org.apache.cxf.ws.policy.spring.InitializingPolicyEngine"> + <property name="bus" ref="cxf"/> + <property name="registerInterceptors" value="true"/> + </bean> + + <bean class="org.apache.cxf.ws.policy.attachment.external.ExternalAttachmentProvider"> + <constructor-arg ref="cxf"/> + <property name="location" value="org/apache/cxf/systest/ws/policy/addr-only-external.xml"/> + </bean> + +</beans> \ No newline at end of file Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only.xml ------------------------------------------------------------------------------ svn:keywords = Rev Date Propchange: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/addr-only.xml ------------------------------------------------------------------------------ svn:mime-type = text/xml Modified: incubator/cxf/trunk/testutils/src/main/resources/wsdl/greeter_control.wsdl URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/testutils/src/main/resources/wsdl/greeter_control.wsdl?view=diff&rev=510614&r1=510613&r2=510614 ============================================================================== --- incubator/cxf/trunk/testutils/src/main/resources/wsdl/greeter_control.wsdl (original) +++ incubator/cxf/trunk/testutils/src/main/resources/wsdl/greeter_control.wsdl Thu Feb 22 10:28:42 2007 @@ -254,6 +254,11 @@ </wsdl:port> </wsdl:service> - + <wsdl:service name="BasicGreeterService"> + <wsdl:port binding="tns:GreeterSOAPBinding" name="GreeterPort"> + <soap:address location="http://localhost:9020/SoapContext/GreeterPort"/> + </wsdl:port> + </wsdl:service> + </wsdl:definitions>