Repository: cxf Updated Branches: refs/heads/master be93ea51e -> 21bfb9ab9
[CXF-5726] Restore Offer in CreateSequence, since we can't be sure the endpoint is always oneway. This reverts commit 93febc0d4a3a108dc834d280e0fc51e9ad5afd0c. Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/abfbb35d Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/abfbb35d Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/abfbb35d Branch: refs/heads/master Commit: abfbb35df11021077417e1ac631ed3315c9b625b Parents: be93ea5 Author: dsosnoski <[email protected]> Authored: Thu May 8 18:54:29 2014 +1200 Committer: dsosnoski <[email protected]> Committed: Thu May 8 18:59:19 2014 +1200 ---------------------------------------------------------------------- .../main/java/org/apache/cxf/ws/rm/Proxy.java | 5 ++- .../java/org/apache/cxf/ws/rm/RMManager.java | 3 +- .../java/org/apache/cxf/ws/rm/ProxyTest.java | 4 +-- .../org/apache/cxf/ws/rm/RMManagerTest.java | 1 - .../ws/rm/AbstractClientPersistenceTest.java | 22 +++++++++----- .../cxf/systest/ws/rm/ManagedEndpointsTest.java | 32 +++++++++++++++----- 6 files changed, 44 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/abfbb35d/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java index 61caa69..7646c54 100644 --- a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java +++ b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java @@ -129,8 +129,7 @@ public class Proxy { } public CreateSequenceResponseType createSequence(EndpointReferenceType defaultAcksTo, RelatesToType relatesTo, - boolean isServer, boolean oneWay, final ProtocolVariation protocol, final Exchange exchange) - throws RMException { + boolean isServer, final ProtocolVariation protocol, final Exchange exchange) throws RMException { SourcePolicyType sp = reliableEndpoint.getManager().getSourcePolicy(); CreateSequenceType create = new CreateSequenceType(); @@ -151,7 +150,7 @@ public class Proxy { create.setExpires(expires); } - if (!oneWay && sp.isIncludeOffer()) { + if (sp.isIncludeOffer()) { OfferType offer = new OfferType(); d = sp.getOfferedSequenceExpiration(); if (null != d) { http://git-wip-us.apache.org/repos/asf/cxf/blob/abfbb35d/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java index 172aa3d..37a2460 100644 --- a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java +++ b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java @@ -457,12 +457,11 @@ public class RMManager { LOG.log(Level.INFO, msg.toString()); throw new RMException(msg); } - boolean oneWay = message.getExchange().isOneWay(); Proxy proxy = source.getReliableEndpoint().getProxy(); ProtocolVariation protocol = config.getProtocolVariation(); Exchange exchange = new ExchangeImpl(); CreateSequenceResponseType createResponse = - proxy.createSequence(acksTo, relatesTo, isServer, oneWay, protocol, exchange); + proxy.createSequence(acksTo, relatesTo, isServer, protocol, exchange); if (!isServer) { Servant servant = source.getReliableEndpoint().getServant(); servant.createSequenceResponse(createResponse, protocol); http://git-wip-us.apache.org/repos/asf/cxf/blob/abfbb35d/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java index 1afcc79..fe3e087 100644 --- a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java +++ b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java @@ -365,10 +365,10 @@ public class ProxyTest extends Assert { RelatesToType relatesTo = control.createMock(RelatesToType.class); control.replay(); if (isServer) { - assertNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, false, + assertNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, ProtocolVariation.RM10WSA200408, exchange)); } else { - assertNotNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, false, + assertNotNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, ProtocolVariation.RM10WSA200408, exchange)); } } http://git-wip-us.apache.org/repos/asf/cxf/blob/abfbb35d/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java index 88261c5..ba01bd2 100644 --- a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java +++ b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java @@ -415,7 +415,6 @@ public class RMManagerTest extends Assert { proxy.createSequence(EasyMock.isA(EndpointReferenceType.class), (RelatesToType)EasyMock.isNull(), EasyMock.eq(false), - EasyMock.eq(false), EasyMock.isA(ProtocolVariation.class), EasyMock.isA(Exchange.class)); EasyMock.expectLastCall().andReturn(createResponse); http://git-wip-us.apache.org/repos/asf/cxf/blob/abfbb35d/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/AbstractClientPersistenceTest.java ---------------------------------------------------------------------- diff --git a/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/AbstractClientPersistenceTest.java b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/AbstractClientPersistenceTest.java index 7d31fa4..091fbae 100644 --- a/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/AbstractClientPersistenceTest.java +++ b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/AbstractClientPersistenceTest.java @@ -204,16 +204,20 @@ public abstract class AbstractClientPersistenceTest extends AbstractBusClientSer Client client = ClientProxy.getClient(greeter); String id = RMUtils.getEndpointIdentifier(client.getEndpoint()); - Collection<DestinationSequence> dss = store.getDestinationSequences(id); - assertEquals(0, dss.size()); + Collection<DestinationSequence> dss = + store.getDestinationSequences(id); + assertEquals(1, dss.size()); - Collection<SourceSequence> sss = store.getSourceSequences(id); + Collection<SourceSequence> sss = + store.getSourceSequences(id); assertEquals(1, sss.size()); - Collection<RMMessage> msgs = store.getMessages(sss.iterator().next().getIdentifier(), true); + Collection<RMMessage> msgs = + store.getMessages(sss.iterator().next().getIdentifier(), true); assertEquals(2, msgs.size()); - msgs = store.getMessages(sss.iterator().next().getIdentifier(), false); + msgs = + store.getMessages(sss.iterator().next().getIdentifier(), false); assertEquals(0, msgs.size()); } @@ -286,10 +290,12 @@ public abstract class AbstractClientPersistenceTest extends AbstractBusClientSer Client client = ClientProxy.getClient(greeter); String id = RMUtils.getEndpointIdentifier(client.getEndpoint()); - Collection<DestinationSequence> dss = store.getDestinationSequences(id); - assertEquals(0, dss.size()); + Collection<DestinationSequence> dss = + store.getDestinationSequences(id); + assertEquals(1, dss.size()); - Collection<SourceSequence> sss = store.getSourceSequences(id); + Collection<SourceSequence> sss = + store.getSourceSequences(id); assertEquals(1, sss.size()); int i = 0; http://git-wip-us.apache.org/repos/asf/cxf/blob/abfbb35d/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ManagedEndpointsTest.java ---------------------------------------------------------------------- diff --git a/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ManagedEndpointsTest.java b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ManagedEndpointsTest.java index bd4966a..00aada4 100755 --- a/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ManagedEndpointsTest.java +++ b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ManagedEndpointsTest.java @@ -61,6 +61,7 @@ public class ManagedEndpointsTest extends AbstractClientServerTestBase { public static final String PORT = allocatePort(ManagedEndpointsTest.class); + private static final String[] EMPTY_SIGNATURE = new String[0]; private static final String[] ONESTRING_SIGNATURE = new String[]{"java.lang.String"}; private static final String[] ONEBOOLEAN_SIGNATURE = new String[]{"boolean"}; @@ -158,14 +159,20 @@ public class ManagedEndpointsTest extends AbstractClientServerTestBase { o = mbs.invoke(serverEndpointName, "getDestinationSequenceIds", null, null); verifyArray("Expected sequence identifier", o, new String[]{sseqId}, false); - verifyNoDestinationSequence(mbs, clientEndpointName); + String dseqId = getSingleDestinationSequenceId(mbs, clientEndpointName); - testOperation(mbs, greeter, clientEndpointName, serverEndpointName, sseqId); + testOperation(mbs, greeter, clientEndpointName, serverEndpointName, sseqId, dseqId); mbs.invoke(clientEndpointName, "terminateSourceSequence", new Object[]{sseqId}, ONESTRING_SIGNATURE); o = mbs.invoke(clientEndpointName, "getSourceSequenceIds", new Object[]{true}, ONEBOOLEAN_SIGNATURE); assertTrue("Source sequence terminated", o instanceof String[] && 0 == ((String[])o).length); + + mbs.invoke(clientEndpointName, "terminateDestinationSequence", new Object[]{dseqId}, ONESTRING_SIGNATURE); + o = mbs.invoke(clientEndpointName, "getDestinationSequenceIds", + new Object[]{}, EMPTY_SIGNATURE); + assertTrue("Destination sequence terminated", o instanceof String[] && 0 == ((String[])o).length); + } @Test @@ -213,9 +220,9 @@ public class ManagedEndpointsTest extends AbstractClientServerTestBase { o = mbs.invoke(serverEndpointName, "getDestinationSequenceIds", null, null); verifyArray("Expected sequence identifier", o, new String[]{sseqId}, false); - verifyNoDestinationSequence(mbs, clientEndpointName); + String dseqId = getSingleDestinationSequenceId(mbs, clientEndpointName); - testOperation(mbs, greeter, clientEndpointName, serverEndpointName, sseqId); + testOperation(mbs, greeter, clientEndpointName, serverEndpointName, sseqId, dseqId); mbs.invoke(clientEndpointName, "closeSourceSequence", new Object[]{sseqId}, ONESTRING_SIGNATURE); o = mbs.invoke(clientEndpointName, "getSourceSequenceIds", @@ -226,14 +233,24 @@ public class ManagedEndpointsTest extends AbstractClientServerTestBase { o = mbs.invoke(clientEndpointName, "getSourceSequenceIds", new Object[]{true}, ONEBOOLEAN_SIGNATURE); assertTrue("Source sequence terminated", o instanceof String[] && 0 == ((String[])o).length); + + mbs.invoke(clientEndpointName, "terminateDestinationSequence", new Object[]{dseqId}, ONESTRING_SIGNATURE); + o = mbs.invoke(clientEndpointName, "getDestinationSequenceIds", + new Object[]{}, EMPTY_SIGNATURE); + assertTrue("Destination sequence terminated", o instanceof String[] && 0 == ((String[])o).length); + } private void testOperation(MBeanServer mbs, final Greeter greeter, ObjectName clientEndpointName, - ObjectName serverEndpointName, String sseqId) throws ReflectionException, + ObjectName serverEndpointName, String sseqId, String dseqId) throws ReflectionException, InstanceNotFoundException, MBeanException, InterruptedException { AcknowledgementListener listener = new AcknowledgementListener(); mbs.addNotificationListener(clientEndpointName, listener, null, null); Object o; + o = mbs.invoke(serverEndpointName, "getSourceSequenceIds", + new Object[]{true}, ONEBOOLEAN_SIGNATURE); + verifyArray("Expected sequence identifier", o, new String[]{dseqId}, false); + o = mbs.invoke(clientEndpointName, "getQueuedMessageTotalCount", new Object[]{true}, ONEBOOLEAN_SIGNATURE); assertTrue("No queued message", o instanceof Integer && 0 == ((Integer)o).intValue()); @@ -304,11 +321,12 @@ public class ManagedEndpointsTest extends AbstractClientServerTestBase { assertTrue("No unacknowledged message", o instanceof Long[] && 0 == ((Long[])o).length); } - private void verifyNoDestinationSequence(MBeanServer mbs, ObjectName clientEndpointName) + private String getSingleDestinationSequenceId(MBeanServer mbs, ObjectName clientEndpointName) throws ReflectionException, InstanceNotFoundException, MBeanException { Object o; o = mbs.invoke(clientEndpointName, "getDestinationSequenceIds", null, null); - assertTrue("No sequence expected", o instanceof String[] && 0 == ((String[])o).length); + assertTrue("One sequence expected", o instanceof String[] && 1 == ((String[])o).length); + return ((String[])o)[0]; } private String getSingleSourceSequenceId(MBeanServer mbs, ObjectName clientEndpointName)
