Repository: logging-log4j2
Updated Branches:
  refs/heads/master bb5d55b7d -> 49aaf52f7


Move the two classes in org.apache.logging.log4j.streams.util to
org.apache.logging.log4j.streams.

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

Branch: refs/heads/master
Commit: 49aaf52f79cb271875f42d02d9030d7b3869d480
Parents: bb5d55b
Author: Gary Gregory <[email protected]>
Authored: Wed Sep 3 00:51:16 2014 -0400
Committer: Gary Gregory <[email protected]>
Committed: Wed Sep 3 00:51:16 2014 -0400

----------------------------------------------------------------------
 .../logging/log4j/streams/ByteStreamLogger.java | 152 +++++++++++++++++++
 .../logging/log4j/streams/CharStreamLogger.java | 110 ++++++++++++++
 .../log4j/streams/LoggerFilterOutputStream.java |   1 -
 .../log4j/streams/LoggerFilterWriter.java       |   1 -
 .../log4j/streams/LoggerInputStream.java        |   1 -
 .../log4j/streams/LoggerOutputStream.java       |   1 -
 .../logging/log4j/streams/LoggerReader.java     |   1 -
 .../logging/log4j/streams/LoggerWriter.java     |   1 -
 .../log4j/streams/util/ByteStreamLogger.java    | 152 -------------------
 .../log4j/streams/util/CharStreamLogger.java    | 110 --------------
 10 files changed, 262 insertions(+), 268 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/ByteStreamLogger.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/ByteStreamLogger.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/ByteStreamLogger.java
