cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From buhhu...@apache.org
Subject [cxf] branch master updated: cxf-rt-transports-udp: minor code improvements to improve test stability (#490)
Date Thu, 03 Jan 2019 23:28:50 GMT
This is an automated email from the ASF dual-hosted git repository.

buhhunyx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new cbf2d26  cxf-rt-transports-udp: minor code improvements to improve test stability
(#490)
cbf2d26 is described below

commit cbf2d261ac21657a9b1d6dc233e881d2ec71f442
Author: Alexey Markevich <amarkevich@talend.com>
AuthorDate: Fri Jan 4 02:28:45 2019 +0300

    cxf-rt-transports-udp: minor code improvements to improve test stability (#490)
    
    
    
    * revert back to support LoggingFeature
---
 .../org/apache/cxf/transport/udp/UDPConduit.java   | 28 ++++---------
 .../apache/cxf/transport/udp/UDPDestination.java   | 48 +++++-----------------
 .../cxf/transport/udp/UDPTransportFactory.java     | 11 ++---
 .../apache/cxf/transport/udp/UDPTransportTest.java | 33 +++++++++------
 4 files changed, 41 insertions(+), 79 deletions(-)

diff --git a/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPConduit.java
b/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPConduit.java
index edeacd2..3805c37 100644
--- a/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPConduit.java
+++ b/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPConduit.java
@@ -114,11 +114,7 @@ public class UDPConduit extends AbstractConduit {
                     if (queue == null) {
                         queue = queuem.getAutomaticWorkQueue();
                     }
-                    queue.execute(new Runnable() {
-                        public void run() {
-                            incomingObserver.onMessage(inMessage);
-                        }
-                    });
+                    queue.execute(() -> incomingObserver.onMessage(inMessage));
                 } else {
                     incomingObserver.onMessage(inMessage);
                     if (!message.getExchange().isSynchronous() || multi) {
@@ -194,17 +190,13 @@ public class UDPConduit extends AbstractConduit {
                 int port = Integer.parseInt(s);
                 sendViaBroadcast(message, null, port);
             } else {
-                InetSocketAddress isa = null;
-                String hp = "";
-
-                isa = new InetSocketAddress(uri.getHost(), uri.getPort());
-                hp = uri.getHost() + ":" + uri.getPort();
-
+                final InetSocketAddress isa = new InetSocketAddress(uri.getHost(), uri.getPort());
                 if (isa.getAddress().isMulticastAddress()) {
                     sendViaBroadcast(message, isa, isa.getPort());
                     return;
                 }
 
+                final String hp = uri.getHost() + ':' + uri.getPort();
                 Queue<ConnectFuture> q = connections.get(hp);
                 ConnectFuture connFuture = null;
                 if (q != null) {
@@ -217,9 +209,9 @@ public class UDPConduit extends AbstractConduit {
                     ((DatagramSessionConfig)connFuture.getSession().getConfig()).setReceiveBufferSize(64
* 1024);
                 }
                 connFuture.getSession().setAttribute(CXF_MESSAGE_ATTR, message);
-                message.setContent(OutputStream.class, new UDPConduitOutputStream(connector,
connFuture, message));
+                message.setContent(OutputStream.class, new UDPConduitOutputStream(connFuture));
                 message.getExchange().put(ConnectFuture.class, connFuture);
-                message.getExchange().put(HOST_PORT, uri.getHost() + ":" + uri.getPort());
+                message.getExchange().put(HOST_PORT, hp);
             }
         } catch (Exception ex) {
             throw new IOException(ex);
@@ -340,19 +332,13 @@ public class UDPConduit extends AbstractConduit {
         }
     }
 
-    public class UDPConduitOutputStream extends OutputStream {
+    static class UDPConduitOutputStream extends OutputStream {
         final ConnectFuture future;
-        final NioDatagramConnector connector;
-        final Message message;
         IoBuffer buffer = IoBuffer.allocate(64 * 1024 - 42); //max size
         boolean closed;
 
-        public UDPConduitOutputStream(NioDatagramConnector connector,
-                                      ConnectFuture connFuture,
-                                      Message m) {
-            this.connector = connector;
+        UDPConduitOutputStream(ConnectFuture connFuture) {
             this.future = connFuture;
-            this.message = m;
         }
 
         public void write(int b) throws IOException {
diff --git a/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPDestination.java
b/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPDestination.java
index c5b8996..d3e22ac 100644
--- a/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPDestination.java
+++ b/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPDestination.java
@@ -98,22 +98,14 @@ public class UDPDestination extends AbstractDestination {
                         }
                     };
 
-                    UDPConnectionInfo info = new UDPConnectionInfo(null,
-                                                                   out,
-                                                                   new ByteArrayInputStream(bytes,
0, p.getLength()));
-
                     final MessageImpl m = new MessageImpl();
                     final Exchange exchange = new ExchangeImpl();
                     exchange.setDestination(UDPDestination.this);
                     m.setDestination(UDPDestination.this);
                     exchange.setInMessage(m);
-                    m.setContent(InputStream.class, info.in);
-                    m.put(UDPConnectionInfo.class, info);
-                    queue.execute(new Runnable() {
-                        public void run() {
-                            getMessageObserver().onMessage(m);
-                        }
-                    });
+                    m.setContent(InputStream.class, new ByteArrayInputStream(bytes, 0, p.getLength()));
+                    m.put(OutputStream.class, out);
+                    queue.execute(() -> getMessageObserver().onMessage(m));
                 } catch (IOException ex) {
                     ex.printStackTrace();
                 }
@@ -124,14 +116,13 @@ public class UDPDestination extends AbstractDestination {
 
     /** {@inheritDoc}*/
     @Override
-    protected Conduit getInbuiltBackChannel(Message inMessage) {
+    protected Conduit getInbuiltBackChannel(final Message inMessage) {
         if (inMessage.getExchange().isOneWay()) {
             return null;
         }
-        final UDPConnectionInfo info = inMessage.get(UDPConnectionInfo.class);
         return new AbstractBackChannelConduit() {
             public void prepare(Message message) throws IOException {
-                message.setContent(OutputStream.class, info.out);
+                message.setContent(OutputStream.class, inMessage.get(OutputStream.class));
             }
         };
     }
@@ -190,8 +181,9 @@ public class UDPDestination extends AbstractDestination {
                 dcfg.setReuseAddress(true);
                 acceptor.bind();
             }
+        } catch (RuntimeException e) {
+            throw e;
         } catch (Exception ex) {
-            ex.printStackTrace();
             throw new RuntimeException(ex);
         }
     }
@@ -235,22 +227,8 @@ public class UDPDestination extends AbstractDestination {
         }
     }
 
-    static class UDPConnectionInfo {
-        final IoSession session;
-        final OutputStream out;
-        final InputStream in;
-
-        UDPConnectionInfo(IoSession io, OutputStream o, InputStream i) {
-            session = io;
-            out = o;
-            in = i;
-        }
-    }
-
-
     class UDPIOHandler extends StreamIoHandler {
 
-
         @Override
         public void sessionOpened(IoSession session) {
             // Set timeouts
@@ -273,12 +251,8 @@ public class UDPDestination extends AbstractDestination {
             exchange.setInMessage(m);
             m.setContent(InputStream.class, in);
             out = new UDPDestinationOutputStream(out);
-            m.put(UDPConnectionInfo.class, new UDPConnectionInfo(session, out, in));
-            queue.execute(new Runnable() {
-                public void run() {
-                    getMessageObserver().onMessage(m);
-                }
-            });
+            m.put(OutputStream.class, out);
+            queue.execute(() -> getMessageObserver().onMessage(m));
         }
 
         public void sessionClosed(IoSession session) throws Exception {
@@ -329,12 +303,12 @@ public class UDPDestination extends AbstractDestination {
         }
     }
 
-    public class UDPDestinationOutputStream extends OutputStream {
+    static class UDPDestinationOutputStream extends OutputStream {
         final OutputStream out;
         IoBuffer buffer = IoBuffer.allocate(64 * 1024 - 42); //max size
         boolean closed;
 
-        public UDPDestinationOutputStream(OutputStream out) {
+        UDPDestinationOutputStream(OutputStream out) {
             this.out = out;
         }
 
diff --git a/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPTransportFactory.java
b/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPTransportFactory.java
index 5703105..3303715 100644
--- a/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPTransportFactory.java
+++ b/rt/transports/udp/src/main/java/org/apache/cxf/transport/udp/UDPTransportFactory.java
@@ -20,7 +20,6 @@
 package org.apache.cxf.transport.udp;
 
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -45,14 +44,10 @@ public class UDPTransportFactory extends AbstractTransportFactory
     implements DestinationFactory, ConduitInitiator {
 
     public static final String TRANSPORT_ID = "http://cxf.apache.org/transports/udp";
-    public static final List<String> DEFAULT_NAMESPACES
-        = Collections.unmodifiableList(Arrays.asList(TRANSPORT_ID));
+    public static final List<String> DEFAULT_NAMESPACES = Collections.singletonList(TRANSPORT_ID);
 
     private static final Logger LOG = LogUtils.getL7dLogger(UDPTransportFactory.class);
-    private static final Set<String> URI_PREFIXES = new HashSet<>();
-    static {
-        URI_PREFIXES.add("udp://");
-    }
+    private static final Set<String> URI_PREFIXES = Collections.singleton("udp://");
 
     private Set<String> uriPrefixes = new HashSet<>(URI_PREFIXES);
 
@@ -94,7 +89,7 @@ public class UDPTransportFactory extends AbstractTransportFactory
     public void setUriPrefixes(Set<String> s) {
         uriPrefixes = s;
     }
-    EndpointReferenceType createReference(EndpointInfo ei) {
+    static EndpointReferenceType createReference(EndpointInfo ei) {
         EndpointReferenceType epr = new EndpointReferenceType();
         AttributedURIType address = new AttributedURIType();
         address.setValue(ei.getAddress());
diff --git a/rt/transports/udp/src/test/java/org/apache/cxf/transport/udp/UDPTransportTest.java
b/rt/transports/udp/src/test/java/org/apache/cxf/transport/udp/UDPTransportTest.java
index fd37f27..2c393a5 100644
--- a/rt/transports/udp/src/test/java/org/apache/cxf/transport/udp/UDPTransportTest.java
+++ b/rt/transports/udp/src/test/java/org/apache/cxf/transport/udp/UDPTransportTest.java
@@ -22,12 +22,10 @@ package org.apache.cxf.transport.udp;
 import java.net.NetworkInterface;
 import java.util.Enumeration;
 
-import javax.jws.WebService;
-
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
 import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
-import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.apache.cxf.testutil.common.TestUtil;
 import org.apache.hello_world.Greeter;
 
 import org.junit.AfterClass;
@@ -35,21 +33,18 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 /**
  *
  */
-public class UDPTransportTest extends AbstractBusClientServerTestBase {
-    static final String PORT = allocatePort(UDPTransportTest.class);
+public class UDPTransportTest {
+    private static final String PORT = TestUtil.getPortNumber(UDPTransportTest.class);
     private static Server server;
 
-    @WebService(serviceName = "SOAPService",
-        endpointInterface = "org.apache.hello_world.Greeter",
-        targetNamespace = "http://apache.org/hello_world")
     static class GreeterImpl implements Greeter {
         private String myName = "defaultGreeter";
-        GreeterImpl() {
-        }
+
         public String greetMe(String me) {
             return "Hello " + me;
         }
@@ -57,17 +52,18 @@ public class UDPTransportTest extends AbstractBusClientServerTestBase
{
             return "Bonjour from " + myName;
         }
         public void pingMe() {
+            throw new UnsupportedOperationException();
         }
     }
 
 
     @BeforeClass
     public static void setUpBeforeClass() throws Exception {
-        createStaticBus();
         JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
-        factory.setBus(getStaticBus());
         factory.setAddress("udp://:" + PORT);
+        factory.setServiceClass(Greeter.class);
         factory.setServiceBean(new GreeterImpl());
+        // factory.setFeatures(Collections.singletonList(new LoggingFeature()));
         server = factory.create();
     }
 
@@ -84,11 +80,13 @@ public class UDPTransportTest extends AbstractBusClientServerTestBase
{
         fact.setAddress("udp://localhost:" + PORT);
         Greeter g = fact.create(Greeter.class);
         for (int x = 0; x < 5; x++) {
-            assertEquals("Hello World", g.greetMe("World"));
+            final String message = Integer.toString(x);
+            assertTrue(g.greetMe(message).endsWith(message));
         }
 
         ((java.io.Closeable)g).close();
     }
+
     @Test
     public void testBroadcastUDP() throws Exception {
         // Disable the test on Redhat Enterprise Linux which doesn't enable the UDP broadcast
by default
@@ -117,6 +115,7 @@ public class UDPTransportTest extends AbstractBusClientServerTestBase
{
         fact.setAddress("udp://:" + PORT + "/foo");
         Greeter g = fact.create(Greeter.class);
         assertEquals("Hello World", g.greetMe("World"));
+
         ((java.io.Closeable)g).close();
     }
 
@@ -133,4 +132,12 @@ public class UDPTransportTest extends AbstractBusClientServerTestBase
{
 
         ((java.io.Closeable)g).close();
     }
+
+    @Test(expected = javax.xml.ws.soap.SOAPFaultException.class)
+    public void testFailure() throws Exception {
+        JaxWsProxyFactoryBean fact = new JaxWsProxyFactoryBean();
+        fact.setAddress("udp://localhost:" + PORT);
+        Greeter g = fact.create(Greeter.class);
+        g.pingMe();
+    }
 }


Mime
View raw message