001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    
018    package org.apache.logging.log4j.io;
019    
020    import java.io.BufferedReader;
021    import java.io.IOException;
022    import java.io.Reader;
023    import java.nio.CharBuffer;
024    
025    import org.apache.logging.log4j.Level;
026    import org.apache.logging.log4j.Marker;
027    import org.apache.logging.log4j.spi.ExtendedLogger;
028    
029    /**
030     * 
031     * @since 2.1
032     */
033    public class LoggerBufferedReader extends BufferedReader {
034        private static final String FQCN = LoggerBufferedReader.class.getName();
035    
036        protected LoggerBufferedReader(final Reader reader, final ExtendedLogger logger, final String fqcn,
037                                       final Level level, final Marker marker) {
038            super(new LoggerReader(reader, logger, fqcn == null ? FQCN : fqcn, level, marker));
039        }
040    
041        protected LoggerBufferedReader(final Reader reader, final int size, final ExtendedLogger logger, final String fqcn,
042                                       final Level level, final Marker marker) {
043            super(new LoggerReader(reader, logger, fqcn == null ? FQCN : fqcn, level, marker), size);
044        }
045        
046        @Override
047        public void close() throws IOException {
048            super.close();
049        }
050        
051        @Override
052        public int read() throws IOException {
053            return super.read();
054        }
055        
056        @Override
057        public int read(final char[] cbuf) throws IOException {
058            return super.read(cbuf, 0, cbuf.length);
059        }
060        
061        @Override
062        public int read(final char[] cbuf, final int off, final int len) throws IOException {
063            return super.read(cbuf, off, len);
064        }
065        
066        @Override
067        public int read(final CharBuffer target) throws IOException {
068            final int len = target.remaining();
069            final char[] cbuf = new char[len];
070            final int charsRead = read(cbuf, 0, len);
071            if (charsRead > 0) {
072                target.put(cbuf, 0, charsRead);
073            }
074            return charsRead;
075        }
076        
077        @Override
078        public String readLine() throws IOException {
079            return super.readLine();
080        }
081    }