You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by jl...@apache.org on 2007/05/03 06:45:01 UTC
svn commit: r534708 - in /incubator/cxf/trunk/rt/frontend/jaxws/src:
main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java
test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java
Author: jliu
Date: Wed May 2 21:45:00 2007
New Revision: 534708
URL: http://svn.apache.org/viewvc?view=rev&rev=534708
Log:
Added test case for CXF-630
Modified:
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java
incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java?view=diff&rev=534708&r1=534707&r2=534708
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java Wed May 2 21:45:00 2007
@@ -376,21 +376,19 @@
@SuppressWarnings("unchecked")
private boolean invokeReversedHandlerMessage(MessageContext ctx) {
+ boolean continueProcessing = true;
+
int index = invokedHandlers.size() - 2;
while (index >= 0) {
Handler handler = invokedHandlers.get(index);
if (handler instanceof LogicalHandler) {
- if (Boolean.FALSE.equals(handler.handleMessage(logicalMessageContext))) {
- return false;
- }
+ continueProcessing = handler.handleMessage(logicalMessageContext);
} else {
- if (Boolean.FALSE.equals(handler.handleMessage(protocolMessageContext))) {
- return false;
- }
+ continueProcessing = handler.handleMessage(protocolMessageContext);
}
index--;
}
- return true;
+ return continueProcessing;
}
//close is called on each previously invoked handler in the chain, the close method is
Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java?view=diff&rev=534708&r1=534707&r2=534708
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java Wed May 2 21:45:00 2007
@@ -21,10 +21,18 @@
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
import javax.xml.ws.ProtocolException;
import javax.xml.ws.handler.Handler;
import javax.xml.ws.handler.LogicalHandler;
@@ -42,9 +50,10 @@
private static final int HANDLER_COUNT = 4;
HandlerChainInvoker invoker;
- Message message = new MessageImpl();
- LogicalMessageContext lmc = new LogicalMessageContextImpl(message);
- MessageContext pmc = new WrappedMessageContext(message);
+ Message message;
+ LogicalMessageContext lmc;
+ MessageContext pmc;
+ Source payload;
TestLogicalHandler[] logicalHandlers = new TestLogicalHandler[HANDLER_COUNT];
TestProtocolHandler[] protocolHandlers = new TestProtocolHandler[HANDLER_COUNT];
@@ -63,6 +72,14 @@
}
invoker = new HandlerChainInvoker(handlers);
+
+ message = new MessageImpl();
+ lmc = new LogicalMessageContextImpl(message);
+ pmc = new WrappedMessageContext(message);
+
+ payload = new DOMSource();
+ message.setContent(Source.class, payload);
+
}
public void testInvokeEmptyHandlerChain() {
@@ -389,10 +406,14 @@
invoker.setResponseExpected(true);
boolean continueProcessing = true;
+ invoker.setLogicalMessageContext(lmc);
continueProcessing = invoker.invokeLogicalHandlers(false, lmc);
assertFalse(continueProcessing);
-
+
+ assertFalse((Boolean)lmc.get(LogicalMessageContext.MESSAGE_OUTBOUND_PROPERTY));
+ assertEquals(payload, lmc.getMessage().getPayload());
+
assertEquals(2, logicalHandlers[0].getHandleMessageCount());
assertEquals(2, logicalHandlers[1].getHandleMessageCount());
assertEquals(1, logicalHandlers[2].getHandleMessageCount());
@@ -470,16 +491,23 @@
//boolean continueProcessing = true;
try {
+ invoker.setLogicalMessageContext(lmc);
invoker.invokeLogicalHandlers(false, lmc);
fail("did not get expected exception");
} catch (ProtocolException e) {
assertEquals("banzai", e.getMessage());
}
+
assertTrue(invoker.faultRaised());
//assertFalse(continueProcessing);
//assertTrue(invoker.isClosed());
assertSame(pe, invoker.getFault());
-
+
+ assertFalse((Boolean)lmc.get(LogicalMessageContext.MESSAGE_OUTBOUND_PROPERTY));
+ Source responseMessage = lmc.getMessage().getPayload();
+ System.out.println(getSourceAsString(responseMessage));
+ //assertTrue(getSourceAsString(responseMessage).indexOf("banzai") > -1);
+
assertEquals(1, logicalHandlers[0].getHandleMessageCount());
assertEquals(1, logicalHandlers[1].getHandleMessageCount());
assertEquals(1, logicalHandlers[2].getHandleMessageCount());
@@ -628,16 +656,17 @@
// exception is dispatched
public void testHandleFaultThrowsProtocolException() {
ProtocolException pe = new ProtocolException("banzai");
+ ProtocolException pe2 = new ProtocolException("banzai2");
// throw exception during handleFault processing
logicalHandlers[2].setException(pe);
- logicalHandlers[1].setFaultException(pe);
+ logicalHandlers[1].setFaultException(pe2);
boolean continueProcessing = false;
try {
continueProcessing = invoker.invokeLogicalHandlers(false, lmc);
fail("did not get expected exception");
- } catch (RuntimeException e) {
- assertEquals("banzai", e.getMessage());
+ } catch (ProtocolException e) {
+ assertEquals("banzai2", e.getMessage());
}
assertFalse(continueProcessing);
@@ -888,7 +917,25 @@
assertTrue(invoker.getInvokedHandlers().contains(protocolHandlers[0]));
assertTrue(invoker.getInvokedHandlers().contains(protocolHandlers[1]));
}
+
+ private String getSourceAsString(Source s) {
+ String result = "";
+ try {
+ Transformer transformer = TransformerFactory.newInstance().newTransformer();
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+ OutputStream out = new ByteArrayOutputStream();
+ StreamResult streamResult = new StreamResult();
+ streamResult.setOutputStream(out);
+ transformer.transform(s, streamResult);
+ return streamResult.getOutputStream().toString();
+ } catch (Exception e) {
+ //do nothing
+ }
+ return result;
+ }
+
static class TestProtocolHandler extends AbstractHandlerBase<SOAPMessageContext> {
}