You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ay...@apache.org on 2013/08/20 17:45:21 UTC
svn commit: r1515848 - in /cxf/branches/2.7.x-fixes: ./
rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/
rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/
systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/
Author: ay
Date: Tue Aug 20 15:45:20 2013
New Revision: 1515848
URL: http://svn.apache.org/r1515848
Log:
Merged revisions 1515822 via svn merge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1515822 | ay | 2013-08-20 15:36:39 +0200 (Tue, 20 Aug 2013) | 1 line
[CXF-5218] WS-RM destination's fault handling to distinguish protocol related faults from other faults
........
Added:
cxf/branches/2.7.x-fixes/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/RobustServiceWithFaultTest.java
- copied unchanged from r1515822, cxf/trunk/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/RobustServiceWithFaultTest.java
Modified:
cxf/branches/2.7.x-fixes/ (props changed)
cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java
cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java
Propchange: cxf/branches/2.7.x-fixes/
('svn:mergeinfo' removed)
Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java?rev=1515848&r1=1515847&r2=1515848&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java (original)
+++ cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java Tue Aug 20 15:45:20 2013
@@ -59,9 +59,11 @@ public class RMInInterceptor extends Abs
} catch (RMException e) {
LOG.log(Level.WARNING, "Failed to revert the delivering status");
}
- }
- if (!ContextUtils.isRequestor(message)) {
- // force the fault to be returned.
+ }
+ // make sure the fault is returned for an ws-rm related fault or an invalid ws-rm message
+ // note that OneWayProcessingInterceptor handles the robust case, hence not handled here.
+ if (isProtocolFault(message)
+ && !MessageUtils.isTrue(message.get(RMMessageConstants.DELIVERING_ROBUST_ONEWAY))) {
Exchange exchange = message.getExchange();
exchange.setOneWay(false);
@@ -73,6 +75,12 @@ public class RMInInterceptor extends Abs
}
}
+ private boolean isProtocolFault(Message message) {
+ return !ContextUtils.isRequestor(message)
+ && (RMContextUtils.getProtocolVariation(message) == null
+ || message.getContent(Exception.class) instanceof SequenceFault);
+ }
+
protected void handle(Message message) throws SequenceFault, RMException {
LOG.entering(getClass().getName(), "handleMessage");
Modified: cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java?rev=1515848&r1=1515847&r2=1515848&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java (original)
+++ cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java Tue Aug 20 15:45:20 2013
@@ -378,10 +378,12 @@ public class RMInInterceptorTest extends
interceptor.setManager(manager);
+ // test 1. a normal sequence fault case without non-anonymous faultTo
EasyMock.expect(message.get(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps);
EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
.andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
+ EasyMock.expect(message.getContent(Exception.class)).andReturn(new SequenceFault("test")).anyTimes();
exchange.setOneWay(false);
EasyMock.expectLastCall();
control.replay();
@@ -394,6 +396,7 @@ public class RMInInterceptorTest extends
control.verify();
+ // 2. a sequence fault case with non anonymous faultTo
control.reset();
Destination d = control.createMock(Destination.class);
Endpoint ep = control.createMock(Endpoint.class);
@@ -406,6 +409,7 @@ public class RMInInterceptorTest extends
EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
.andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
+ EasyMock.expect(message.getContent(Exception.class)).andReturn(new SequenceFault("test")).anyTimes();
exchange.setOneWay(false);
EasyMock.expectLastCall();
exchange.setDestination(EasyMock.anyObject(org.apache.cxf.transport.Destination.class));
@@ -419,17 +423,16 @@ public class RMInInterceptorTest extends
}
control.verify();
+ // 3. a robust oneway case
control.reset();
EasyMock.expect(maps.getFaultTo())
.andReturn(RMUtils.createAnonymousReference()).anyTimes();
- EasyMock.expect(message.get(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps);
+ EasyMock.expect(message.get(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps).anyTimes();
EasyMock.expect(manager.getDestination(message)).andReturn(d);
EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
EasyMock.expect(message.get(RMMessageConstants.DELIVERING_ROBUST_ONEWAY)).andReturn(true).anyTimes();
EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
.andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
- exchange.setOneWay(false);
- EasyMock.expectLastCall();
control.replay();
try {
@@ -437,7 +440,24 @@ public class RMInInterceptorTest extends
} catch (Exception e) {
fail("unexpected exception thrown from handleFault: " + e);
}
- // verified in tearDown
+
+ // 4. a runtime exception case
+ control.reset();
+ EasyMock.expect(maps.getFaultTo())
+ .andReturn(RMUtils.createAnonymousReference()).anyTimes();
+ EasyMock.expect(message.get(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps).anyTimes();
+ EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
+ EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
+ .andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
+ EasyMock.expect(message.getContent(Exception.class)).andReturn(new RuntimeException("test")).anyTimes();
+ control.replay();
+
+ try {
+ interceptor.handleFault(message);
+ } catch (Exception e) {
+ fail("unexpected exception thrown from handleFault: " + e);
+ }
+// verified in tearDown
}
private Message setupInboundMessage(String action, boolean serverSide) throws RMException {
Re: svn commit: r1515848 - in /cxf/branches/2.7.x-fixes: ./ rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/ rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/
Posted by Freeman Fang <fr...@gmail.com>.
Hi Aki,
This back port break both 2.7.x and 2.6.x branch, would you please take a look?
Thanks
-------------
Freeman(Yue) Fang
Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://fusesource.com | http://www.redhat.com/
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
http://blog.sina.com.cn/u/1473905042
weibo: @Freeman小屋
On 2013-8-20, at 下午11:45, ay@apache.org wrote:
> Author: ay
> Date: Tue Aug 20 15:45:20 2013
> New Revision: 1515848
>
> URL: http://svn.apache.org/r1515848
> Log:
> Merged revisions 1515822 via svn merge from
> https://svn.apache.org/repos/asf/cxf/trunk
>
> ........
> r1515822 | ay | 2013-08-20 15:36:39 +0200 (Tue, 20 Aug 2013) | 1 line
>
> [CXF-5218] WS-RM destination's fault handling to distinguish protocol related faults from other faults
> ........
>
> Added:
> cxf/branches/2.7.x-fixes/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/RobustServiceWithFaultTest.java
> - copied unchanged from r1515822, cxf/trunk/systests/ws-rm/src/test/java/org/apache/cxf/systest/ws/rm/RobustServiceWithFaultTest.java
> Modified:
> cxf/branches/2.7.x-fixes/ (props changed)
> cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java
> cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java
>
> Propchange: cxf/branches/2.7.x-fixes/
> ('svn:mergeinfo' removed)
>
> Propchange: cxf/branches/2.7.x-fixes/
> ------------------------------------------------------------------------------
> Binary property 'svnmerge-integrated' - no diff available.
>
> Modified: cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java
> URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java?rev=1515848&r1=1515847&r2=1515848&view=diff
> ==============================================================================
> --- cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java (original)
> +++ cxf/branches/2.7.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java Tue Aug 20 15:45:20 2013
> @@ -59,9 +59,11 @@ public class RMInInterceptor extends Abs
> } catch (RMException e) {
> LOG.log(Level.WARNING, "Failed to revert the delivering status");
> }
> - }
> - if (!ContextUtils.isRequestor(message)) {
> - // force the fault to be returned.
> + }
> + // make sure the fault is returned for an ws-rm related fault or an invalid ws-rm message
> + // note that OneWayProcessingInterceptor handles the robust case, hence not handled here.
> + if (isProtocolFault(message)
> + && !MessageUtils.isTrue(message.get(RMMessageConstants.DELIVERING_ROBUST_ONEWAY))) {
> Exchange exchange = message.getExchange();
> exchange.setOneWay(false);
>
> @@ -73,6 +75,12 @@ public class RMInInterceptor extends Abs
> }
> }
>
> + private boolean isProtocolFault(Message message) {
> + return !ContextUtils.isRequestor(message)
> + && (RMContextUtils.getProtocolVariation(message) == null
> + || message.getContent(Exception.class) instanceof SequenceFault);
> + }
> +
> protected void handle(Message message) throws SequenceFault, RMException {
> LOG.entering(getClass().getName(), "handleMessage");
>
>
> Modified: cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java
> URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java?rev=1515848&r1=1515847&r2=1515848&view=diff
> ==============================================================================
> --- cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java (original)
> +++ cxf/branches/2.7.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMInInterceptorTest.java Tue Aug 20 15:45:20 2013
> @@ -378,10 +378,12 @@ public class RMInInterceptorTest extends
>
> interceptor.setManager(manager);
>
> + // test 1. a normal sequence fault case without non-anonymous faultTo
> EasyMock.expect(message.get(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps);
> EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
> EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
> .andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
> + EasyMock.expect(message.getContent(Exception.class)).andReturn(new SequenceFault("test")).anyTimes();
> exchange.setOneWay(false);
> EasyMock.expectLastCall();
> control.replay();
> @@ -394,6 +396,7 @@ public class RMInInterceptorTest extends
>
> control.verify();
>
> + // 2. a sequence fault case with non anonymous faultTo
> control.reset();
> Destination d = control.createMock(Destination.class);
> Endpoint ep = control.createMock(Endpoint.class);
> @@ -406,6 +409,7 @@ public class RMInInterceptorTest extends
> EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
> EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
> .andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
> + EasyMock.expect(message.getContent(Exception.class)).andReturn(new SequenceFault("test")).anyTimes();
> exchange.setOneWay(false);
> EasyMock.expectLastCall();
> exchange.setDestination(EasyMock.anyObject(org.apache.cxf.transport.Destination.class));
> @@ -419,17 +423,16 @@ public class RMInInterceptorTest extends
> }
> control.verify();
>
> + // 3. a robust oneway case
> control.reset();
> EasyMock.expect(maps.getFaultTo())
> .andReturn(RMUtils.createAnonymousReference()).anyTimes();
> - EasyMock.expect(message.get(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps);
> + EasyMock.expect(message.get(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps).anyTimes();
> EasyMock.expect(manager.getDestination(message)).andReturn(d);
> EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
> EasyMock.expect(message.get(RMMessageConstants.DELIVERING_ROBUST_ONEWAY)).andReturn(true).anyTimes();
> EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
> .andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
> - exchange.setOneWay(false);
> - EasyMock.expectLastCall();
> control.replay();
>
> try {
> @@ -437,7 +440,24 @@ public class RMInInterceptorTest extends
> } catch (Exception e) {
> fail("unexpected exception thrown from handleFault: " + e);
> }
> - // verified in tearDown
> +
> + // 4. a runtime exception case
> + control.reset();
> + EasyMock.expect(maps.getFaultTo())
> + .andReturn(RMUtils.createAnonymousReference()).anyTimes();
> + EasyMock.expect(message.get(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND)).andReturn(maps).anyTimes();
> + EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes();
> + EasyMock.expect(message.get(RMMessageConstants.RM_PROTOCOL_VARIATION))
> + .andReturn(ProtocolVariation.RM10WSA200408).anyTimes();
> + EasyMock.expect(message.getContent(Exception.class)).andReturn(new RuntimeException("test")).anyTimes();
> + control.replay();
> +
> + try {
> + interceptor.handleFault(message);
> + } catch (Exception e) {
> + fail("unexpected exception thrown from handleFault: " + e);
> + }
> +// verified in tearDown
> }
>
> private Message setupInboundMessage(String action, boolean serverSide) throws RMException {
>
>