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/04 18:37:49 UTC

svn commit: r535322 - in /incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers: HandlerInvocationTest.java TestHandlerBase.java

Author: jliu
Date: Fri May  4 09:37:47 2007
New Revision: 535322

URL: http://svn.apache.org/viewvc?view=rev&rev=535322
Log:
Test cases for CXF-632

Modified:
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/HandlerInvocationTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/TestHandlerBase.java

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/HandlerInvocationTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/HandlerInvocationTest.java?view=diff&rev=535322&r1=535321&r2=535322
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/HandlerInvocationTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/HandlerInvocationTest.java Fri May  4 09:37:47 2007
@@ -56,11 +56,9 @@
 import org.junit.Ignore;
 import org.junit.Test;
 
-
 public class HandlerInvocationTest extends AbstractBusClientServerTestBase {
 
-    private final QName serviceName = new QName("http://apache.org/handler_test",
-                                          "HandlerTestService");
+    private final QName serviceName = new QName("http://apache.org/handler_test", "HandlerTestService");
     private final QName portName = new QName("http://apache.org/handler_test", "SoapPort");
 
     private URL wsdl;
@@ -85,31 +83,31 @@
             fail(ex.toString());
         }
     }
-    
+
     @Test
-    public void testLogicalHandlerOneWay() {
+    public void testAddHandlerThroughHandlerResolverClientSide() {
         TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
         TestHandler<LogicalMessageContext> handler2 = new TestHandler<LogicalMessageContext>(false);
-        addHandlersToChain((BindingProvider)handlerTest, handler1, handler2);
 
-        handlerTest.pingOneWay();
+        MyHandlerResolver myHandlerResolver = new MyHandlerResolver(handler1, handler2);
+
+        service.setHandlerResolver(myHandlerResolver);
+
+        HandlerTest handlerTestNew = service.getPort(portName, HandlerTest.class);
+
+        handlerTestNew.pingOneWay();
 
         assertEquals(1, handler1.getHandleMessageInvoked());
         assertEquals(1, handler2.getHandleMessageInvoked());
     }
-    
+
     @Test
-    public void testAddHandlerThroughHandlerResolverClientSide() {
+    public void testLogicalHandlerOneWay() {
         TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
         TestHandler<LogicalMessageContext> handler2 = new TestHandler<LogicalMessageContext>(false);
-        
-        MyHandlerResolver myHandlerResolver = new MyHandlerResolver(handler1, handler2);
-         
-        service.setHandlerResolver(myHandlerResolver);
-        
-        HandlerTest handlerTestNew = service.getPort(portName, HandlerTest.class);
+        addHandlersToChain((BindingProvider)handlerTest, handler1, handler2);
 
-        handlerTestNew.pingOneWay();
+        handlerTest.pingOneWay();
 
         assertEquals(1, handler1.getHandleMessageInvoked());
         assertEquals(1, handler2.getHandleMessageInvoked());
@@ -127,12 +125,49 @@
         assertEquals(2, handler1.getHandleMessageInvoked());
         assertEquals(2, handler2.getHandleMessageInvoked());
     }
- 
+
     @Test
-    public void testLogicalHandlerStopProcessingClientSide() throws Exception {
+    public void testSOAPHandlerHandleMessageReturnTrueClientSide() throws Exception {
+        TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
+        TestHandler<LogicalMessageContext> handler2 = new TestHandler<LogicalMessageContext>(false);
+        TestSOAPHandler soapHandler1 = new TestSOAPHandler(false);
+        TestSOAPHandler soapHandler2 = new TestSOAPHandler(false);
+
+        addHandlersToChain((BindingProvider)handlerTest, handler1, handler2, soapHandler1, soapHandler2);
+
+        List<String> resp = handlerTest.ping();
+        assertNotNull(resp);
+
+        assertEquals("handle message was not invoked", 2, handler1.getHandleMessageInvoked());
+        assertEquals("handle message was not invoked", 2, handler2.getHandleMessageInvoked());
+        assertEquals("handle message was not invoked", 2, soapHandler1.getHandleMessageInvoked());
+        assertEquals("handle message was not invoked", 2, soapHandler2.getHandleMessageInvoked());
+        assertTrue("close must be  called", handler1.isCloseInvoked());
+        assertTrue("close must be  called", handler2.isCloseInvoked());
+        assertTrue("close must be  called", soapHandler1.isCloseInvoked());
+        assertTrue("close must be  called", soapHandler2.isCloseInvoked());
+
+        // the server has encoded into the response the order in
+        // which the handlers have been invoked, parse it and make
+        // sure everything is ok
+
+        // expected order for inbound interceptors
+        String[] handlerNames = {"soapHandler4", "soapHandler3", "handler2", "handler1", "servant",
+                                 "handler1", "handler2", "soapHandler3", "soapHandler4"};
+
+        assertEquals(handlerNames.length, resp.size());
+
+        Iterator iter = resp.iterator();
+        for (String expected : handlerNames) {
+            assertEquals(expected, iter.next());
+        }
+    }
+    
+    @Test
+    public void testLogicalHandlerHandleMessageReturnFalseClientSide() throws Exception {
         final String clientHandlerMessage = "handler2 client side";
 
-        TestHandler<LogicalMessageContext>  handler1 = new TestHandler<LogicalMessageContext>(false);
+        TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
         TestHandler<LogicalMessageContext> handler2 = new TestHandler<LogicalMessageContext>(false) {
             public boolean handleMessage(LogicalMessageContext ctx) {
                 super.handleMessage(ctx);
@@ -141,8 +176,8 @@
                     if (outbound) {
                         LogicalMessage msg = ctx.getMessage();
                         assertNotNull("logical message is null", msg);
-                        JAXBContext jaxbCtx = 
-                            JAXBContext.newInstance(PackageUtils.getPackageName(PingOneWay.class));
+                        JAXBContext jaxbCtx = JAXBContext.newInstance(PackageUtils
+                            .getPackageName(PingOneWay.class));
                         PingResponse resp = new PingResponse();
                         resp.getHandlersInfo().add(clientHandlerMessage);
 
@@ -162,21 +197,23 @@
         List<String> resp = handlerTest.ping();
         assertEquals(clientHandlerMessage, resp.get(0));
 
-        //TODO: Following are commented out due to CXF-332
-        /*assertEquals("handler must be invoked for inbound & outbound message",
-                     2, handler1.getHandleMessageInvoked());*/
-        
-        assertEquals("second handler must be invoked exactly once", 1, handler2.getHandleMessageInvoked());
-        //assertTrue("close must be  called", handler1.isCloseInvoked());
-        //assertTrue("close must be called", handler2.isCloseInvoked());
+        assertEquals("handler must be invoked for inbound & outbound message", 2, handler1
+            .getHandleMessageInvoked());
+
+        assertEquals("the second handler must be invoked once", 1, handler2.getHandleMessageInvoked());
+
+        /*
+         * assertTrue("close must be called", handler1.isCloseInvoked());
+         * assertTrue("close must be called", handler2.isCloseInvoked());
+         */
     }
-    
+
     @Test
     @Ignore
     public void testLogicalHandlerStopProcessingServerSide() throws PingException {
-        //TODO: Following are commented out due to CXF-332
-        String[] expectedHandlers = {"soapHandler4", "soapHandler3", "handler2",
-                                     "soapHandler3", "soapHandler4"};
+        // TODO: Following are commented out due to CXF-332
+        String[] expectedHandlers = {"soapHandler4", "soapHandler3", "handler2", "soapHandler3",
+                                     "soapHandler4"};
 
         List<String> resp = handlerTest.pingWithArgs("handler2 inbound stop");
 
@@ -187,7 +224,6 @@
             assertEquals(expected, resp.get(i++));
         }
 
-
         String[] expectedHandlers1 = {"soapHandler4", "soapHandler3", "soapHandler4"};
         resp = handlerTest.pingWithArgs("soapHandler3 inbound stop");
         assertEquals(expectedHandlers1.length, resp.size());
@@ -198,17 +234,17 @@
     }
 
     @Test
-    public void testLogicalHandlerThrowsProtocolExceptionClientSide() throws Exception {
+    public void testLogicalHandlerHandleMessageThrowsProtocolExceptionClientSide() throws Exception {
 
         final String clientHandlerMessage = "handler1 client side";
 
-        TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false) {
+        TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
+        TestHandler<LogicalMessageContext> handler2 = new TestHandler<LogicalMessageContext>(false) {
             public boolean handleMessage(LogicalMessageContext ctx) {
                 super.handleMessage(ctx);
                 throw new ProtocolException(clientHandlerMessage);
             }
         };
-        TestHandler<LogicalMessageContext>  handler2 = new TestHandler<LogicalMessageContext>(false);
 
         addHandlersToChain((BindingProvider)handlerTest, handler1, handler2);
 
@@ -218,13 +254,15 @@
         } catch (ProtocolException e) {
             assertEquals(clientHandlerMessage, e.getMessage());
         }
-        assertTrue(!handler2.isHandleFaultInvoked());
-        
-        assertTrue(handler1.isCloseInvoked());
-        assertTrue(!handler2.isCloseInvoked());
+
+        assertEquals(0, handler2.getHandleFaultInvoked());
+        assertEquals(1, handler1.getHandleFaultInvoked());
+
+        assertEquals(1, handler1.getCloseInvoked());
+        assertEquals(1, handler2.getCloseInvoked());
     }
 
-    //TODO: commented out due to CXF-333
+    // TODO: commented out due to CXF-333
     @Test
     @Ignore
     public void testLogicalHandlerThrowsProtocolExceptionServerSide() throws PingException {
@@ -237,11 +275,63 @@
     }
 
     @Test
+    public void testLogicalHandlerHandleMessageThrowsRuntimeExceptionClientSide() throws Exception {
+        final String clientHandlerMessage = "handler1 client side";
+
+        TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
+        TestHandler<LogicalMessageContext> handler2 = new TestHandler<LogicalMessageContext>(false) {
+            public boolean handleMessage(LogicalMessageContext ctx) {
+                super.handleMessage(ctx);
+                throw new RuntimeException(clientHandlerMessage);
+            }
+        };
+
+        addHandlersToChain((BindingProvider)handlerTest, handler1, handler2);
+
+        try {
+            handlerTest.ping();
+            fail("did not get expected exception");
+        } catch (RuntimeException e) {
+            assertTrue(e.getMessage().contains(clientHandlerMessage));
+        }
+
+        assertEquals(0, handler2.getHandleFaultInvoked());
+        assertEquals(0, handler1.getHandleFaultInvoked());
+
+        assertEquals(1, handler1.getCloseInvoked());
+        assertEquals(1, handler2.getCloseInvoked());
+    }
+
+    @Test
+    public void testSOAPHandlerHandleMessageReturnFalseClientSide() throws Exception {
+        TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
+        TestHandler<LogicalMessageContext> handler2 = new TestHandler<LogicalMessageContext>(false);
+        TestSOAPHandler soapHandler1 = new TestSOAPHandler(false);
+        TestSOAPHandler soapHandler2 = new TestSOAPHandler<SOAPMessageContext>(false) {
+            public boolean handleMessage(SOAPMessageContext ctx) {
+                super.handleMessage(ctx);
+                return false;
+            }
+        };
+        addHandlersToChain((BindingProvider)handlerTest, handler1, handler2, soapHandler1, soapHandler2);
+
+        handlerTest.ping();
+        //List<String> resp = handlerTest.ping();
+        // assertEquals(clientHandlerMessage, resp.get(0));
+
+        assertEquals(2, handler1.getHandleMessageInvoked());
+        assertEquals(2, handler2.getHandleMessageInvoked());
+        assertEquals(2, soapHandler1.getHandleMessageInvoked());
+        //FIXME: CXF-632:
+        //assertEquals(1, soapHandler2.getHandleMessageInvoked());
+    }
+
+    @Test
     @Ignore
     public void testLogicalHandlerHandlerFault() {
 
         TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
-        TestHandler<LogicalMessageContext>  handler2 = new TestHandler<LogicalMessageContext>(false);
+        TestHandler<LogicalMessageContext> handler2 = new TestHandler<LogicalMessageContext>(false);
         addHandlersToChain((BindingProvider)handlerTest, handler1, handler2);
 
         try {
@@ -256,101 +346,51 @@
         assertEquals(1, handler1.getHandleFaultInvoked());
         assertEquals(1, handler2.getHandleFaultInvoked());
     }
-       
-    //TODO: Commented out due to CXF-334
-    @Test
-    public void testHandlersInvoked() throws Exception {
-        TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
-        TestHandler<LogicalMessageContext>  handler2 = new TestHandler<LogicalMessageContext>(false);
-        TestSOAPHandler soapHandler1 = new TestSOAPHandler(false);
-        TestSOAPHandler soapHandler2 = new TestSOAPHandler(false);
- 
-        addHandlersToChain((BindingProvider)handlerTest, handler1, handler2,
-                           soapHandler1, soapHandler2);
-
-        List<String> resp = handlerTest.ping();
-        assertNotNull(resp);
 
-        assertEquals("handle message was not invoked", 2, handler1.getHandleMessageInvoked());
-        assertEquals("handle message was not invoked", 2, handler2.getHandleMessageInvoked());
-        assertEquals("handle message was not invoked", 2, soapHandler1.getHandleMessageInvoked());
-        assertEquals("handle message was not invoked", 2, soapHandler2.getHandleMessageInvoked());
-        assertTrue("close must be  called", handler1.isCloseInvoked());
-        assertTrue("close must be  called", handler2.isCloseInvoked());
-        assertTrue("close must be  called", soapHandler1.isCloseInvoked());
-        assertTrue("close must be  called", soapHandler2.isCloseInvoked());
-
-        // the server has encoded into the response the order in
-        // which the handlers have been invoked, parse it and make
-        // sure everything is ok
-
-        // expected order for inbound interceptors
-        //
-        // note: the stream handler does not add itself to the list on
-        // the way out of the server.  It compresses the message so
-        // the fact that we are here indicates that it has
-        // participated correctly in the message exchange.
-        String[] handlerNames = {"soapHandler4", "soapHandler3", "handler2", "handler1",
-                                 "servant",
-                                 "handler1", "handler2", "soapHandler3", "soapHandler4"};
-
-        assertEquals(handlerNames.length, resp.size());
-
-        Iterator iter = resp.iterator();
-        for (String expected : handlerNames) {
-            assertEquals(expected, iter.next());
-        }
-    }
-       
-    
     @Test
     @Ignore
-    public void testDescription() throws PingException { 
+    public void testDescription() throws PingException {
         TestHandler<LogicalMessageContext> handler = new TestHandler<LogicalMessageContext>(false) {
             public boolean handleMessage(LogicalMessageContext ctx) {
                 super.handleMessage(ctx);
-                assertTrue("wsdl description not found or invalid",
-                           isValidWsdlDescription(ctx.get(MessageContext.WSDL_DESCRIPTION)));
+                assertTrue("wsdl description not found or invalid", isValidWsdlDescription(ctx
+                    .get(MessageContext.WSDL_DESCRIPTION)));
                 return true;
             }
         };
         TestSOAPHandler soapHandler = new TestSOAPHandler<SOAPMessageContext>(false) {
             public boolean handleMessage(SOAPMessageContext ctx) {
                 super.handleMessage(ctx);
-                assertTrue("wsdl description not found or invalid",
-                           isValidWsdlDescription(ctx.get(MessageContext.WSDL_DESCRIPTION)));
+                assertTrue("wsdl description not found or invalid", isValidWsdlDescription(ctx
+                    .get(MessageContext.WSDL_DESCRIPTION)));
                 return true;
             }
-        };           
-                   
+        };
 
         addHandlersToChain((BindingProvider)handlerTest, handler, soapHandler);
 
         List<String> resp = handlerTest.ping();
-        assertNotNull(resp); 
-        
+        assertNotNull(resp);
+
         assertEquals("handler was not invoked", 2, handler.getHandleMessageInvoked());
         assertEquals("handle message was not invoked", 2, soapHandler.getHandleMessageInvoked());
         assertTrue("close must be  called", handler.isCloseInvoked());
         assertTrue("close must be  called", soapHandler.isCloseInvoked());
     }
-   
-    
+
     @Test
     public void testHandlersInvokedForDispatch() throws Exception {
 
-        Dispatch<SOAPMessage> disp = service.createDispatch(portName,
-                                                            SOAPMessage.class,
-                                                            Service.Mode.MESSAGE);
+        Dispatch<SOAPMessage> disp = service
+            .createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
         TestHandler<LogicalMessageContext> handler1 = new TestHandler<LogicalMessageContext>(false);
-        TestHandler<LogicalMessageContext>  handler2 = new TestHandler<LogicalMessageContext>(false);
+        TestHandler<LogicalMessageContext> handler2 = new TestHandler<LogicalMessageContext>(false);
         TestSOAPHandler soapHandler1 = new TestSOAPHandler(false);
         TestSOAPHandler soapHandler2 = new TestSOAPHandler(false);
 
-        addHandlersToChain((BindingProvider)disp, handler1, handler2,
-                           soapHandler1, soapHandler2);
+        addHandlersToChain((BindingProvider)disp, handler1, handler2, soapHandler1, soapHandler2);
 
-        InputStream is =  getClass().getResourceAsStream("PingReq.xml");
+        InputStream is = getClass().getResourceAsStream("PingReq.xml");
         SOAPMessage outMsg = MessageFactory.newInstance().createMessage(null, is);
 
         SOAPMessage inMsg = disp.invoke(outMsg);
@@ -360,19 +400,18 @@
         assertEquals("handle message was not invoked", 2, handler2.getHandleMessageInvoked());
         assertEquals("handle message was not invoked", 2, soapHandler1.getHandleMessageInvoked());
         assertEquals("handle message was not invoked", 2, soapHandler2.getHandleMessageInvoked());
-        //TODO: commented out, need to fix 
-        //assertTrue("close must be  called", handler1.isCloseInvoked());
-        //assertTrue("close must be  called", handler2.isCloseInvoked());
-        //assertTrue("close must be  called", soapHandler1.isCloseInvoked());
-        //assertTrue("close must be  called", soapHandler2.isCloseInvoked());
+        // TODO: commented out, need to fix
+        // assertTrue("close must be called", handler1.isCloseInvoked());
+        // assertTrue("close must be called", handler2.isCloseInvoked());
+        // assertTrue("close must be called", soapHandler1.isCloseInvoked());
+        // assertTrue("close must be called", soapHandler2.isCloseInvoked());
 
         // the server has encoded into the response the order in
         // which the handlers have been invoked, parse it and make
         // sure everything is ok
 
         // expected order for inbound interceptors
-        String[] handlerNames = {"soapHandler4", "soapHandler3", "handler2", "handler1",
-                                 "servant",
+        String[] handlerNames = {"soapHandler4", "soapHandler3", "handler2", "handler1", "servant",
                                  "handler1", "handler2", "soapHandler3", "soapHandler4"};
 
         List<String> resp = getHandlerNames(inMsg.getSOAPBody().getChildNodes());
@@ -384,7 +423,7 @@
         }
     }
 
-    void addHandlersToChain(BindingProvider bp, Handler...handlers) {
+    void addHandlersToChain(BindingProvider bp, Handler... handlers) {
         List<Handler> handlerChain = bp.getBinding().getHandlerChain();
         assertNotNull(handlerChain);
         for (Handler h : handlers) {
@@ -413,24 +452,24 @@
         }
         return stringList;
     }
-    
+
     public class MyHandlerResolver implements HandlerResolver {
         List<Handler> chain = new ArrayList<Handler>();
-        
-        public MyHandlerResolver(Handler...handlers) {
+
+        public MyHandlerResolver(Handler... handlers) {
             for (Handler h : handlers) {
                 chain.add(h);
             }
         }
+
         public List<Handler> getHandlerChain(PortInfo portInfo) {
             return chain;
         }
-            
+
     }
-    
+
     private boolean isValidWsdlDescription(Object wsdlDescription) {
-        return (wsdlDescription != null) 
-            && ((wsdlDescription instanceof java.net.URI)
-                || (wsdlDescription instanceof java.net.URL));
+        return (wsdlDescription != null)
+               && ((wsdlDescription instanceof java.net.URI) || (wsdlDescription instanceof java.net.URL));
     }
 }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/TestHandlerBase.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/TestHandlerBase.java?view=diff&rev=535322&r1=535321&r2=535322
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/TestHandlerBase.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/handlers/TestHandlerBase.java Fri May  4 09:37:47 2007
@@ -90,6 +90,10 @@
         return getMethodCallCount("handleFault");
     }
 
+    public int getCloseInvoked() {
+        return getMethodCallCount("close");
+    }
+    
     public boolean isHandleMessageInvoked() {
         return methodCallCount.containsKey("handleMessage");
     }