You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2014/03/27 07:06:20 UTC
svn commit: r1582204 - in
/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net:
AbstractLogEventInput.java JSONLogEventInput.java LogEventInput.java
SerializedLogEventInput.java TCPSocketServer.java XMLLogEventInput.java
Author: ggregory
Date: Thu Mar 27 06:06:20 2014
New Revision: 1582204
URL: http://svn.apache.org/r1582204
Log:
[LOG4J2-583] TCP and UDP socket servers should be able to handle XML log events. Refactor current code for XML and JSON. Create stubs for XML and JSON implementations.
Added:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractLogEventInput.java (with props)
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JSONLogEventInput.java
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/LogEventInput.java
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SerializedLogEventInput.java
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketServer.java
logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/XMLLogEventInput.java
Added: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractLogEventInput.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractLogEventInput.java?rev=1582204&view=auto
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractLogEventInput.java (added)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractLogEventInput.java Thu Mar 27 06:06:20 2014
@@ -0,0 +1,34 @@
+/*
+ * 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;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Abstract class for implementations of {@link LogEventInput}.
+ *
+ * @param <T>
+ */
+public abstract class AbstractLogEventInput<T extends InputStream> implements LogEventInput<T> {
+
+ @Override
+ public T wrapStream(InputStream inputStream) throws IOException {
+ return (T) inputStream;
+ }
+
+}
Propchange: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractLogEventInput.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/AbstractLogEventInput.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JSONLogEventInput.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JSONLogEventInput.java?rev=1582204&r1=1582203&r2=1582204&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JSONLogEventInput.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JSONLogEventInput.java Thu Mar 27 06:06:20 2014
@@ -24,7 +24,7 @@ import org.apache.logging.log4j.core.Log
/**
* Reads JSON {@link LogEvent}s.
*/
-public class JSONLogEventInput implements LogEventInput {
+public class JSONLogEventInput extends AbstractLogEventInput {
@Override
public LogEvent readLogEvent(InputStream inputStream) throws IOException {
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/LogEventInput.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/LogEventInput.java?rev=1582204&r1=1582203&r2=1582204&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/LogEventInput.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/LogEventInput.java Thu Mar 27 06:06:20 2014
@@ -23,15 +23,26 @@ import org.apache.logging.log4j.core.Log
/**
* Reads {@link LogEvent}s from an input stream.
+ *
+ * @param <T> The kind of {@link InputStream} to wrap and read.
*/
-public interface LogEventInput {
+public interface LogEventInput<T extends InputStream> {
/**
* Reads a {@link LogEvent} from the given input stream.
*
* @param inputStream the input stream to read
* @return a LogEvent
- * @throws IOException
+ * @throws IOException
*/
- LogEvent readLogEvent(InputStream inputStream) throws IOException;
+ LogEvent readLogEvent(T inputStream) throws IOException;
+
+ /**
+ * Wraps the given stream if needed.
+ *
+ * @param inputStream the stream to wrap
+ * @return the wrapped stream or the given stream.
+ * @throws IOException
+ */
+ T wrapStream(InputStream inputStream) throws IOException;
}
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SerializedLogEventInput.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SerializedLogEventInput.java?rev=1582204&r1=1582203&r2=1582204&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SerializedLogEventInput.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SerializedLogEventInput.java Thu Mar 27 06:06:20 2014
@@ -25,17 +25,19 @@ import org.apache.logging.log4j.core.Log
/**
* Reads serialized {@link LogEvent}s.
*/
-public class SerializedLogEventInput implements LogEventInput {
+public class SerializedLogEventInput extends AbstractLogEventInput<ObjectInputStream> {
@Override
- public LogEvent readLogEvent(InputStream inputStream) throws IOException {
- final ObjectInputStream ois = inputStream instanceof ObjectInputStream ? (ObjectInputStream) inputStream : new ObjectInputStream(
- inputStream);
+ public LogEvent readLogEvent(ObjectInputStream inputStream) throws IOException {
try {
- return (LogEvent) ois.readObject();
+ return (LogEvent) inputStream.readObject();
} catch (ClassNotFoundException e) {
throw new IOException(e);
}
}
+ @Override
+ public ObjectInputStream wrapStream(InputStream inputStream) throws IOException {
+ return new ObjectInputStream(inputStream);
+ }
}
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketServer.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketServer.java?rev=1582204&r1=1582203&r2=1582204&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketServer.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TCPSocketServer.java Thu Mar 27 06:06:20 2014
@@ -48,8 +48,8 @@ public class TCPSocketServer extends Abs
private volatile boolean shutdown = false;
public SocketHandler(final Socket socket, LogEventInput logEventInput) throws IOException {
- this.inputStream = new ObjectInputStream(socket.getInputStream());
this.logEventInput = logEventInput;
+ this.inputStream = logEventInput.wrapStream(socket.getInputStream());
}
@Override
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/XMLLogEventInput.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/XMLLogEventInput.java?rev=1582204&r1=1582203&r2=1582204&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/XMLLogEventInput.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/XMLLogEventInput.java Thu Mar 27 06:06:20 2014
@@ -24,7 +24,7 @@ import org.apache.logging.log4j.core.Log
/**
* Reads XML {@link LogEvent}s.
*/
-public class XMLLogEventInput implements LogEventInput {
+public class XMLLogEventInput extends AbstractLogEventInput {
@Override
public LogEvent readLogEvent(InputStream inputStream) throws IOException {