You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2016/02/25 20:12:10 UTC
logging-log4j2 git commit: Reduce code duplication in jms servers.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 6a4be621e -> aff6553cd
Reduce code duplication in jms servers.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/aff6553c
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/aff6553c
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/aff6553c
Branch: refs/heads/master
Commit: aff6553cd7dcfd11d70096a2e0831a0a4c077468
Parents: 6a4be62
Author: Matt Sicker <bo...@gmail.com>
Authored: Thu Feb 25 13:12:02 2016 -0600
Committer: Matt Sicker <bo...@gmail.com>
Committed: Thu Feb 25 13:12:07 2016 -0600
----------------------------------------------------------------------
.../core/net/mom/jms/AbstractJmsReceiver.java | 48 ++++++++++++++++++++
.../core/net/mom/jms/JmsQueueReceiver.java | 45 ++++--------------
.../core/net/mom/jms/JmsTopicReceiver.java | 44 ++++--------------
.../log4j/core/net/server/JmsServer.java | 23 ++++++++++
4 files changed, 91 insertions(+), 69 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aff6553c/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/AbstractJmsReceiver.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/AbstractJmsReceiver.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/AbstractJmsReceiver.java
new file mode 100644
index 0000000..753fc80
--- /dev/null
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/AbstractJmsReceiver.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.net.mom.jms;
+
+import org.apache.logging.log4j.core.net.server.JmsServer;
+
+/**
+ * Common JMS server functionality.
+ *
+ * @since 2.6
+ */
+public abstract class AbstractJmsReceiver {
+
+ /**
+ * Prints out usage information to {@linkplain System#err standard error}.
+ */
+ protected abstract void usage();
+
+ /**
+ * Executes a JmsServer with the given command line arguments.
+ *
+ * @param args command line arguments
+ * @throws Exception
+ */
+ protected void doMain(final String... args) throws Exception {
+ if (args.length != 4) {
+ usage();
+ System.exit(1);
+ }
+ final JmsServer server = new JmsServer(args[0], args[1], args[2], args[3]);
+ server.run();
+ }
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aff6553c/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsQueueReceiver.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsQueueReceiver.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsQueueReceiver.java
index af5b6c4..dac46d3 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsQueueReceiver.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsQueueReceiver.java
@@ -17,55 +17,30 @@
package org.apache.logging.log4j.core.net.mom.jms;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.nio.charset.Charset;
-
-import org.apache.logging.log4j.core.net.server.JmsServer;
-
/**
* Receives Log Events over a JMS Queue. This implementation expects that all messages will
* contain a serialized LogEvent.
*/
-public abstract class JmsQueueReceiver {
+public class JmsQueueReceiver extends AbstractJmsReceiver {
+
+ private JmsQueueReceiver() {
+ }
/**
* Main startup for the receiver.
+ *
* @param args The command line arguments.
* @throws Exception if an error occurs.
*/
public static void main(final String[] args) throws Exception {
- if (args.length != 4) {
- usage("Wrong number of arguments.");
- }
-
- final String qcfBindingName = args[0];
- final String queueBindingName = args[1];
- final String username = args[2];
- final String password = args[3];
- final JmsServer server = new JmsServer(qcfBindingName, queueBindingName, username, password);
- server.start();
-
- final Charset enc = Charset.defaultCharset();
- final BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in, enc));
- // Loop until the word "exit" is typed
- System.out.println("Type \"exit\" to quit JmsQueueReceiver.");
- while (true) {
- final String line = stdin.readLine();
- if (line == null || line.equalsIgnoreCase("exit")) {
- System.out.println("Exiting. Kill the application if it does not exit "
- + "due to daemon threads.");
- server.stop();
- return;
- }
- }
+ final JmsQueueReceiver receiver = new JmsQueueReceiver();
+ receiver.doMain(args);
}
-
- private static void usage(final String msg) {
- System.err.println(msg);
+ @Override
+ protected void usage() {
+ System.err.println("Wrong number of arguments.");
System.err.println("Usage: java " + JmsQueueReceiver.class.getName()
+ " QueueConnectionFactoryBindingName QueueBindingName username password");
- System.exit(1);
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aff6553c/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsTopicReceiver.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsTopicReceiver.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsTopicReceiver.java
index 3a21f3c..4442ab1 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsTopicReceiver.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/mom/jms/JmsTopicReceiver.java
@@ -17,54 +17,30 @@
package org.apache.logging.log4j.core.net.mom.jms;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.nio.charset.Charset;
-
-import org.apache.logging.log4j.core.net.server.JmsServer;
-
/**
* Receives Topic messages that contain LogEvents. This implementation expects that all messages
* are serialized log events.
*/
-public abstract class JmsTopicReceiver {
+public class JmsTopicReceiver extends AbstractJmsReceiver {
+
+ private JmsTopicReceiver() {
+ }
/**
* Main startup for the receiver.
+ *
* @param args The command line arguments.
* @throws Exception if an error occurs.
*/
public static void main(final String[] args) throws Exception {
- if (args.length != 4) {
- usage("Wrong number of arguments.");
- }
-
- final String tcfBindingName = args[0];
- final String topicBindingName = args[1];
- final String username = args[2];
- final String password = args[3];
- final JmsServer server = new JmsServer(tcfBindingName, topicBindingName, username, password);
- server.start();
-
- final Charset enc = Charset.defaultCharset();
- final BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in, enc));
- // Loop until the word "exit" is typed
- System.out.println("Type \"exit\" to quit JmsTopicReceiver.");
- while (true) {
- final String line = stdin.readLine();
- if (line == null || line.equalsIgnoreCase("exit")) {
- System.out.println("Exiting. Kill the application if it does not exit "
- + "due to daemon threads.");
- server.stop();
- return;
- }
- }
+ final JmsTopicReceiver receiver = new JmsTopicReceiver();
+ receiver.doMain(args);
}
- private static void usage(final String msg) {
- System.err.println(msg);
+ @Override
+ protected void usage() {
+ System.err.println("Wrong number of arguments.");
System.err.println("Usage: java " + JmsTopicReceiver.class.getName()
+ " TopicConnectionFactoryBindingName TopicBindingName username password");
- System.exit(1);
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/aff6553c/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java
index abd0d5e..bc645d1 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JmsServer.java
@@ -17,6 +17,10 @@
package org.apache.logging.log4j.core.net.server;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
import java.util.concurrent.atomic.AtomicReference;
import javax.jms.JMSException;
import javax.jms.Message;
@@ -111,4 +115,23 @@ public class JmsServer extends LogEventListener implements MessageListener, Life
return state.get() == State.STOPPED;
}
+ /**
+ * Starts and runs this server until the user types "exit" into standard input.
+ *
+ * @throws IOException
+ */
+ public void run() throws IOException {
+ this.start();
+ System.out.println("Type \"exit\" to quit.");
+ final BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in, Charset.defaultCharset()));
+ while (true) {
+ final String line = stdin.readLine();
+ if (line == null || line.equalsIgnoreCase("exit")) {
+ System.out.println("Exiting. Kill the application if it does not exit due to daemon threads.");
+ this.stop();
+ return;
+ }
+ }
+ }
+
}