Coverage Report - org.apache.maven.doxia.sink.AbstractSink
 
Classes in this File Line Coverage Branch Coverage Complexity
AbstractSink
75%
15/20
50%
7/14
3
 
 1  
 package org.apache.maven.doxia.sink;
 2  
 
 3  
 /*
 4  
  * Licensed to the Apache Software Foundation (ASF) under one
 5  
  * or more contributor license agreements.  See the NOTICE file
 6  
  * distributed with this work for additional information
 7  
  * regarding copyright ownership.  The ASF licenses this file
 8  
  * to you under the Apache License, Version 2.0 (the
 9  
  * "License"); you may not use this file except in compliance
 10  
  * with the License.  You may obtain a copy of the License at
 11  
  *
 12  
  *   http://www.apache.org/licenses/LICENSE-2.0
 13  
  *
 14  
  * Unless required by applicable law or agreed to in writing,
 15  
  * software distributed under the License is distributed on an
 16  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 17  
  * KIND, either express or implied.  See the License for the
 18  
  * specific language governing permissions and limitations
 19  
  * under the License.
 20  
  */
 21  
 
 22  
 import org.apache.maven.doxia.logging.Log;
 23  
 import org.apache.maven.doxia.logging.SystemStreamLog;
 24  
 import org.apache.maven.doxia.markup.Markup;
 25  
 
 26  
 /**
 27  
  * An abstract base class that defines some convenience methods for sinks.
 28  
  *
 29  
  * @author ltheussl
 30  
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
 31  
  * @version $Id: AbstractSink.java 1185112 2011-10-17 11:33:00Z ltheussl $
 32  
  * @since 1.1
 33  
  */
 34  268
 public abstract class AbstractSink
 35  
     implements Sink, Markup
 36  
 {
 37  
     private Log logger;
 38  
 
 39  
     /** {@inheritDoc} */
 40  
     public void enableLogging( Log log )
 41  
     {
 42  52
         this.logger = log;
 43  52
     }
 44  
 
 45  
     /**
 46  
      * Returns a logger for this sink.
 47  
      * If no logger has been configured, a new SystemStreamLog is returned.
 48  
      *
 49  
      * @return Log
 50  
      */
 51  
     protected Log getLog()
 52  
     {
 53  92
         if ( logger == null )
 54  
         {
 55  88
             logger = new SystemStreamLog();
 56  
         }
 57  
 
 58  92
         return logger;
 59  
     }
 60  
 
 61  
     /**
 62  
      * Parses the given String and replaces all occurrences of
 63  
      * '\n', '\r' and '\r\n' with the system EOL. All Sinks should
 64  
      * make sure that text output is filtered through this method.
 65  
      *
 66  
      * @param text the text to scan.
 67  
      *      May be null in which case null is returned.
 68  
      *
 69  
      * @return a String that contains only System EOLs.
 70  
      */
 71  
      protected static String unifyEOLs( String text )
 72  
      {
 73  468
         if ( text == null )
 74  
         {
 75  0
             return null;
 76  
         }
 77  
 
 78  468
         int length = text.length();
 79  
 
 80  468
         StringBuilder buffer = new StringBuilder( length );
 81  
 
 82  8166
         for ( int i = 0; i < length; i++ )
 83  
         {
 84  7698
             if ( text.charAt( i ) == '\r' )
 85  
             {
 86  0
                 if ( ( i + 1 ) < length && text.charAt( i + 1 ) == '\n' )
 87  
                 {
 88  0
                     i++;
 89  
                 }
 90  
 
 91  0
                 buffer.append( EOL );
 92  
             }
 93  7698
             else if ( text.charAt( i ) == '\n' )
 94  
             {
 95  0
                 buffer.append( EOL );
 96  
             }
 97  
             else
 98  
             {
 99  7698
                 buffer.append( text.charAt( i ) );
 100  
             }
 101  
         }
 102  
 
 103  468
         return buffer.toString();
 104  
     }
 105  
 
 106  
      /**
 107  
       * This is called in {@link #head()} or in {@link #close()}, and can be used
 108  
       * to set the sink into a clear state so it can be re-used.
 109  
       *
 110  
       * @since 1.1.2
 111  
       */
 112  
      protected void init()
 113  
      {
 114  
          // nop
 115  178
      }
 116  
 }