On Wed, Sep 3, 2014 at 12:33 AM, Matt Sicker <[email protected]> wrote:

> Kind of like the javadoc summaries.
>

Exactly! :-)

Gary


> It's just a quick indexOf()-style operation, though. Would be useful.
>
>
> On 2 September 2014 23:00, Gary Gregory <[email protected]> wrote:
>
>> Hmm... Or the git hook could be _smarter_ and parse out the first
>> sentence, say up to the first period. Formatting comments is just a pain
>> IMO.
>>
>> Gary
>>
>>
>> On Tue, Sep 2, 2014 at 11:41 PM, Matt Sicker <[email protected]> wrote:
>>
>>> This is why I make the first line of my commits really short. So it fits
>>> in the email subject! Now that the git emails do this, it might be a good
>>> habit to get into. ;)
>>>
>>> Commit style:
>>>
>>> Add some new thing.
>>>
>>>   - Some more details.
>>>   - Doesn't really need to be a list like this, I'm just used to
>>> changelogs joining them all together into a list.
>>>
>>> ---------- Forwarded message ----------
>>> From: <[email protected]>
>>> Date: 2 September 2014 22:14
>>> Subject: git commit: Refactor LoggerOutputStream into two classes:
>>> LoggerOutputStream and LoggerFilterOutputStream. The old LoggerOutputStream
>>> is like the new LoggerFilterOutputStream which subclasses
>>> FilterOutputStream. The idea behind the new LoggerOutputStream
>>> To: [email protected]
>>>
>>>
>>> Repository: logging-log4j2
>>> Updated Branches:
>>>   refs/heads/master be7fdb43f -> 00e5f5658
>>>
>>>
>>> Refactor LoggerOutputStream into two classes: LoggerOutputStream and
>>> LoggerFilterOutputStream. The old LoggerOutputStream is like the new
>>> LoggerFilterOutputStream which subclasses FilterOutputStream. The idea
>>> behind the new LoggerOutputStream is that it does not need to carry and
>>> write to another wrapped OutputStream. This parallels the recent changes
>>> to LoggerWriter with LoggerFilterWriter.
>>>
>>> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
>>> Commit:
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/00e5f565
>>> Tree:
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/00e5f565
>>> Diff:
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/00e5f565
>>>
>>> Branch: refs/heads/master
>>> Commit: 00e5f565820a49e100ff4eae64b59fe91c42eeba
>>> Parents: be7fdb4
>>> Author: Gary Gregory <[email protected]>
>>> Authored: Tue Sep 2 23:13:57 2014 -0400
>>> Committer: Gary Gregory <[email protected]>
>>> Committed: Tue Sep 2 23:13:57 2014 -0400
>>>
>>> ----------------------------------------------------------------------
>>>  .../streams/LoggerBufferedInputStream.java      |  36 +++----
>>>  .../log4j/streams/LoggerBufferedReader.java     |  20 ++--
>>>  .../log4j/streams/LoggerFilterOutputStream.java | 101
>>> +++++++++++++++++++
>>>  .../log4j/streams/LoggerFilterWriter.java       |  14 +--
>>>  .../log4j/streams/LoggerInputStream.java        |  14 +--
>>>  .../log4j/streams/LoggerOutputStream.java       |  60 ++---------
>>>  .../log4j/streams/LoggerPrintStream.java        |  53 +++++-----
>>>  .../log4j/streams/LoggerPrintWriter.java        |  12 +--
>>>  .../logging/log4j/streams/LoggerReader.java     |  14 +--
>>>  .../logging/log4j/streams/LoggerWriter.java     |  10 +-
>>>  .../log4j/streams/AbstractLoggerWriterTest.java |   2 +-
>>>  .../LoggerOutputStreamCallerInfoTest.java       |   2 +-
>>>  .../log4j/streams/LoggerOutputStreamTest.java   |   4 +-
>>>  .../LoggerPrintStreamCallerInfoTest.java        |   3 +-
>>>  .../streams/LoggerStreamsCallerInfoTesting.java |   6 +-
>>>  15 files changed, 213 insertions(+), 138 deletions(-)
>>> ----------------------------------------------------------------------
>>>
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java
>>> b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java
>>> index 90c7cea..c126dbb 100644
>>> ---
>>> a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java
>>> +++
>>> b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedInputStream.java
>>> @@ -29,12 +29,16 @@ import org.apache.logging.log4j.spi.ExtendedLogger;
>>>  public class LoggerBufferedInputStream extends BufferedInputStream {
>>>      private static final String FQCN =
>>> LoggerBufferedInputStream.class.getName();
>>>
>>> -    public LoggerBufferedInputStream(final InputStream in, final
>>> Charset charset, final ExtendedLogger logger, final String fqcn, final
>>> Level level, final Marker marker) {
>>> -        super(new LoggerInputStream(in, charset, logger, fqcn, level,
>>> marker));
>>> +    public LoggerBufferedInputStream(final InputStream in, final
>>> Charset charset, final ExtendedLogger logger, final Level level) {
>>> +        this(in, charset, logger, FQCN, level, null);
>>>      }
>>>
>>> -    public LoggerBufferedInputStream(final InputStream in, final
>>> Charset charset, final int size, final ExtendedLogger logger, final String
>>> fqcn, final Level level, final Marker marker) {
>>> -        super(new LoggerInputStream(in, charset, logger, fqcn, level,
>>> marker), size);
>>> +    public LoggerBufferedInputStream(final InputStream in, final
>>> Charset charset, final ExtendedLogger logger, final Level level, final
>>> Marker marker) {
>>> +        this(in, charset, logger, FQCN, level, marker);
>>> +    }
>>> +
>>> +    public LoggerBufferedInputStream(final InputStream in, final
>>> Charset charset, final ExtendedLogger logger, final String fqcn, final
>>> Level level, final Marker marker) {
>>> +        super(new LoggerInputStream(in, charset, logger, fqcn, level,
>>> marker));
>>>      }
>>>
>>>      public LoggerBufferedInputStream(final InputStream in, final
>>> Charset charset, final int size, final ExtendedLogger logger, final Level
>>> level) {
>>> @@ -45,20 +49,20 @@ public class LoggerBufferedInputStream extends
>>> BufferedInputStream {
>>>          this(in, charset, size, logger, FQCN, level, marker);
>>>      }
>>>
>>> -    public LoggerBufferedInputStream(final InputStream in, final
>>> Charset charset, final ExtendedLogger logger, final Level level) {
>>> -        this(in, charset, logger, FQCN, level, null);
>>> +    public LoggerBufferedInputStream(final InputStream in, final
>>> Charset charset, final int size, final ExtendedLogger logger, final String
>>> fqcn, final Level level, final Marker marker) {
>>> +        super(new LoggerInputStream(in, charset, logger, fqcn, level,
>>> marker), size);
>>>      }
>>>
>>> -    public LoggerBufferedInputStream(final InputStream in, final
>>> Charset charset, final ExtendedLogger logger, final Level level, final
>>> Marker marker) {
>>> -        this(in, charset, logger, FQCN, level, marker);
>>> +    public LoggerBufferedInputStream(final InputStream in, final
>>> ExtendedLogger logger, final Level level) {
>>> +        this(in, logger, FQCN, level, null);
>>>      }
>>>
>>> -    public LoggerBufferedInputStream(final InputStream in, final
>>> ExtendedLogger logger, final String fqcn, final Level level, final Marker
>>> marker) {
>>> -        this(in, Charset.defaultCharset(), logger, fqcn, level, marker);
>>> +    public LoggerBufferedInputStream(final InputStream in, final
>>> ExtendedLogger logger, final Level level, final Marker marker) {
>>> +        this(in, logger, FQCN, level, marker);
>>>      }
>>>
>>> -    public LoggerBufferedInputStream(final InputStream in, final int
>>> size, final ExtendedLogger logger, final String fqcn, final Level level,
>>> final Marker marker) {
>>> -        this(in, Charset.defaultCharset(), size, logger, fqcn, level,
>>> marker);
>>> +    public LoggerBufferedInputStream(final InputStream in, final
>>> ExtendedLogger logger, final String fqcn, final Level level, final Marker
>>> marker) {
>>> +        this(in, Charset.defaultCharset(), logger, fqcn, level, marker);
>>>      }
>>>
>>>      public LoggerBufferedInputStream(final InputStream in, final int
>>> size, final ExtendedLogger logger, final Level level) {
>>> @@ -68,13 +72,9 @@ public class LoggerBufferedInputStream extends
>>> BufferedInputStream {
>>>      public LoggerBufferedInputStream(final InputStream in, final int
>>> size, final ExtendedLogger logger, final Level level, final Marker marker) {
>>>          this(in, size, logger, FQCN, level, marker);
>>>      }
>>> -
>>> -    public LoggerBufferedInputStream(final InputStream in, final
>>> ExtendedLogger logger, final Level level) {
>>> -        this(in, logger, FQCN, level, null);
>>> -    }
>>>
>>> -    public LoggerBufferedInputStream(final InputStream in, final
>>> ExtendedLogger logger, final Level level, final Marker marker) {
>>> -        this(in, logger, FQCN, level, marker);
>>> +    public LoggerBufferedInputStream(final InputStream in, final int
>>> size, final ExtendedLogger logger, final String fqcn, final Level level,
>>> final Marker marker) {
>>> +        this(in, Charset.defaultCharset(), size, logger, fqcn, level,
>>> marker);
>>>      }
>>>
>>>      @Override
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java
>>> b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java
>>> index 2db1c8d..da770a7 100644
>>> ---
>>> a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java
>>> +++
>>> b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerBufferedReader.java
>>> @@ -29,12 +29,16 @@ import org.apache.logging.log4j.spi.ExtendedLogger;
>>>  public class LoggerBufferedReader extends BufferedReader {
>>>      private static final String FQCN =
>>> LoggerBufferedReader.class.getName();
>>>
>>> -    public LoggerBufferedReader(final Reader reader, final
>>> ExtendedLogger logger, final String fqcn, final Level level, final Marker
>>> marker) {
>>> -        super(new LoggerReader(reader, logger, FQCN, level, marker));
>>> +    public LoggerBufferedReader(final Reader reader, final
>>> ExtendedLogger logger, final Level level) {
>>> +        this(reader, logger, FQCN, level, null);
>>>      }
>>>
>>> -    public LoggerBufferedReader(final Reader reader, final int size,
>>> final ExtendedLogger logger, final String fqcn, final Level level, final
>>> Marker marker) {
>>> -        super(new LoggerReader(reader, logger, FQCN, level, marker),
>>> size);
>>> +    public LoggerBufferedReader(final Reader reader, final
>>> ExtendedLogger logger, final Level level, final Marker marker) {
>>> +        this(reader, logger, FQCN, level, marker);
>>> +    }
>>> +
>>> +    public LoggerBufferedReader(final Reader reader, final
>>> ExtendedLogger logger, final String fqcn, final Level level, final Marker
>>> marker) {
>>> +        super(new LoggerReader(reader, logger, FQCN, level, marker));
>>>      }
>>>
>>>      public LoggerBufferedReader(final Reader reader, final int size,
>>> final ExtendedLogger logger, final Level level) {
>>> @@ -45,12 +49,8 @@ public class LoggerBufferedReader extends
>>> BufferedReader {
>>>          this(reader, size, logger, FQCN, level, marker);
>>>      }
>>>
>>> -    public LoggerBufferedReader(final Reader reader, final
>>> ExtendedLogger logger, final Level level) {
>>> -        this(reader, logger, FQCN, level, null);
>>> -    }
>>> -
>>> -    public LoggerBufferedReader(final Reader reader, final
>>> ExtendedLogger logger, final Level level, final Marker marker) {
>>> -        this(reader, logger, FQCN, level, marker);
>>> +    public LoggerBufferedReader(final Reader reader, final int size,
>>> final ExtendedLogger logger, final String fqcn, final Level level, final
>>> Marker marker) {
>>> +        super(new LoggerReader(reader, logger, FQCN, level, marker),
>>> size);
>>>      }
>>>
>>>      @Override
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/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
>>> new file mode 100644
>>> index 0000000..96ab4e1
>>> --- /dev/null
>>> +++
>>> b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerFilterOutputStream.java
>>> @@ -0,0 +1,101 @@
>>> +/*
>>> + * 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.FilterOutputStream;
>>> +import java.io.IOException;
>>> +import java.io.OutputStream;
>>> +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
>>> + * that follows the {@link java.io.OutputStream} methods in spirit, but
>>> doesn't require output to any external stream.
>>> + * This class should <em>not</em> be used as a stream for an underlying
>>> logger unless it's being used as a bridge.
>>> + * Otherwise, infinite loops may occur!
>>> + */
>>> +public class LoggerFilterOutputStream extends FilterOutputStream {
>>> +    private static final String FQCN =
>>> LoggerFilterOutputStream.class.getName();
>>> +
>>> +    private final ByteStreamLogger logger;
>>> +    private final String fqcn;
>>> +
>>> +    public LoggerFilterOutputStream(final OutputStream out, final
>>> Charset charset, final ExtendedLogger logger,
>>> +            final Level level) {
>>> +        this(out, charset, logger, FQCN, level, null);
>>> +    }
>>> +
>>> +    public LoggerFilterOutputStream(final OutputStream out, final
>>> Charset charset, final ExtendedLogger logger,
>>> +            final Level level, final Marker marker) {
>>> +        this(out, charset, logger, FQCN, level, marker);
>>> +    }
>>> +
>>> +    public LoggerFilterOutputStream(final OutputStream out, final
>>> Charset charset, final ExtendedLogger logger,
>>> +            final String fqcn, final Level level, final Marker marker) {
>>> +        super(out);
>>> +        this.logger = new ByteStreamLogger(logger, level, marker,
>>> charset);
>>> +        this.fqcn = fqcn;
>>> +    }
>>> +
>>> +    public LoggerFilterOutputStream(final OutputStream out, final
>>> ExtendedLogger logger, final Level level) {
>>> +        this(out, Charset.defaultCharset(), logger, FQCN, level, null);
>>> +    }
>>> +
>>> +    public LoggerFilterOutputStream(final OutputStream out, final
>>> ExtendedLogger logger, final Level level,
>>> +            final Marker marker) {
>>> +        this(out, Charset.defaultCharset(), logger, FQCN, level,
>>> marker);
>>> +    }
>>> +
>>> +    @Override
>>> +    public void close() throws IOException {
>>> +        this.out.close();
>>> +        this.logger.close(this.fqcn);
>>> +    }
>>> +
>>> +    @Override
>>> +    public void flush() throws IOException {
>>> +        this.out.flush();
>>> +    }
>>> +
>>> +    @Override
>>> +    public String toString() {
>>> +        return LoggerFilterOutputStream.class.getSimpleName() +
>>> "{stream=" + this.out + '}';
>>> +    }
>>> +
>>> +    @Override
>>> +    public void write(final byte[] b) throws IOException {
>>> +        this.out.write(b);
>>> +        this.logger.put(this.fqcn, b, 0, b.length);
>>> +    }
>>> +
>>> +    @Override
>>> +    public void write(final byte[] b, final int off, final int len)
>>> throws IOException {
>>> +        this.out.write(b, off, len);
>>> +        this.logger.put(this.fqcn, b, off, len);
>>> +    }
>>> +
>>> +    @Override
>>> +    public void write(final int b) throws IOException {
>>> +        this.out.write(b);
>>> +        this.logger.put(this.fqcn, (byte) (b & 0xFF));
>>> +    }
>>> +}
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/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 2735d89..2659c04 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
>>> @@ -36,13 +36,6 @@ public class LoggerFilterWriter extends FilterWriter {
>>>      private final CharStreamLogger logger;
>>>      private final String fqcn;
>>>
>>> -    public LoggerFilterWriter(final Writer out, final ExtendedLogger
>>> logger, final String fqcn, final Level level,
>>> -            final Marker marker) {
>>> -        super(out);
>>> -        this.logger = new CharStreamLogger(logger, level, marker);
>>> -        this.fqcn = fqcn;
>>> -    }
>>> -
>>>      public LoggerFilterWriter(final Writer out, final ExtendedLogger
>>> logger, final Level level) {
>>>          this(out, logger, FQCN, level, null);
>>>      }
>>> @@ -51,6 +44,13 @@ public class LoggerFilterWriter extends FilterWriter {
>>>          this(out, logger, FQCN, level, marker);
>>>      }
>>>
>>> +    public LoggerFilterWriter(final Writer out, final ExtendedLogger
>>> logger, final String fqcn, final Level level,
>>> +            final Marker marker) {
>>> +        super(out);
>>> +        this.logger = new CharStreamLogger(logger, level, marker);
>>> +        this.fqcn = fqcn;
>>> +    }
>>> +
>>>      @Override
>>>      public void close() throws IOException {
>>>          this.out.close();
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/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 b4d242f..64eb202 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
>>> @@ -36,13 +36,6 @@ public class LoggerInputStream extends
>>> FilterInputStream {
>>>      private final String fqcn;
>>>      private final ByteStreamLogger logger;
>>>
>>> -    public LoggerInputStream(final InputStream in, final Charset
>>> charset, final ExtendedLogger logger,
>>> -            final String fqcn, final Level level, final Marker marker) {
>>> -        super(in);
>>> -        this.logger = new ByteStreamLogger(logger, level, marker,
>>> charset);
>>> -        this.fqcn = fqcn;
>>> -    }
>>> -
>>>      public LoggerInputStream(final InputStream in, final Charset
>>> charset, final ExtendedLogger logger, final Level level) {
>>>          this(in, charset, logger, FQCN, level, null);
>>>      }
>>> @@ -52,6 +45,13 @@ public class LoggerInputStream extends
>>> FilterInputStream {
>>>          this(in, charset, logger, FQCN, level, marker);
>>>      }
>>>
>>> +    public LoggerInputStream(final InputStream in, final Charset
>>> charset, final ExtendedLogger logger,
>>> +            final String fqcn, final Level level, final Marker marker) {
>>> +        super(in);
>>> +        this.logger = new ByteStreamLogger(logger, level, marker,
>>> charset);
>>> +        this.fqcn = fqcn;
>>> +    }
>>> +
>>>      public LoggerInputStream(final InputStream in, final ExtendedLogger
>>> logger, final Level level) {
>>>          this(in, Charset.defaultCharset(), logger, FQCN, level, null);
>>>      }
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/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 c979432..836a20b 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
>>> @@ -35,91 +35,53 @@ import
>>> org.apache.logging.log4j.streams.util.ByteStreamLogger;
>>>  public class LoggerOutputStream extends OutputStream {
>>>      private static final String FQCN =
>>> LoggerOutputStream.class.getName();
>>>
>>> -    private final OutputStream out;
>>>      private final ByteStreamLogger logger;
>>>      private final String fqcn;
>>>
>>> -    public LoggerOutputStream(final Charset charset, final
>>> ExtendedLogger logger, final Level level) {
>>> -        this(null, charset, logger, FQCN, level, null);
>>> +    public LoggerOutputStream(final ExtendedLogger logger, final Level
>>> level) {
>>> +        this(logger, level, null, Charset.defaultCharset(), FQCN);
>>>      }
>>>
>>> -    public LoggerOutputStream(final Charset charset, final
>>> ExtendedLogger logger, final Level level, final Marker marker) {
>>> -        this(null, charset, logger, FQCN, level, marker);
>>> +    public LoggerOutputStream(final ExtendedLogger logger, final Level
>>> level, final Charset charset) {
>>> +        this(logger, level, null, charset, FQCN);
>>>      }
>>>
>>> -    public LoggerOutputStream(final ExtendedLogger logger, final Level
>>> level) {
>>> -        this(null, Charset.defaultCharset(), logger, FQCN, level, null);
>>> +    public LoggerOutputStream(final ExtendedLogger logger, final Level
>>> level, final Marker marker) {
>>> +        this(logger, level, marker, Charset.defaultCharset(), FQCN);
>>>      }
>>>
>>> -    public LoggerOutputStream(final ExtendedLogger logger, final Level
>>> level, final Marker marker) {
>>> -        this(null, Charset.defaultCharset(), logger, FQCN, level,
>>> marker);
>>> +    public LoggerOutputStream(final ExtendedLogger logger, final Level
>>> level, final Marker marker, final Charset charset) {
>>> +        this(logger, level, marker, charset, FQCN);
>>>      }
>>>
>>> -    public LoggerOutputStream(final OutputStream out, final Charset
>>> charset, final ExtendedLogger logger,
>>> -            final String fqcn, final Level level, final Marker marker) {
>>> -        this.out = out;
>>> +    public LoggerOutputStream(final ExtendedLogger logger, final Level
>>> level, final Marker marker,
>>> +            final Charset charset, final String fqcn) {
>>>          this.logger = new ByteStreamLogger(logger, level, marker,
>>> charset);
>>>          this.fqcn = fqcn;
>>>      }
>>>
>>> -    public LoggerOutputStream(final OutputStream out, final Charset
>>> charset, final ExtendedLogger logger, final Level level) {
>>> -        this(out, charset, logger, FQCN, level, null);
>>> -    }
>>> -
>>> -    public LoggerOutputStream(final OutputStream out, final Charset
>>> charset, final ExtendedLogger logger, final Level level,
>>> -            final Marker marker) {
>>> -        this(out, charset, logger, FQCN, level, marker);
>>> -    }
>>> -
>>> -    public LoggerOutputStream(final OutputStream out, final
>>> ExtendedLogger logger, final Level level) {
>>> -        this(out, Charset.defaultCharset(), logger, FQCN, level, null);
>>> -    }
>>> -
>>> -    public LoggerOutputStream(final OutputStream out, final
>>> ExtendedLogger logger, final Level level, final Marker marker) {
>>> -        this(out, Charset.defaultCharset(), logger, FQCN, level,
>>> marker);
>>> -    }
>>> -
>>>      @Override
>>>      public void close() throws IOException {
>>> -        if (this.out != null) {
>>> -            this.out.close();
>>> -        }
>>>          this.logger.close(this.fqcn);
>>>      }
>>>
>>>      @Override
>>>      public void flush() throws IOException {
>>> -        if (this.out != null) {
>>> -            this.out.flush();
>>> -        }
>>> -    }
>>> -
>>> -    @Override
>>> -    public String toString() {
>>> -        return LoggerOutputStream.class.getSimpleName() + "{stream=" +
>>> this.out + '}';
>>> +        // do nothing
>>>      }
>>>
>>>      @Override
>>>      public void write(final byte[] b) throws IOException {
>>> -        if (this.out != null) {
>>> -            this.out.write(b);
>>> -        }
>>>          this.logger.put(this.fqcn, b, 0, b.length);
>>>      }
>>>
>>>      @Override
>>>      public void write(final byte[] b, final int off, final int len)
>>> throws IOException {
>>> -        if (this.out != null) {
>>> -            this.out.write(b, off, len);
>>> -        }
>>>          this.logger.put(this.fqcn, b, off, len);
>>>      }
>>>
>>>      @Override
>>>      public void write(final int b) throws IOException {
>>> -        if (this.out != null) {
>>> -            this.out.write(b);
>>> -        }
>>>          this.logger.put(this.fqcn, (byte) (b & 0xFF));
>>>      }
>>>  }
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java
>>> b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java
>>> index a407b49..246fab5 100644
>>> ---
>>> a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java
>>> +++
>>> b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintStream.java
>>> @@ -37,28 +37,28 @@ import org.apache.logging.log4j.spi.ExtendedLogger;
>>>  public class LoggerPrintStream extends PrintStream {
>>>      private static final String FQCN =
>>> LoggerPrintStream.class.getName();
>>>
>>> -    public LoggerPrintStream(final Charset charset, final
>>> ExtendedLogger logger, final Level level)
>>> -            throws UnsupportedEncodingException {
>>> -        this(null, false, charset, logger, FQCN, level, null);
>>> +    public LoggerPrintStream(ExtendedLogger logger, boolean autoFlush,
>>> Charset charset, String fqcn, Level level,
>>> +            Marker marker) throws UnsupportedEncodingException {
>>> +        super(new LoggerOutputStream(logger, level, marker, charset,
>>> fqcn), autoFlush, charset.name());
>>>      }
>>>
>>> -    public LoggerPrintStream(final Charset charset, final
>>> ExtendedLogger logger, final Level level, final Marker marker)
>>> -            throws UnsupportedEncodingException {
>>> -        this(null, false, charset, logger, FQCN, level, marker);
>>> +    public LoggerPrintStream(final ExtendedLogger logger, final Level
>>> level) throws UnsupportedEncodingException {
>>> +        this(logger, false, Charset.defaultCharset(), FQCN, level,
>>> null);
>>>      }
>>>
>>> -    public LoggerPrintStream(final ExtendedLogger logger, final Level
>>> level) {
>>> -        this(null, false, logger, FQCN, level, null);
>>> +    public LoggerPrintStream(final ExtendedLogger logger, final Level
>>> level, final Charset charset)
>>> +            throws UnsupportedEncodingException {
>>> +        this(logger, false, charset, FQCN, level, null);
>>>      }
>>>
>>> -    public LoggerPrintStream(final ExtendedLogger logger, final Level
>>> level, final Marker marker) {
>>> -        this(null, false, logger, FQCN, level, marker);
>>> +    public LoggerPrintStream(final ExtendedLogger logger, final Level
>>> level, final Marker marker)
>>> +            throws UnsupportedEncodingException {
>>> +        this(logger, false, Charset.defaultCharset(), FQCN, level,
>>> marker);
>>>      }
>>>
>>> -    public LoggerPrintStream(final OutputStream out, final boolean
>>> autoFlush, final Charset charset,
>>> -            final ExtendedLogger logger, final String fqcn, final Level
>>> level, final Marker marker)
>>> +    public LoggerPrintStream(final ExtendedLogger logger, final Level
>>> level, final Marker marker, final Charset charset)
>>>              throws UnsupportedEncodingException {
>>> -        super(new LoggerOutputStream(out, charset, logger, fqcn, level,
>>> marker), autoFlush, charset.name());
>>> +        this(logger, false, charset, FQCN, level, marker);
>>>      }
>>>
>>>      public LoggerPrintStream(final OutputStream out, final boolean
>>> autoFlush, final Charset charset,
>>> @@ -71,27 +71,34 @@ public class LoggerPrintStream extends PrintStream {
>>>          this(out, autoFlush, charset, logger, FQCN, level, marker);
>>>      }
>>>
>>> -    public LoggerPrintStream(final OutputStream out, final boolean
>>> autoFlush, final ExtendedLogger logger,
>>> -            final String fqcn, final Level level, final Marker marker) {
>>> -        super(new LoggerOutputStream(out, Charset.defaultCharset(),
>>> logger, fqcn, level, marker), autoFlush);
>>> +    public LoggerPrintStream(final OutputStream out, final boolean
>>> autoFlush, final Charset charset,
>>> +            final ExtendedLogger logger, final String fqcn, final Level
>>> level, final Marker marker)
>>> +            throws UnsupportedEncodingException {
>>> +        super(new LoggerFilterOutputStream(out, charset, logger, fqcn,
>>> level, marker), autoFlush, charset.name());
>>>      }
>>>
>>> -    public LoggerPrintStream(final OutputStream out, final boolean
>>> autoFlush, final ExtendedLogger logger, final Level level) {
>>> +    public LoggerPrintStream(final OutputStream out, final boolean
>>> autoFlush, final ExtendedLogger logger,
>>> +            final Level level) {
>>>          this(out, autoFlush, logger, FQCN, level, null);
>>>      }
>>>
>>> -    public LoggerPrintStream(final OutputStream out, final boolean
>>> autoFlush, final ExtendedLogger logger, final Level level,
>>> -            final Marker marker) {
>>> +    public LoggerPrintStream(final OutputStream out, final boolean
>>> autoFlush, final ExtendedLogger logger,
>>> +            final Level level, final Marker marker) {
>>>          this(out, autoFlush, logger, FQCN, level, marker);
>>>      }
>>>
>>> -    public LoggerPrintStream(final OutputStream out, final Charset
>>> charset, final ExtendedLogger logger, final Level level)
>>> -            throws UnsupportedEncodingException {
>>> +    public LoggerPrintStream(final OutputStream out, final boolean
>>> autoFlush, final ExtendedLogger logger,
>>> +            final String fqcn, final Level level, final Marker marker) {
>>> +        super(new LoggerFilterOutputStream(out,
>>> Charset.defaultCharset(), logger, fqcn, level, marker), autoFlush);
>>> +    }
>>> +
>>> +    public LoggerPrintStream(final OutputStream out, final Charset
>>> charset, final ExtendedLogger logger,
>>> +            final Level level) throws UnsupportedEncodingException {
>>>          this(out, false, charset, logger, FQCN, level, null);
>>>      }
>>>
>>> -    public LoggerPrintStream(final OutputStream out, final Charset
>>> charset, final ExtendedLogger logger, final Level level,
>>> -            final Marker marker) throws UnsupportedEncodingException {
>>> +    public LoggerPrintStream(final OutputStream out, final Charset
>>> charset, final ExtendedLogger logger,
>>> +            final Level level, final Marker marker) throws
>>> UnsupportedEncodingException {
>>>          this(out, false, charset, logger, FQCN, level, marker);
>>>      }
>>>
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java
>>> b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java
>>> index 2a6b02a..e5cdf98 100644
>>> ---
>>> a/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java
>>> +++
>>> b/log4j-streams/src/main/java/org/apache/logging/log4j/streams/LoggerPrintWriter.java
>>> @@ -51,12 +51,6 @@ public class LoggerPrintWriter extends PrintWriter {
>>>          this(logger, false, FQCN, level, marker);
>>>      }
>>>
>>> -    @SuppressWarnings("resource")
>>> -    public LoggerPrintWriter(final Writer writer, final boolean
>>> autoFlush, final ExtendedLogger logger,
>>> -            final String fqcn, final Level level, final Marker marker) {
>>> -        super(new LoggerFilterWriter(writer, logger, fqcn, level,
>>> marker), autoFlush);
>>> -    }
>>> -
>>>      public LoggerPrintWriter(final Writer writer, final boolean
>>> autoFlush, final ExtendedLogger logger, final Level level) {
>>>          this(writer, autoFlush, logger, FQCN, level, null);
>>>      }
>>> @@ -66,6 +60,12 @@ public class LoggerPrintWriter extends PrintWriter {
>>>          this(writer, autoFlush, logger, FQCN, level, marker);
>>>      }
>>>
>>> +    @SuppressWarnings("resource")
>>> +    public LoggerPrintWriter(final Writer writer, final boolean
>>> autoFlush, final ExtendedLogger logger,
>>> +            final String fqcn, final Level level, final Marker marker) {
>>> +        super(new LoggerFilterWriter(writer, logger, fqcn, level,
>>> marker), autoFlush);
>>> +    }
>>> +
>>>      public LoggerPrintWriter(final Writer writer, final ExtendedLogger
>>> logger, final Level level) {
>>>          this(writer, false, logger, FQCN, level, null);
>>>      }
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/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 33a36de..5e7ccd8 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
>>> @@ -37,13 +37,6 @@ public class LoggerReader extends FilterReader {
>>>      private final CharStreamLogger logger;
>>>      private final String fqcn;
>>>
>>> -    public LoggerReader(final Reader reader, final ExtendedLogger
>>> logger, final String fqcn, final Level level,
>>> -            final Marker marker) {
>>> -        super(reader);
>>> -        this.logger = new CharStreamLogger(logger, level, marker);
>>> -        this.fqcn = fqcn;
>>> -    }
>>> -
>>>      public LoggerReader(final Reader reader, final ExtendedLogger
>>> logger, final Level level) {
>>>          this(reader, logger, FQCN, level, null);
>>>      }
>>> @@ -52,6 +45,13 @@ public class LoggerReader extends FilterReader {
>>>          this(reader, logger, FQCN, level, marker);
>>>      }
>>>
>>> +    public LoggerReader(final Reader reader, final ExtendedLogger
>>> logger, final String fqcn, final Level level,
>>> +            final Marker marker) {
>>> +        super(reader);
>>> +        this.logger = new CharStreamLogger(logger, level, marker);
>>> +        this.fqcn = fqcn;
>>> +    }
>>> +
>>>      @Override
>>>      public void close() throws IOException {
>>>          super.close();
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/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 53d9324..68fdc83 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
>>> @@ -35,11 +35,6 @@ public class LoggerWriter extends Writer {
>>>      private final CharStreamLogger logger;
>>>      private final String fqcn;
>>>
>>> -    public LoggerWriter(final ExtendedLogger logger, final String fqcn,
>>> final Level level, final Marker marker) {
>>> -        this.logger = new CharStreamLogger(logger, level, marker);
>>> -        this.fqcn = fqcn;
>>> -    }
>>> -
>>>      public LoggerWriter(final ExtendedLogger logger, final Level level)
>>> {
>>>          this(logger, FQCN, level, null);
>>>      }
>>> @@ -48,6 +43,11 @@ public class LoggerWriter extends Writer {
>>>          this(logger, FQCN, level, marker);
>>>      }
>>>
>>> +    public LoggerWriter(final ExtendedLogger logger, final String fqcn,
>>> final Level level, final Marker marker) {
>>> +        this.logger = new CharStreamLogger(logger, level, marker);
>>> +        this.fqcn = fqcn;
>>> +    }
>>> +
>>>      @Override
>>>      public void close() throws IOException {
>>>          this.logger.close(this.fqcn);
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java
>>> index 78b13fd..7b19495 100644
>>> ---
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java
>>> +++
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/AbstractLoggerWriterTest.java
>>> @@ -70,7 +70,7 @@ public abstract class AbstractLoggerWriterTest extends
>>> AbstractStreamTest {
>>>          out.close();
>>>          replay(out);
>>>
>>> -        final LoggerOutputStream los = new LoggerOutputStream(out,
>>> getExtendedLogger(), LEVEL);
>>> +        final LoggerFilterOutputStream los = new
>>> LoggerFilterOutputStream(out, getExtendedLogger(), LEVEL);
>>>          los.flush();
>>>          los.close();
>>>          verify(out);
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamCallerInfoTest.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamCallerInfoTest.java
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamCallerInfoTest.java
>>> index 3a38753..73fb966 100644
>>> ---
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamCallerInfoTest.java
>>> +++
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamCallerInfoTest.java
>>> @@ -26,7 +26,7 @@ public class LoggerOutputStreamCallerInfoTest extends
>>> LoggerStreamsCallerInfoTes
>>>
>>>      @Before
>>>      public void setupStreams() {
>>> -        this.logOut = new LoggerOutputStream(getLogger(), Level.WARN);
>>> +        this.logOut = new LoggerOutputStream(getExtendedLogger(),
>>> Level.WARN);
>>>      }
>>>
>>>      @Test
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamTest.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamTest.java
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamTest.java
>>> index 115d57e..e6450ee 100644
>>> ---
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamTest.java
>>> +++
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerOutputStreamTest.java
>>> @@ -34,7 +34,7 @@ public class LoggerOutputStreamTest extends
>>> AbstractStreamTest {
>>>      protected OutputStream out;
>>>
>>>      protected OutputStream createOutputStream() {
>>> -        return new LoggerOutputStream(this.wrapped,
>>> getExtendedLogger(), Level.ERROR);
>>> +        return new LoggerFilterOutputStream(this.wrapped,
>>> getExtendedLogger(), Level.ERROR);
>>>      }
>>>
>>>      @Before
>>> @@ -66,7 +66,7 @@ public class LoggerOutputStreamTest extends
>>> AbstractStreamTest {
>>>          out.close();
>>>          replay(out);
>>>
>>> -        final LoggerOutputStream los = new LoggerOutputStream(out,
>>> getExtendedLogger(), LEVEL);
>>> +        final LoggerFilterOutputStream los = new
>>> LoggerFilterOutputStream(out, getExtendedLogger(), LEVEL);
>>>          los.flush();
>>>          los.close();
>>>          verify(out);
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerPrintStreamCallerInfoTest.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerPrintStreamCallerInfoTest.java
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerPrintStreamCallerInfoTest.java
>>> index 21d8b58..ad6aeda 100644
>>> ---
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerPrintStreamCallerInfoTest.java
>>> +++
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerPrintStreamCallerInfoTest.java
>>> @@ -16,6 +16,7 @@
>>>   */
>>>  package org.apache.logging.log4j.streams;
>>>
>>> +import java.io.UnsupportedEncodingException;
>>>  import java.util.Locale;
>>>
>>>  import org.apache.logging.log4j.Level;
>>> @@ -119,7 +120,7 @@ public class LoggerPrintStreamCallerInfoTest extends
>>> LoggerStreamsCallerInfoTest
>>>      }
>>>
>>>      @Before
>>> -    public void setupStreams() {
>>> +    public void setupStreams() throws UnsupportedEncodingException {
>>>          this.logOut = new LoggerPrintStream(getLogger(), Level.WARN);
>>>      }
>>>
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/00e5f565/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerStreamsCallerInfoTesting.java
>>> ----------------------------------------------------------------------
>>> diff --git
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerStreamsCallerInfoTesting.java
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerStreamsCallerInfoTesting.java
>>> index 73f22a0..0af5a30 100644
>>> ---
>>> a/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerStreamsCallerInfoTesting.java
>>> +++
>>> b/log4j-streams/src/test/java/org/apache/logging/log4j/streams/LoggerStreamsCallerInfoTesting.java
>>> @@ -27,10 +27,14 @@ import org.junit.ClassRule;
>>>
>>>  public class LoggerStreamsCallerInfoTesting {
>>>
>>> -    protected static Logger getLogger() {
>>> +    protected static Logger getExtendedLogger() {
>>>          return ctx.getLogger("ClassAndMethodLogger");
>>>      }
>>>
>>> +    protected static Logger getLogger() {
>>> +        return getExtendedLogger();
>>> +    }
>>> +
>>>      protected final static Level LEVEL = Level.WARN;
>>>
>>>      @ClassRule
>>>
>>>
>>>
>>>
>>> --
>>> Matt Sicker <[email protected]>
>>>
>>
>>
>>
>> --
>> E-Mail: [email protected] | [email protected]
>> Java Persistence with Hibernate, Second Edition
>> <http://www.manning.com/bauer3/>
>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>> Spring Batch in Action <http://www.manning.com/templier/>
>> Blog: http://garygregory.wordpress.com
>> Home: http://garygregory.com/
>> Tweet! http://twitter.com/GaryGregory
>>
>
>
>
> --
> Matt Sicker <[email protected]>
>



-- 
E-Mail: [email protected] | [email protected]
Java Persistence with Hibernate, Second Edition
<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to