new file mode 100644
index 0000000..cc3877f
--- /dev/null
+++ 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/ByteStreamLogger.java
@@ -0,0 +1,152 @@
+/*
+ * 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.streams;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.spi.ExtendedLogger;
+
+class ByteStreamLogger {
+    private class ByteBufferInputStream extends InputStream {
+
+        @Override
+        public int read() throws IOException {
+            ByteStreamLogger.this.buf.flip();
+            int result = -1;
+            if (ByteStreamLogger.this.buf.limit() > 0) {
+                result = ByteStreamLogger.this.buf.get() & 0xFF;
+            }
+            ByteStreamLogger.this.buf.compact();
+            return result;
+        }
+
+        @Override
+        public int read(final byte[] bytes, final int off, final int len) 
throws IOException {
+            ByteStreamLogger.this.buf.flip();
+            int result = -1;
+            if (ByteStreamLogger.this.buf.limit() > 0) {
+                result = Math.min(len, ByteStreamLogger.this.buf.limit());
+                ByteStreamLogger.this.buf.get(bytes, off, result);
+            }
+            ByteStreamLogger.this.buf.compact();
+            return result;
+        }
+    }
+
+    private static final int BUFFER_SIZE = 1024;
+    private final ExtendedLogger logger;
+    private final Level level;
+    private final Marker marker;
+    private final ByteBufferInputStream inputStream;
+    private final InputStreamReader reader;
+    private final char[] msgBuf = new char[BUFFER_SIZE];
+    private final StringBuilder msg = new StringBuilder();
+    private boolean closed;
+
+    private final ByteBuffer buf = ByteBuffer.allocate(BUFFER_SIZE);
+
+    public ByteStreamLogger(final ExtendedLogger logger, final Level level, 
final Marker marker, final Charset charset) {
+        this.logger = logger;
+        this.level = level;
+        this.marker = marker;
+        this.inputStream = new ByteBufferInputStream();
+        this.reader = new InputStreamReader(this.inputStream, charset);
+    }
+
+    public void close(final String fqcn) {
+        synchronized (this.msg) {
+            this.closed = true;
+            logEnd(fqcn);
+//            in.close();
+        }
+    }
+
+    private void extractMessages(final String fqcn) throws IOException {
+        if (this.closed) {
+            return;
+        }
+        int read = this.reader.read(this.msgBuf);
+        while (read > 0) {
+            int off = 0;
+            for (int pos = 0; pos < read; pos++) {
+                switch (this.msgBuf[pos]) {
+                case '\r':
+                    this.msg.append(this.msgBuf, off, pos - off);
+                    off = pos + 1;
+                    break;
+                case '\n':
+                    this.msg.append(this.msgBuf, off, pos - off);
+                    off = pos + 1;
+                    log(fqcn);
+                    break;
+                }
+            }
+            this.msg.append(this.msgBuf, off, read - off);
+            read = this.reader.read(this.msgBuf);
+        }
+    }
+
+    private void log(final String fqcn) {
+        // convert to string now so async loggers work
+        this.logger.logIfEnabled(fqcn, this.level, this.marker, 
this.msg.toString());
+        this.msg.setLength(0);
+    }
+    
+    private void logEnd(final String fqcn) {
+        if (this.msg.length() > 0) {
+            log(fqcn);
+        }
+    }
+
+    public void put(final String fqcn, final byte[] b, final int off, final 
int len) throws IOException {
+        int curOff = off;
+        int curLen = len;
+        if (curLen >= 0) {
+            synchronized (this.msg) {
+                while (curLen > this.buf.remaining()) {
+                    final int remaining = this.buf.remaining();
+                    this.buf.put(b, curOff, remaining);
+                    curLen -= remaining;
+                    curOff += remaining;
+                    extractMessages(fqcn);
+                }
+                this.buf.put(b, curOff, curLen);
+                extractMessages(fqcn);
+            }
+        } else {
+            logEnd(fqcn);
+        }
+    }
+
+    public void put(final String fqcn, final int b) throws IOException {
+        if (b >= 0) {
+            synchronized (this.msg) {
+                this.buf.put((byte) (b & 0xFF));
+                extractMessages(fqcn);
+            }
+        } else {
+            logEnd(fqcn);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/CharStreamLogger.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/CharStreamLogger.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/CharStreamLogger.java
new file mode 100644
index 0000000..4f66833
--- /dev/null
+++ 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/CharStreamLogger.java
@@ -0,0 +1,110 @@
+/*
+ * 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.streams;
+
+import java.nio.CharBuffer;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.spi.ExtendedLogger;
+
+class CharStreamLogger {
+    private final ExtendedLogger logger;
+    private final Level level;
+    private final Marker marker;
+    private final StringBuilder msg = new StringBuilder();
+    private boolean closed = false;
+
+    public CharStreamLogger(final ExtendedLogger logger, final Level level, 
final Marker marker) {
+        this.logger = logger;
+        this.level = level;
+        this.marker = marker;
+    }
+
+    public void close(final String fqcn) {
+        synchronized (this.msg) {
+            this.closed = true;
+            logEnd(fqcn);
+        }
+    }
+
+    private void log(final String fqcn) {
+        // convert to string now so async loggers work
+        this.logger.logIfEnabled(fqcn, this.level, this.marker, 
this.msg.toString());
+        this.msg.setLength(0);
+    }
+
+    private void logEnd(final String fqcn) {
+        if (this.msg.length() > 0) {
+            log(fqcn);
+        }
+    }
+
+    public void put(final String fqcn, final char[] cbuf, final int off, final 
int len) {
+        put(fqcn, CharBuffer.wrap(cbuf), off, len);
+    }
+
+    public void put(final String fqcn, final CharSequence str, final int off, 
final int len) {
+        if (len >= 0) {
+            synchronized (this.msg) {
+                if (this.closed) {
+                    return;
+                }
+                int start = off;
+                final int end = off + len;
+                for (int pos = off; pos < end; pos++) {
+                    final char c = str.charAt(pos);
+                    switch (c) {
+                    case '\r':
+                    case '\n':
+                        this.msg.append(str, start, pos);
+                        start = pos + 1;
+                        if (c == '\n') {
+                            log(fqcn);
+                        }
+                        break;
+                    }
+                }
+                this.msg.append(str, start, end);
+            }
+        } else {
+            logEnd(fqcn);
+        }
+    }
+
+    public void put(final String fqcn, final int c) {
+        if (c >= 0) {
+            synchronized (this.msg) {
+                if (this.closed) {
+                    return;
+                }
+                switch (c) {
+                case '\n':
+                    log(fqcn);
+                    break;
+                case '\r':
+                    break;
+                default:
+                    this.msg.append((char) c);
+                }
+            }
+        } else {
+            logEnd(fqcn);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterOutputStream.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterOutputStream.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterOutputStream.java
index 96ab4e1..3dba3df 100644
--- 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterOutputStream.java
+++ 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterOutputStream.java
@@ -25,7 +25,6 @@ import java.nio.charset.Charset;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.streams.util.ByteStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with 
a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterWriter.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterWriter.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterWriter.java
index 2659c04..7b076eb 100644
--- 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterWriter.java
+++ 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterWriter.java
@@ -24,7 +24,6 @@ import java.io.Writer;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.streams.util.CharStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with 
a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java
index 64eb202..b4f5823 100644
--- 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java
+++ 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerInputStream.java
@@ -25,7 +25,6 @@ import java.nio.charset.Charset;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.streams.util.ByteStreamLogger;
 
 /**
  * Logs each line read to a pre-defined level. Can also be configured with a 
Marker.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java
index 836a20b..f75e03e 100644
--- 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java
+++ 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerOutputStream.java
@@ -24,7 +24,6 @@ import java.nio.charset.Charset;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.streams.util.ByteStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with 
a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java
index 5e7ccd8..d190ef9 100644
--- 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java
+++ 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerReader.java
@@ -25,7 +25,6 @@ import java.nio.CharBuffer;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.streams.util.CharStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with 
a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java
index 68fdc83..e19a675 100644
--- 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java
+++ 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerWriter.java
@@ -23,7 +23,6 @@ import java.io.Writer;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.spi.ExtendedLogger;
-import org.apache.logging.log4j.streams.util.CharStreamLogger;
 
 /**
  * Logs each line written to a pre-defined level. Can also be configured with 
a Marker. This class provides an interface

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/ByteStreamLogger.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/ByteStreamLogger.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/ByteStreamLogger.java
deleted file mode 100644
index 106934c..0000000
--- 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/ByteStreamLogger.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * 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.streams.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.ByteBuffer;
-import java.nio.charset.Charset;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Marker;
-import org.apache.logging.log4j.spi.ExtendedLogger;
-
-public class ByteStreamLogger {
-    private class ByteBufferInputStream extends InputStream {
-
-        @Override
-        public int read() throws IOException {
-            ByteStreamLogger.this.buf.flip();
-            int result = -1;
-            if (ByteStreamLogger.this.buf.limit() > 0) {
-                result = ByteStreamLogger.this.buf.get() & 0xFF;
-            }
-            ByteStreamLogger.this.buf.compact();
-            return result;
-        }
-
-        @Override
-        public int read(final byte[] bytes, final int off, final int len) 
throws IOException {
-            ByteStreamLogger.this.buf.flip();
-            int result = -1;
-            if (ByteStreamLogger.this.buf.limit() > 0) {
-                result = Math.min(len, ByteStreamLogger.this.buf.limit());
-                ByteStreamLogger.this.buf.get(bytes, off, result);
-            }
-            ByteStreamLogger.this.buf.compact();
-            return result;
-        }
-    }
-
-    private static final int BUFFER_SIZE = 1024;
-    private final ExtendedLogger logger;
-    private final Level level;
-    private final Marker marker;
-    private final ByteBufferInputStream inputStream;
-    private final InputStreamReader reader;
-    private final char[] msgBuf = new char[BUFFER_SIZE];
-    private final StringBuilder msg = new StringBuilder();
-    private boolean closed;
-
-    private final ByteBuffer buf = ByteBuffer.allocate(BUFFER_SIZE);
-
-    public ByteStreamLogger(final ExtendedLogger logger, final Level level, 
final Marker marker, final Charset charset) {
-        this.logger = logger;
-        this.level = level;
-        this.marker = marker;
-        this.inputStream = new ByteBufferInputStream();
-        this.reader = new InputStreamReader(this.inputStream, charset);
-    }
-
-    public void close(final String fqcn) {
-        synchronized (this.msg) {
-            this.closed = true;
-            logEnd(fqcn);
-//            in.close();
-        }
-    }
-
-    private void extractMessages(final String fqcn) throws IOException {
-        if (this.closed) {
-            return;
-        }
-        int read = this.reader.read(this.msgBuf);
-        while (read > 0) {
-            int off = 0;
-            for (int pos = 0; pos < read; pos++) {
-                switch (this.msgBuf[pos]) {
-                case '\r':
-                    this.msg.append(this.msgBuf, off, pos - off);
-                    off = pos + 1;
-                    break;
-                case '\n':
-                    this.msg.append(this.msgBuf, off, pos - off);
-                    off = pos + 1;
-                    log(fqcn);
-                    break;
-                }
-            }
-            this.msg.append(this.msgBuf, off, read - off);
-            read = this.reader.read(this.msgBuf);
-        }
-    }
-
-    private void log(final String fqcn) {
-        // convert to string now so async loggers work
-        this.logger.logIfEnabled(fqcn, this.level, this.marker, 
this.msg.toString());
-        this.msg.setLength(0);
-    }
-    
-    private void logEnd(final String fqcn) {
-        if (this.msg.length() > 0) {
-            log(fqcn);
-        }
-    }
-
-    public void put(final String fqcn, final byte[] b, final int off, final 
int len) throws IOException {
-        int curOff = off;
-        int curLen = len;
-        if (curLen >= 0) {
-            synchronized (this.msg) {
-                while (curLen > this.buf.remaining()) {
-                    final int remaining = this.buf.remaining();
-                    this.buf.put(b, curOff, remaining);
-                    curLen -= remaining;
-                    curOff += remaining;
-                    extractMessages(fqcn);
-                }
-                this.buf.put(b, curOff, curLen);
-                extractMessages(fqcn);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-
-    public void put(final String fqcn, final int b) throws IOException {
-        if (b >= 0) {
-            synchronized (this.msg) {
-                this.buf.put((byte) (b & 0xFF));
-                extractMessages(fqcn);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/49aaf52f/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/CharStreamLogger.java
----------------------------------------------------------------------
diff --git 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/CharStreamLogger.java
 
b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/CharStreamLogger.java
deleted file mode 100644
index ffe2c17..0000000
--- 
a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/util/CharStreamLogger.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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.streams.util;
-
-import java.nio.CharBuffer;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Marker;
-import org.apache.logging.log4j.spi.ExtendedLogger;
-
-public class CharStreamLogger {
-    private final ExtendedLogger logger;
-    private final Level level;
-    private final Marker marker;
-    private final StringBuilder msg = new StringBuilder();
-    private boolean closed = false;
-
-    public CharStreamLogger(final ExtendedLogger logger, final Level level, 
final Marker marker) {
-        this.logger = logger;
-        this.level = level;
-        this.marker = marker;
-    }
-
-    public void close(final String fqcn) {
-        synchronized (this.msg) {
-            this.closed = true;
-            logEnd(fqcn);
-        }
-    }
-
-    private void log(final String fqcn) {
-        // convert to string now so async loggers work
-        this.logger.logIfEnabled(fqcn, this.level, this.marker, 
this.msg.toString());
-        this.msg.setLength(0);
-    }
-
-    private void logEnd(final String fqcn) {
-        if (this.msg.length() > 0) {
-            log(fqcn);
-        }
-    }
-
-    public void put(final String fqcn, final char[] cbuf, final int off, final 
int len) {
-        put(fqcn, CharBuffer.wrap(cbuf), off, len);
-    }
-
-    public void put(final String fqcn, final CharSequence str, final int off, 
final int len) {
-        if (len >= 0) {
-            synchronized (this.msg) {
-                if (this.closed) {
-                    return;
-                }
-                int start = off;
-                final int end = off + len;
-                for (int pos = off; pos < end; pos++) {
-                    final char c = str.charAt(pos);
-                    switch (c) {
-                    case '\r':
-                    case '\n':
-                        this.msg.append(str, start, pos);
-                        start = pos + 1;
-                        if (c == '\n') {
-                            log(fqcn);
-                        }
-                        break;
-                    }
-                }
-                this.msg.append(str, start, end);
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-
-    public void put(final String fqcn, final int c) {
-        if (c >= 0) {
-            synchronized (this.msg) {
-                if (this.closed) {
-                    return;
-                }
-                switch (c) {
-                case '\n':
-                    log(fqcn);
-                    break;
-                case '\r':
-                    break;
-                default:
-                    this.msg.append((char) c);
-                }
-            }
-        } else {
-            logEnd(fqcn);
-        }
-    }
-}

Reply via email to