Coverage Report - org.codehaus.plexus.interpolation.os.OperatingSystemUtils
 
Classes in this File Line Coverage Branch Coverage Complexity
OperatingSystemUtils
80%
12/15
100%
4/4
1.333
OperatingSystemUtils$DefaultEnvVarSource
100%
2/2
N/A
1.333
OperatingSystemUtils$EnvVarSource
N/A
N/A
1.333
 
 1  
 package org.codehaus.plexus.interpolation.os;
 2  
 
 3  
 /*
 4  
  * The MIT License
 5  
  *
 6  
  * Copyright (c) 2004, The Codehaus
 7  
  *
 8  
  * Permission is hereby granted, free of charge, to any person obtaining a copy of
 9  
  * this software and associated documentation files (the "Software"), to deal in
 10  
  * the Software without restriction, including without limitation the rights to
 11  
  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
 12  
  * of the Software, and to permit persons to whom the Software is furnished to do
 13  
  * so, subject to the following conditions:
 14  
  *
 15  
  * The above copyright notice and this permission notice shall be included in all
 16  
  * copies or substantial portions of the Software.
 17  
  *
 18  
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 19  
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 20  
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 21  
  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 22  
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 23  
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 24  
  * SOFTWARE.
 25  
  */
 26  
 
 27  
 import java.io.IOException;
 28  
 import java.util.Locale;
 29  
 import java.util.Map;
 30  
 import java.util.Properties;
 31  
 
 32  
 /**
 33  
  * <b>NOTE:</b> This class was copied from plexus-utils, to allow this library
 34  
  * to stand completely self-contained.
 35  
  * 
 36  
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l </a>
 37  
  */
 38  
 public final class OperatingSystemUtils
 39  
 {
 40  
 
 41  1
     private static EnvVarSource envVarSource = new DefaultEnvVarSource();
 42  
 
 43  
     private OperatingSystemUtils()
 44  0
     {
 45  0
     }
 46  
 
 47  
     public static Properties getSystemEnvVars()
 48  
         throws IOException
 49  
     {
 50  0
         return getSystemEnvVars( true );
 51  
     }
 52  
 
 53  
     /**
 54  
      * Return the shell environment variables. If <code>caseSensitive == true</code>, then envar
 55  
      * keys will all be upper-case.
 56  
      *
 57  
      * @param caseSensitive Whether environment variable keys should be treated case-sensitively.
 58  
      * @return Properties object of (possibly modified) envar keys mapped to their values.
 59  
      * @throws IOException in case of an error.
 60  
      */
 61  
 
 62  
     public static Properties getSystemEnvVars( boolean caseSensitive )
 63  
         throws IOException
 64  
     {
 65  9
         Properties envVars = new Properties();
 66  9
         Map<String, String> envs = envVarSource.getEnvMap();
 67  9
         for ( String key : envs.keySet() )
 68  
         {
 69  97
             String value = envs.get( key );
 70  97
             if ( !caseSensitive )
 71  
             {
 72  6
                 key = key.toUpperCase( Locale.ENGLISH );
 73  
             }
 74  97
             envVars.put( key, value );
 75  97
         }
 76  9
         return envVars;
 77  
     }
 78  
 
 79  
     /**
 80  
      * Set the source object to load the environment variables from.
 81  
      * Default implementation should suffice. This is mostly for testing. 
 82  
      * @param source the EnvVarSource instance that loads the environment variables.
 83  
      * 
 84  
      * @since 3.1.2
 85  
      */
 86  
     public static void setEnvVarSource( EnvVarSource source )
 87  
     {
 88  9
         envVarSource = source;
 89  9
     }
 90  
 
 91  
     /**
 92  
      * Defines the functionality to load a Map of environment variables.
 93  
      * 
 94  
      * @since 3.1.2
 95  
      */
 96  
     public interface EnvVarSource
 97  
     {
 98  
         public Map<String, String> getEnvMap();
 99  
     }
 100  
 
 101  
     /**
 102  
      * Default implementation to load environment variables.
 103  
      *
 104  
      * @since 3.1.2
 105  
      */
 106  3
     public static class DefaultEnvVarSource
 107  
         implements EnvVarSource
 108  
     {
 109  
 
 110  
         public Map<String, String> getEnvMap()
 111  
         {
 112  2
             return System.getenv();
 113  
         }
 114  
 
 115  
     }
 116  
 }