Coverage Report - org.codehaus.plexus.interpolation.util.StringUtils
 
Classes in this File Line Coverage Branch Coverage Complexity
StringUtils
80%
17/21
57%
8/14
4
 
 1  
 /* ====================================================================
 2  
  * The Apache Software License, Version 1.1
 3  
  *
 4  
  * Copyright (c) 2002 The Apache Software Foundation.  All rights
 5  
  * reserved.
 6  
  *
 7  
  * Redistribution and use in source and binary forms, with or without
 8  
  * modification, are permitted provided that the following conditions
 9  
  * are met:
 10  
  *
 11  
  * 1. Redistributions of source code must retain the above copyright
 12  
  *    notice, this list of conditions and the following disclaimer.
 13  
  *
 14  
  * 2. Redistributions in binary form must reproduce the above copyright
 15  
  *    notice, this list of conditions and the following disclaimer in
 16  
  *    the documentation and/or other materials provided with the
 17  
  *    distribution.
 18  
  *
 19  
  * 3. The end-user documentation included with the redistribution, if
 20  
  *    any, must include the following acknowlegement:
 21  
  *       "This product includes software developed by the
 22  
  *        Apache Software Foundation (http://www.codehaus.org/)."
 23  
  *    Alternately, this acknowlegement may appear in the software itself,
 24  
  *    if and wherever such third-party acknowlegements normally appear.
 25  
  *
 26  
  * 4. The names "The Jakarta Project", "Commons", and "Apache Software
 27  
  *    Foundation" must not be used to endorse or promote products derived
 28  
  *    from this software without prior written permission. For written
 29  
  *    permission, please contact codehaus@codehaus.org.
 30  
  *
 31  
  * 5. Products derived from this software may not be called "Apache"
 32  
  *    nor may "Apache" appear in their names without prior written
 33  
  *    permission of the Apache Software Foundation.
 34  
  *
 35  
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 36  
  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 37  
  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 38  
  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 39  
  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 40  
  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 41  
  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 42  
  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 43  
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 44  
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 45  
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 46  
  * SUCH DAMAGE.
 47  
  * ====================================================================
 48  
  *
 49  
  * This software consists of voluntary contributions made by many
 50  
  * individuals on behalf of the Apache Software Foundation.  For more
 51  
  * information on the Apache Software Foundation, please see
 52  
  * <http://www.codehaus.org/>.
 53  
  */
 54  
 package org.codehaus.plexus.interpolation.util;
 55  
 
 56  
 /**
 57  
  * Code here was swiped from plexus-utils' StringUtils class, so
 58  
  * plexus-interpolation could be completely self-contained.
 59  
  *
 60  
  * @author jdcasey
 61  
  */
 62  0
 public class StringUtils
 63  
 {
 64  
 
 65  
     /**
 66  
      * <p>Replace all occurrences of a String within another String.</p>
 67  
      *
 68  
      * <p>A <code>null</code> reference passed to this method is a no-op.</p>
 69  
      *
 70  
      * @see #replace(String text, String repl, String with, int max)
 71  
      * @param text text to search and replace in
 72  
      * @param repl String to search for
 73  
      * @param with String to replace with
 74  
      * @return the text with any replacements processed
 75  
      */
 76  
     public static String replace( String text, String repl, String with )
 77  
     {
 78  400005
         return replace( text, repl, with, -1 );
 79  
     }
 80  
 
 81  
     /**
 82  
      * <p>Replace a String with another String inside a larger String,
 83  
      * for the first <code>max</code> values of the search String.</p>
 84  
      *
 85  
      * <p>A <code>null</code> reference passed to this method is a no-op.</p>
 86  
      *
 87  
      * @param text text to search and replace in
 88  
      * @param repl String to search for
 89  
      * @param with String to replace with
 90  
      * @param max maximum number of values to replace, or <code>-1</code> if no maximum
 91  
      * @return the text with any replacements processed
 92  
      */
 93  
     public static String replace( String text, String repl, String with, int max )
 94  
     {
 95  400005
         if ( ( text == null ) || ( repl == null ) || ( with == null ) || ( repl.length() == 0 ) )
 96  
         {
 97  0
             return text;
 98  
         }
 99  
 
 100  400005
         StringBuilder buf = new StringBuilder( text.length() );
 101  400005
         int start = 0, end;
 102  800010
         while ( ( end = text.indexOf( repl, start ) ) != -1 )
 103  
         {
 104  400005
             buf.append( text, start, end ).append( with );
 105  400005
             start = end + repl.length();
 106  
 
 107  400005
             if ( --max == 0 )
 108  
             {
 109  0
                 break;
 110  
             }
 111  
         }
 112  400005
         buf.append( text, start, text.length());
 113  400005
         return buf.toString();
 114  
     }
 115  
 
 116  
     public static String capitalizeFirstLetter( String data )
 117  
     {
 118  18
         char firstChar = data.charAt( 0 );
 119  18
         char titleCase = Character.toTitleCase( firstChar );
 120  18
         if (firstChar == titleCase)
 121  
         {
 122  0
             return data;
 123  
         }
 124  18
         StringBuilder result = new StringBuilder( data.length() );
 125  18
         result.append( titleCase );
 126  18
         result.append(  data, 1, data.length() );
 127  18
         return result.toString();
 128  
     }
 129  
 
 130  
 }