Repository: logging-log4j2
Updated Branches:
  refs/heads/master 89b229755 -> fe4296a4c


Refactor duplicate await shutdown code


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/5bc69e29
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/5bc69e29
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5bc69e29

Branch: refs/heads/master
Commit: 5bc69e295bca1714c2c2eca1a848ca3469a3aed8
Parents: 89b2297
Author: Matt Sicker <[email protected]>
Authored: Tue Jan 3 21:39:08 2017 -0600
Committer: Matt Sicker <[email protected]>
Committed: Tue Jan 3 21:39:08 2017 -0600

----------------------------------------------------------------------
 .../core/net/server/AbstractSocketServer.java   | 28 ++++++++++++++++----
 .../log4j/core/net/server/TcpSocketServer.java  | 24 ++++-------------
 .../log4j/core/net/server/UdpSocketServer.java  | 18 +++----------
 3 files changed, 31 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5bc69e29/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
index 80ba6f0..9836694 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/AbstractSocketServer.java
@@ -16,13 +16,14 @@
  */
 package org.apache.logging.log4j.core.net.server;
 
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.net.InetAddress;
-import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URL;
 import java.util.Objects;
@@ -44,10 +45,10 @@ import org.apache.logging.log4j.util.Strings;
 
 /**
  * Abstract socket server for TCP and UDP implementations.
- * 
+ *
  * @param <T>
  *            The kind of input stream read
- * 
+ *
  *            TODO Make a LifeCycle
  */
 public abstract class AbstractSocketServer<T extends InputStream> extends 
LogEventListener implements Runnable {
@@ -158,7 +159,7 @@ public abstract class AbstractSocketServer<T extends 
InputStream> extends LogEve
 
     /**
      * Creates a new socket server.
-     * 
+     *
      * @param port
      *            listen to this port
      * @param logEventInput
@@ -179,7 +180,7 @@ public abstract class AbstractSocketServer<T extends 
InputStream> extends LogEve
 
     /**
      * Start this server in a new thread.
-     * 
+     *
      * @return the new thread that running this server.
      */
     public Thread startNewThread() {
@@ -188,4 +189,21 @@ public abstract class AbstractSocketServer<T extends 
InputStream> extends LogEve
         return thread;
     }
 
+    public abstract void shutdown() throws Exception;
+
+    public void awaitTermination(final Thread serverThread) throws Exception {
+        final BufferedReader reader = new BufferedReader(new 
InputStreamReader(System.in));
+        while (true) {
+            final String line = reader.readLine();
+            if (line == null
+                || line.equalsIgnoreCase("quit")
+                || line.equalsIgnoreCase("stop")
+                || line.equalsIgnoreCase("exit")) {
+                this.shutdown();
+                serverThread.join();
+                break;
+            }
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5bc69e29/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
index 636e6f4..e86b382 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TcpSocketServer.java
@@ -16,29 +16,25 @@
  */
 package org.apache.logging.log4j.core.net.server;
 
-import java.io.BufferedReader;
 import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.ObjectInputStream;
 import java.io.OptionalDataException;
 import java.net.InetAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
-import java.nio.charset.Charset;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
+import com.beust.jcommander.Parameter;
+import com.beust.jcommander.validators.PositiveInteger;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.util.BasicCommandLineArguments;
 import org.apache.logging.log4j.core.util.Log4jThread;
 import org.apache.logging.log4j.message.EntryMessage;
 
-import com.beust.jcommander.Parameter;
-import com.beust.jcommander.validators.PositiveInteger;
-
 /**
  * Listens for Log4j events on a TCP server socket and passes them on to Log4j.
  * 
@@ -194,20 +190,9 @@ public class TcpSocketServer<T extends InputStream> 
extends AbstractSocketServer
         }
         final TcpSocketServer<ObjectInputStream> socketServer = TcpSocketServer
                 .createSerializedSocketServer(cla.getPort(), cla.getBacklog(), 
cla.getLocalBindAddress());
-        final Thread serverThread = new Log4jThread(socketServer);
-        serverThread.start();
+        final Thread serverThread = socketServer.startNewThread();
         if (cla.isInteractive()) {
-            final Charset enc = Charset.defaultCharset();
-            final BufferedReader reader = new BufferedReader(new 
InputStreamReader(System.in, enc));
-            while (true) {
-                final String line = reader.readLine();
-                if (line == null || line.equalsIgnoreCase("Quit") || 
line.equalsIgnoreCase("Stop")
-                        || line.equalsIgnoreCase("Exit")) {
-                    socketServer.shutdown();
-                    serverThread.join();
-                    break;
-                }
-            }
+            socketServer.awaitTermination(serverThread);
         }
     }
 
@@ -321,6 +306,7 @@ public class TcpSocketServer<T extends InputStream> extends 
AbstractSocketServer
      * 
      * @throws IOException if the server socket could not be closed
      */
+    @Override
     public void shutdown() throws IOException {
         final EntryMessage entry = logger.traceEntry();
         setActive(false);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5bc69e29/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
index 427a365..ed04f69 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UdpSocketServer.java
@@ -16,12 +16,10 @@
  */
 package org.apache.logging.log4j.core.net.server;
 
-import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.ObjectInputStream;
 import java.io.OptionalDataException;
 import java.net.DatagramPacket;
@@ -29,7 +27,6 @@ import java.net.DatagramSocket;
 
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.util.BasicCommandLineArguments;
-import org.apache.logging.log4j.core.util.Log4jThread;
 
 /**
  * Listens for Log4j events on a datagram socket and passes them on to Log4j. 
@@ -97,19 +94,9 @@ public class UdpSocketServer<T extends InputStream> extends 
AbstractSocketServer
         }
         final UdpSocketServer<ObjectInputStream> socketServer = UdpSocketServer
                 .createSerializedSocketServer(cla.getPort());
-        final Thread serverThread = new Log4jThread(socketServer);
-        serverThread.start();
+        final Thread serverThread = socketServer.startNewThread();
         if (cla.isInteractive()) {
-            final BufferedReader reader = new BufferedReader(new 
InputStreamReader(System.in));
-            while (true) {
-                final String line = reader.readLine();
-                if (line == null || line.equalsIgnoreCase("Quit") || 
line.equalsIgnoreCase("Stop")
-                        || line.equalsIgnoreCase("Exit")) {
-                    socketServer.shutdown();
-                    serverThread.join();
-                    break;
-                }
-            }
+            socketServer.awaitTermination(serverThread);
         }
     }
 
@@ -173,6 +160,7 @@ public class UdpSocketServer<T extends InputStream> extends 
AbstractSocketServer
     /**
      * Shutdown the server.
      */
+    @Override
     public void shutdown() {
         this.setActive(false);
         Thread.currentThread().interrupt();

Reply via email to