You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2017/06/07 17:54:11 UTC
[5/9] cxf git commit: [CXF-7392] Start working on some RM fixes
Update RM to make sure addressing namespace matches configured ns Update RM
to allow enabling client via Feature
[CXF-7392] Start working on some RM fixes
Update RM to make sure addressing namespace matches configured ns
Update RM to allow enabling client via Feature
# Conflicts:
# core/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
# rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingPolicyInterceptorProvider.java
# rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorTest.java
# rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureOutInterceptor.java
# rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java
# systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/059cb2b9
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/059cb2b9
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/059cb2b9
Branch: refs/heads/3.1.x-fixes
Commit: 059cb2b9f668768fad70d408932b523572f42054
Parents: 82ac940
Author: Daniel Kulp <dk...@apache.org>
Authored: Tue Jun 6 21:25:59 2017 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Wed Jun 7 12:43:42 2017 -0400
----------------------------------------------------------------------
.../apache/cxf/ws/addressing/MAPAggregator.java | 3 +-
.../impl/AddressingFeatureApplier.java | 2 +-
.../ws/addressing/impl/MAPAggregatorImpl.java | 4 +
.../AddressingPolicyInterceptorProvider.java | 24 +--
.../apache/cxf/ws/addressing/soap/MAPCodec.java | 20 ++-
.../ws/addressing/impl/MAPAggregatorTest.java | 28 +--
.../main/java/org/apache/cxf/ws/rm/Proxy.java | 7 +
.../cxf/ws/rm/RMCaptureOutInterceptor.java | 4 +-
.../org/apache/cxf/ws/rm/RMOutInterceptor.java | 4 +-
.../cxf/ws/rm/soap/RetransmissionQueueImpl.java | 3 +-
.../java/org/apache/cxf/ws/rm/ProxyTest.java | 9 +
.../org/apache/cxf/ws/rm/RMManagerTest.java | 9 +-
.../clustering/FailoverAddressOverrideTest.java | 2 +-
.../cxf/systest/clustering/FailoverTest.java | 2 +-
.../apache/cxf/systest/ws/rm/ControlImpl.java | 9 +-
.../systest/ws/rm/WSRM12ServerCycleTest.java | 180 +++++++++++++++++++
.../ws/policy/NestedAddressingPolicyTest.java | 2 +-
17 files changed, 270 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/core/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java b/core/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
index 7687785..c2c844c 100644
--- a/core/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
+++ b/core/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
@@ -36,7 +36,8 @@ public class MAPAggregator extends AbstractPhaseInterceptor<Message> {
public static final String DECOUPLED_DESTINATION = MAPAggregator.class.getName()
+ ".decoupledDestination";
public static final String ACTION_VERIFIED = MAPAggregator.class.getName() + ".actionVerified";
-
+ public static final String ADDRESSING_NAMESPACE = MAPAggregator.class.getName() + ".addressingNamespace";
+
public interface MAPAggregatorLoader {
MAPAggregator createImplementation(MAPAggregator mag);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/AddressingFeatureApplier.java
----------------------------------------------------------------------
diff --git a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/AddressingFeatureApplier.java b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/AddressingFeatureApplier.java
index 889e7b9..7c6af47 100644
--- a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/AddressingFeatureApplier.java
+++ b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/AddressingFeatureApplier.java
@@ -33,7 +33,7 @@ import org.apache.cxf.ws.addressing.soap.MAPCodec;
public class AddressingFeatureApplier implements WSAddressingFeature.WSAddressingFeatureApplier {
public void initializeProvider(WSAddressingFeature feature, InterceptorProvider provider, Bus bus) {
- MAPCodec mapCodec = new MAPCodec();
+ MAPCodec mapCodec = MAPCodec.getInstance(bus);
MAPAggregatorImpl mapAggregator = new MAPAggregatorImpl();
mapAggregator.setAllowDuplicates(feature.isAllowDuplicates());
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorImpl.java
----------------------------------------------------------------------
diff --git a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorImpl.java b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorImpl.java
index 7e166b2..e234cfd 100644
--- a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorImpl.java
+++ b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorImpl.java
@@ -1076,6 +1076,10 @@ public class MAPAggregatorImpl extends MAPAggregator {
private void setupNamespace(AddressingProperties maps, Message message) {
AssertionInfoMap aim = message.get(AssertionInfoMap.class);
if (null == aim) {
+ String ns = (String)message.getContextualProperty(MAPAggregator.ADDRESSING_NAMESPACE);
+ if (ns != null) {
+ maps.exposeAs(ns);
+ }
return;
}
Collection<AssertionInfo> aic = aim.getAssertionInfo(MetadataConstants.USING_ADDRESSING_2004_QNAME);
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingPolicyInterceptorProvider.java
----------------------------------------------------------------------
diff --git a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingPolicyInterceptorProvider.java b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingPolicyInterceptorProvider.java
index 4ee68a2..4d7d307 100644
--- a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingPolicyInterceptorProvider.java
+++ b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingPolicyInterceptorProvider.java
@@ -24,6 +24,7 @@ import java.util.Collection;
import javax.xml.namespace.QName;
+import org.apache.cxf.Bus;
import org.apache.cxf.ws.addressing.MAPAggregator;
import org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl;
import org.apache.cxf.ws.addressing.soap.MAPCodec;
@@ -39,8 +40,6 @@ public class AddressingPolicyInterceptorProvider extends AbstractPolicyIntercept
private static final long serialVersionUID = -1018053541795476992L;
private static final Collection<QName> ASSERTION_TYPES;
private static final MAPAggregator MAP_AGGREGATOR = new MAPAggregatorImpl();
- private static final MAPCodec MAP_CODEC = new MAPCodec();
-
static {
Collection<QName> types = new ArrayList<QName>();
types.add(MetadataConstants.ADDRESSING_ASSERTION_QNAME);
@@ -51,20 +50,23 @@ public class AddressingPolicyInterceptorProvider extends AbstractPolicyIntercept
types.add(MetadataConstants.USING_ADDRESSING_2006_QNAME);
ASSERTION_TYPES = types;
}
-
- public AddressingPolicyInterceptorProvider() {
+
+ public AddressingPolicyInterceptorProvider(Bus b) {
super(ASSERTION_TYPES);
- getInInterceptors().add(MAP_AGGREGATOR);
- getInInterceptors().add(MAP_CODEC);
+ MAPCodec mapCodec = MAPCodec.getInstance(b);
+
+ getInInterceptors().add(MAP_AGGREGATOR);
+ getInInterceptors().add(mapCodec);
+
getOutInterceptors().add(MAP_AGGREGATOR);
- getOutInterceptors().add(MAP_CODEC);
-
+ getOutInterceptors().add(mapCodec);
+
getInFaultInterceptors().add(MAP_AGGREGATOR);
- getInFaultInterceptors().add(MAP_CODEC);
-
+ getInFaultInterceptors().add(mapCodec);
+
getOutFaultInterceptors().add(MAP_AGGREGATOR);
- getOutFaultInterceptors().add(MAP_CODEC);
+ getOutFaultInterceptors().add(mapCodec);
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
----------------------------------------------------------------------
diff --git a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
index 9cef853..194b6ba 100644
--- a/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
+++ b/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
@@ -40,6 +40,7 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+import org.apache.cxf.Bus;
import org.apache.cxf.binding.soap.SoapFault;
import org.apache.cxf.binding.soap.SoapHeader;
import org.apache.cxf.binding.soap.SoapMessage;
@@ -76,7 +77,8 @@ import org.apache.cxf.ws.addressing.VersionTransformer.Names200408;
* Properties for {outgo|incom}ing messages.
*/
public class MAPCodec extends AbstractSoapInterceptor {
-
+ public static final MAPCodec INSTANCE = new MAPCodec();
+
private static final Logger LOG = LogUtils.getL7dLogger(MAPCodec.class);
private static final String IS_REFERENCE_PARAM_ATTR_NAME = "IsReferenceParameter";
private static final ResourceBundle BUNDLE = LOG.getResourceBundle();
@@ -101,6 +103,22 @@ public class MAPCodec extends AbstractSoapInterceptor {
transformer = new VersionTransformer(this);
}
+ public static synchronized MAPCodec getInstance(Bus bus) {
+ MAPCodec mc = bus.getExtension(MAPCodec.class);
+ if (mc == null) {
+ return createMAPCodec(bus);
+ }
+ return mc;
+ }
+ private static synchronized MAPCodec createMAPCodec(Bus bus) {
+ MAPCodec mc = bus.getExtension(MAPCodec.class);
+ if (mc == null) {
+ bus.setExtension(new MAPCodec(), MAPCodec.class);
+ mc = bus.getExtension(MAPCodec.class);
+ }
+ return mc;
+ }
+
public Map<String, Exchange> getUncorrelatedExchanges() {
return uncorrelatedExchanges;
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorTest.java
----------------------------------------------------------------------
diff --git a/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorTest.java b/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorTest.java
index 4be1fc7..bdc4b69 100644
--- a/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorTest.java
+++ b/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/impl/MAPAggregatorTest.java
@@ -624,12 +624,16 @@ public class MAPAggregatorTest extends Assert {
srArgs.zeroLengthAction = args.zeroLengthAction;
srArgs.fault = args.fault;
srArgs.noMessageId = args.noMessageId;
-
+
+ Endpoint endpoint = control.createMock(Endpoint.class);
+ exchange.getEndpoint();
+ EasyMock.expectLastCall().andReturn(endpoint).anyTimes();
+
setUpResponder(message,
exchange,
- srArgs);
-
- Endpoint endpoint = control.createMock(Endpoint.class);
+ srArgs,
+ endpoint);
+
endpoint.getOutInterceptors();
EasyMock.expectLastCall().andReturn(new ArrayList<Interceptor<? extends Message>>()).anyTimes();
Service serv = control.createMock(Service.class);
@@ -637,8 +641,6 @@ public class MAPAggregatorTest extends Assert {
EasyMock.expectLastCall().andReturn(serv).anyTimes();
serv.getOutInterceptors();
EasyMock.expectLastCall().andReturn(new ArrayList<Interceptor<? extends Message>>()).anyTimes();
- exchange.getEndpoint();
- EasyMock.expectLastCall().andReturn(endpoint).anyTimes();
}
control.replay();
return message;
@@ -729,7 +731,8 @@ public class MAPAggregatorTest extends Assert {
private void setUpResponder(Message message,
Exchange exchange,
- SetupResponderArgs args) throws Exception {
+ SetupResponderArgs args,
+ Endpoint endpoint) throws Exception {
setUpMessageProperty(message,
REQUESTOR_ROLE,
@@ -763,7 +766,7 @@ public class MAPAggregatorTest extends Assert {
if (!args.outbound) {
setUpOneway(message, exchange, args.oneway);
if (args.oneway || args.decoupled) {
- setUpRebase(message, exchange);
+ setUpRebase(message, exchange, endpoint);
}
}
@@ -792,7 +795,7 @@ public class MAPAggregatorTest extends Assert {
maps);
if (args.fault) {
// REVISIT test double rebase does not occur
- setUpRebase(message, exchange);
+ setUpRebase(message, exchange, endpoint);
}
expectedTo = args.decoupled
? args.fault
@@ -813,15 +816,12 @@ public class MAPAggregatorTest extends Assert {
//EasyMock.expectLastCall().andReturn(null);
}
}
-
- private void setUpRebase(Message message, Exchange exchange)
+
+ private void setUpRebase(Message message, Exchange exchange, Endpoint endpoint)
throws Exception {
setUpMessageProperty(message,
"org.apache.cxf.ws.addressing.partial.response.sent",
Boolean.FALSE);
- Endpoint endpoint = control.createMock(Endpoint.class);
- exchange.getEndpoint();
- EasyMock.expectLastCall().andReturn(endpoint);
Binding binding = control.createMock(Binding.class);
endpoint.getBinding();
EasyMock.expectLastCall().andReturn(binding).anyTimes();
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/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 77fb035..eb8d55b 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
@@ -47,7 +47,9 @@ import org.apache.cxf.transport.Conduit;
import org.apache.cxf.workqueue.SynchronousExecutor;
import org.apache.cxf.ws.addressing.AttributedURIType;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
+import org.apache.cxf.ws.addressing.MAPAggregator;
import org.apache.cxf.ws.addressing.RelatesToType;
+import org.apache.cxf.ws.addressing.WSAddressingFeature;
import org.apache.cxf.ws.rm.manager.SourcePolicyType;
import org.apache.cxf.ws.rm.v200702.CloseSequenceType;
import org.apache.cxf.ws.rm.v200702.CreateSequenceResponseType;
@@ -359,7 +361,12 @@ public class Proxy {
}
};
RMClient client = new RMClient(bus, endpoint, cs);
+ // WS-RM requires ws-addressing
+ WSAddressingFeature wsa = new WSAddressingFeature();
+ wsa.setAddressingRequired(true);
+ wsa.initialize(client, bus);
Map<String, Object> context = client.getRequestContext();
+ context.put(MAPAggregator.ADDRESSING_NAMESPACE, protocol.getWSANamespace());
context.put(RMManager.WSRM_VERSION_PROPERTY, protocol.getWSRMNamespace());
context.put(RMManager.WSRM_WSA_VERSION_PROPERTY, protocol.getWSANamespace());
return client;
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureOutInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureOutInterceptor.java b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureOutInterceptor.java
index 8813beb..a85971c 100644
--- a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureOutInterceptor.java
+++ b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMCaptureOutInterceptor.java
@@ -112,7 +112,9 @@ public class RMCaptureOutInterceptor extends AbstractRMInterceptor<Message> {
if (null != maps.getAction()) {
action = maps.getAction().getValue();
}
-
+ //make sure we use the appropriate namespace
+ maps.exposeAs(wsaNamespace);
+
if (LOG.isLoggable(Level.FINE)) {
LOG.fine("Action: " + action);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java
index 8d3aa17..58b8194 100644
--- a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java
+++ b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java
@@ -76,7 +76,9 @@ public class RMOutInterceptor extends AbstractRMInterceptor<Message> {
if (null != maps.getAction()) {
action = maps.getAction().getValue();
}
-
+ //make sure we use the appropriate namespace
+ maps.exposeAs(wsaNamespace);
+
if (LOG.isLoggable(Level.FINE)) {
LOG.fine("Action: " + action);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImpl.java
----------------------------------------------------------------------
diff --git a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImpl.java b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImpl.java
index 3181efe..8b801ac 100644
--- a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImpl.java
+++ b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RetransmissionQueueImpl.java
@@ -439,6 +439,7 @@ public class RetransmissionQueueImpl implements RetransmissionQueue {
AttributedURIType to = null;
if (null != maps) {
to = maps.getTo();
+ maps.exposeAs(cfg.getAddressingNamespace());
}
if (to != null && RMUtils.getAddressingConstants().getAnonymousURI().equals(to.getValue())) {
LOG.log(Level.INFO, "Cannot resend to anonymous target. Not scheduling a resend.");
@@ -796,7 +797,7 @@ public class RetransmissionQueueImpl implements RetransmissionQueue {
}
// set message addressing properties
- AddressingProperties maps = new MAPCodec().unmarshalMAPs(message);
+ AddressingProperties maps = MAPCodec.getInstance(message.getExchange().getBus()).unmarshalMAPs(message);
RMContextUtils.storeMAPs(maps, message, true, MessageUtils.isRequestor(message));
AttributedURIType to = null;
if (null != maps) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/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 b567dc3..c310d9c 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
@@ -29,6 +29,7 @@ import org.apache.cxf.Bus;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.ConduitSelector;
import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.interceptor.InterceptorProvider;
import org.apache.cxf.jaxb.DatatypeFactory;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
@@ -45,6 +46,8 @@ import org.apache.cxf.ws.addressing.AttributedURIType;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.apache.cxf.ws.addressing.Names;
import org.apache.cxf.ws.addressing.RelatesToType;
+import org.apache.cxf.ws.addressing.WSAddressingFeature;
+import org.apache.cxf.ws.addressing.WSAddressingFeature.WSAddressingFeatureApplier;
import org.apache.cxf.ws.rm.manager.SourcePolicyType;
import org.apache.cxf.ws.rm.v200702.Identifier;
import org.apache.cxf.ws.rm.v200702.OfferType;
@@ -290,6 +293,12 @@ public class ProxyTest extends Assert {
public void testRMClientConstruction() {
Proxy proxy = new Proxy(rme);
Bus bus = control.createMock(Bus.class);
+ EasyMock.expect(bus.getExtension(WSAddressingFeatureApplier.class))
+ .andReturn(new WSAddressingFeatureApplier() {
+ @Override
+ public void initializeProvider(WSAddressingFeature feature, InterceptorProvider provider,
+ Bus bus) {
+ } }).anyTimes();
Endpoint endpoint = control.createMock(Endpoint.class);
Conduit conduit = control.createMock(Conduit.class);
org.apache.cxf.ws.addressing.EndpointReferenceType address =
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/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 5231bd4..b144bee 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
@@ -309,15 +309,18 @@ public class RMManagerTest extends Assert {
public void testGetReliableEndpointExisting() throws NoSuchMethodException, RMException {
Method m1 = RMManager.class.getDeclaredMethod("createReliableEndpoint",
new Class[] {Endpoint.class});
- manager = control.createMock(RMManager.class, new Method[] {m1});
+ Method m2 = RMManager.class.getDeclaredMethod("getEffectiveConfiguration",
+ new Class[] {Message.class});
+ manager = control.createMock(RMManager.class, new Method[] {m1, m2});
manager.setReliableEndpointsMap(new HashMap<Endpoint, RMEndpoint>());
Message message = control.createMock(Message.class);
+ Exchange exchange = control.createMock(Exchange.class);
+ EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
+
RMConfiguration config = new RMConfiguration();
config.setRMNamespace(RM10Constants.NAMESPACE_URI);
config.setRM10AddressingNamespace(RM10Constants.NAMESPACE_URI);
EasyMock.expect(manager.getEffectiveConfiguration(message)).andReturn(config).anyTimes();
- Exchange exchange = control.createMock(Exchange.class);
- EasyMock.expect(message.getExchange()).andReturn(exchange);
Endpoint endpoint = control.createMock(Endpoint.class);
EasyMock.expect(exchange.getEndpoint()).andReturn(endpoint);
EndpointInfo ei = control.createMock(EndpointInfo.class);
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverAddressOverrideTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverAddressOverrideTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverAddressOverrideTest.java
index a8828ec..91abfb3 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverAddressOverrideTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverAddressOverrideTest.java
@@ -240,7 +240,7 @@ public class FailoverAddressOverrideTest extends AbstractBusClientServerTestBase
protected void enableWSAForCurrentEndpoint() {
Endpoint provider = ClientProxy.getClient(greeter).getEndpoint();
mapAggregator = new MAPAggregator();
- mapCodec = new MAPCodec();
+ mapCodec = MAPCodec.getInstance(ClientProxy.getClient(greeter).getBus());
provider.getInInterceptors().add(mapAggregator);
provider.getInInterceptors().add(mapCodec);
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverTest.java
----------------------------------------------------------------------
diff --git a/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverTest.java b/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverTest.java
index 7412858..d0216a4 100644
--- a/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverTest.java
+++ b/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverTest.java
@@ -436,7 +436,7 @@ public class FailoverTest extends AbstractBusClientServerTestBase {
protected void enableWSAForCurrentEndpoint() {
Endpoint provider = ClientProxy.getClient(greeter).getEndpoint();
mapAggregator = new MAPAggregator();
- mapCodec = new MAPCodec();
+ mapCodec = MAPCodec.getInstance(ClientProxy.getClient(greeter).getBus());
provider.getInInterceptors().add(mapAggregator);
provider.getInInterceptors().add(mapCodec);
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java
----------------------------------------------------------------------
diff --git a/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java
index 551d67d..119450d 100644
--- a/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java
+++ b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/ControlImpl.java
@@ -40,6 +40,7 @@ import org.w3c.dom.Node;
import org.apache.cxf.BusFactory;
import org.apache.cxf.bus.spring.SpringBusFactory;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.ext.logging.LoggingFeature;
import org.apache.cxf.helpers.XPathUtils;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
@@ -69,11 +70,9 @@ public class ControlImpl extends org.apache.cxf.greeter_control.ControlImpl {
LOG.info("Initialised bus " + greeterBus + " with cfg file resource: " + cfgResource);
LOG.fine("greeterBus inInterceptors: " + greeterBus.getInInterceptors());
- LoggingInInterceptor logIn = new LoggingInInterceptor();
- LoggingOutInterceptor logOut = new LoggingOutInterceptor();
- greeterBus.getInInterceptors().add(logIn);
- greeterBus.getOutInterceptors().add(logOut);
- greeterBus.getOutFaultInterceptors().add(logOut);
+ LoggingFeature lf = new LoggingFeature();
+ lf.setPrettyLogging(true);
+ lf.initialize(greeterBus);
if (cfgResource.indexOf("provider") == -1) {
endpoint = Endpoint.publish(address, implementor);
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/WSRM12ServerCycleTest.java
----------------------------------------------------------------------
diff --git a/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/WSRM12ServerCycleTest.java b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/WSRM12ServerCycleTest.java
new file mode 100644
index 0000000..64e0b64
--- /dev/null
+++ b/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/WSRM12ServerCycleTest.java
@@ -0,0 +1,180 @@
+/**
+ * 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.rm;
+
+import java.io.Closeable;
+
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.soap.AddressingFeature;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.ext.logging.LoggingFeature;
+import org.apache.cxf.greeter_control.Control;
+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.systest.ws.util.ConnectionHelper;
+import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
+import org.apache.cxf.ws.rm.RMManager;
+import org.apache.cxf.ws.rm.feature.RMFeature;
+import org.apache.cxf.ws.rm.manager.AcksPolicyType;
+import org.apache.cxf.ws.rm.manager.DestinationPolicyType;
+import org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore;
+import org.apache.cxf.ws.rmp.v200502.RMAssertion;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+/**
+ *
+ */
+public class WSRM12ServerCycleTest extends AbstractBusClientServerTestBase {
+ public static final String PORT = allocatePort(WSRM12ServerCycleTest.class);
+ private static final String CFG = "/org/apache/cxf/systest/ws/rm/persistent.xml";
+
+ private static final long DEFAULT_BASE_RETRANSMISSION_INTERVAL = 4000L;
+ private static final long DEFAULT_ACKNOWLEDGEMENT_INTERVAL = 2000L;
+
+ public static class Server extends AbstractBusTestServerBase {
+ String port;
+ String pfx;
+ Endpoint ep;
+ public Server(String args[]) {
+ port = args[0];
+ pfx = args[1];
+ }
+
+ protected void run() {
+ SpringBusFactory factory = new SpringBusFactory();
+ Bus bus = factory.createBus();
+ BusFactory.setDefaultBus(bus);
+ setBus(bus);
+
+ //System.out.println("Created control bus " + bus);
+ ControlImpl implementor = new ControlImpl();
+ implementor.setDbName(pfx + "-server");
+ implementor.setAddress("http://localhost:" + port + "/SoapContext/GreeterPort");
+ GreeterImpl greeterImplementor = new GreeterImpl();
+ implementor.setImplementor(greeterImplementor);
+ ep = Endpoint.publish("http://localhost:" + port + "/SoapContext/ControlPort", implementor);
+ BusFactory.setDefaultBus(null);
+ BusFactory.setThreadDefaultBus(null);
+ }
+ public void tearDown() {
+ ep.stop();
+ ep = null;
+ }
+ public static void main(String args[]) {
+ new Server(args).start();
+ }
+ }
+
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ RMTxStore.deleteDatabaseFiles("cxf7392-recovery", true);
+ RMTxStore.deleteDatabaseFiles("cxf7392-greeter", true);
+ assertTrue("server did not launch correctly",
+ launchServer(Server.class, null, new String[] {PORT, "cxf7392"}, true));
+
+ }
+
+ private String getPrefix() {
+ return "cxf7392";
+ }
+
+ public static RMFeature wsrm() {
+ return wsrm(DEFAULT_BASE_RETRANSMISSION_INTERVAL, DEFAULT_ACKNOWLEDGEMENT_INTERVAL);
+ }
+
+ public static RMFeature wsrm(long brtxInterval, long ackInterval) {
+ RMAssertion.BaseRetransmissionInterval baseRetransmissionInterval
+ = new RMAssertion.BaseRetransmissionInterval();
+ baseRetransmissionInterval.setMilliseconds(Long.valueOf(brtxInterval));
+ RMAssertion.AcknowledgementInterval acknowledgementInterval = new RMAssertion.AcknowledgementInterval();
+ acknowledgementInterval.setMilliseconds(Long.valueOf(ackInterval));
+
+ RMAssertion rmAssertion = new RMAssertion();
+ rmAssertion.setAcknowledgementInterval(acknowledgementInterval);
+ rmAssertion.setBaseRetransmissionInterval(baseRetransmissionInterval);
+
+ AcksPolicyType acksPolicy = new AcksPolicyType();
+ acksPolicy.setIntraMessageThreshold(0);
+ DestinationPolicyType destinationPolicy = new DestinationPolicyType();
+ destinationPolicy.setAcksPolicy(acksPolicy);
+
+ RMFeature feature = new RMFeature();
+ feature.setRMAssertion(rmAssertion);
+ feature.setDestinationPolicy(destinationPolicy);
+ //feature.setRMNamespace(RM11Constants.NAMESPACE_URI);
+
+ return feature;
+ }
+
+
+
+ @Test
+ public void testCXF7392() throws Exception {
+ SpringBusFactory bf = new SpringBusFactory();
+ bus = bf.createBus();
+ BusFactory.setDefaultBus(bus);
+ ControlService cs = new ControlService();
+ Control control = cs.getControlPort();
+ ConnectionHelper.setKeepAliveConnection(control, false, true);
+ updateAddressPort(control, PORT);
+
+ Assert.assertTrue("Failed to start greeter", control.startGreeter(CFG));
+
+ System.setProperty("db.name", getPrefix() + "-recovery");
+ Bus greeterBus = new SpringBusFactory().createBus();
+ System.clearProperty("db.name");
+ BusFactory.setDefaultBus(greeterBus);
+
+ // avoid early client resends
+ greeterBus.getExtension(RMManager.class).getConfiguration()
+ .setBaseRetransmissionInterval(new Long(60000));
+ GreeterService gs = new GreeterService();
+ Greeter greeter = gs.getGreeterPort(new LoggingFeature(), new AddressingFeature(), wsrm());
+ updateAddressPort(greeter, PORT);
+
+ greeter.greetMe("one");
+ greeter.greetMe("two");
+ greeter.greetMe("three");
+
+
+ control.stopGreeter(CFG);
+ control.startGreeter(CFG);
+
+ // this will cause an exception as the sequence is no longer valid
+ //greeter.greetMe("four");
+
+
+ ((Closeable)greeter).close();
+ greeterBus.shutdown(true);
+ control.stopGreeter(CFG);
+ bus.shutdown(true);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/059cb2b9/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/NestedAddressingPolicyTest.java
----------------------------------------------------------------------
diff --git a/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/NestedAddressingPolicyTest.java b/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/NestedAddressingPolicyTest.java
index 8890e07..b47d6b5 100644
--- a/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/NestedAddressingPolicyTest.java
+++ b/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/policy/NestedAddressingPolicyTest.java
@@ -127,7 +127,7 @@ public class NestedAddressingPolicyTest extends AbstractBusClientServerTestBase
updateAddressPort(greeter, PORT);
LoggingInInterceptor in = new LoggingInInterceptor();
LoggingOutInterceptor out = new LoggingOutInterceptor();
- MAPCodec mapCodec = new MAPCodec();
+ MAPCodec mapCodec = MAPCodec.getInstance(bus);
MAPAggregatorImpl mapAggregator = new MAPAggregatorImpl();
bus.getInInterceptors().add(in);