You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2012/10/11 20:42:54 UTC
svn commit: r1397224 - in /maven/shared/trunk/maven-shared-utils/src:
main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java
test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java
Author: krosenvold
Date: Thu Oct 11 18:42:54 2012
New Revision: 1397224
URL: http://svn.apache.org/viewvc?rev=1397224&view=rev
Log:
o Fixed bug introduced with merge conflict, added unit test
Modified:
maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java
maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java
Modified: maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java?rev=1397224&r1=1397223&r2=1397224&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java (original)
+++ maven/shared/trunk/maven-shared-utils/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java Thu Oct 11 18:42:54 2012
@@ -294,110 +294,23 @@ public abstract class CommandLineUtils
// check if it's 1.5+ run
- Method getenvMethod = getEnvMethod();
- if ( getenvMethod != null )
+ try
{
- try
- {
- return getEnvFromSystem( getenvMethod, caseSensitive );
- }
- catch ( IllegalAccessException e )
- {
- throw new IOException( e.getMessage() );
- }
- catch ( IllegalArgumentException e )
- {
- throw new IOException( e.getMessage() );
- }
- catch ( InvocationTargetException e )
- {
- throw new IOException( e.getMessage() );
- }
+ Map<String, String> envs = System.getenv();
+ return ensureCaseSensitivity( envs, caseSensitive );
}
-
- Process p = null;
- BufferedReader br = null;
-
- try
+ catch ( IllegalAccessException e )
{
-
- Runtime r = Runtime.getRuntime();
-
- //If this is windows set the shell to command.com or cmd.exe with correct arguments.
- boolean overriddenEncoding = false;
- if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
- {
- if ( Os.isFamily( Os.FAMILY_WIN9X ) )
- {
- p = r.exec( "command.com /c set" );
- }
- else
- {
- overriddenEncoding = true;
- // /U = change stdout encoding to UTF-16LE to avoid encoding inconsistency
- // between command-line/DOS and GUI/Windows, see PLXUTILS-124
- p = r.exec( "cmd.exe /U /c set" );
- }
- }
- else
- {
- p = r.exec( "env" );
- }
-
- Reader reader = overriddenEncoding
- ? new InputStreamReader( p.getInputStream(), UTF_16LE )
- : new InputStreamReader( p.getInputStream() );
- br = new BufferedReader( reader );
-
- return readEnvVars( caseSensitive, br );
+ throw new IOException( e.getMessage() );
}
- finally
+ catch ( IllegalArgumentException e )
{
- IOUtil.close( br );
- if ( p != null )
- {
- IOUtil.close( p.getOutputStream() );
- IOUtil.close( p.getErrorStream() );
- IOUtil.close( p.getInputStream() );
-
- p.destroy();
- }
+ throw new IOException( e.getMessage() );
}
- }
-
- private static Properties readEnvVars( boolean caseSensitive, BufferedReader br )
- throws IOException
- {
- String line;
- Properties envVars = new Properties();
- String lastKey = null;
- String lastVal = null;
-
- while ( ( line = br.readLine() ) != null )
+ catch ( InvocationTargetException e )
{
- int idx = line.indexOf( '=' );
-
- if ( idx > 0 )
- {
- lastKey = line.substring( 0, idx );
-
- if ( !caseSensitive )
- {
- lastKey = lastKey.toUpperCase( Locale.ENGLISH );
- }
-
- lastVal = line.substring( idx + 1 );
-
- envVars.setProperty( lastKey, lastVal );
- }
- else if ( lastKey != null )
- {
- lastVal += "\n" + line;
-
- envVars.setProperty( lastKey, lastVal );
- }
+ throw new IOException( e.getMessage() );
}
- return envVars;
}
private static boolean isAlive( Process p )
@@ -543,14 +456,13 @@ public abstract class CommandLineUtils
}
}
- private static Properties getEnvFromSystem( Method method, boolean caseSensitive )
+ static Properties ensureCaseSensitivity( Map<String, String> envs, boolean preserveKeyCase )
throws IllegalAccessException, IllegalArgumentException, InvocationTargetException
{
Properties envVars = new Properties();
- @SuppressWarnings( { "unchecked" } ) Map<String, String> envs = (Map<String, String>) method.invoke( null );
for ( Map.Entry<String, String> entry : envs.entrySet() )
{
- envVars.put( !caseSensitive ? entry.getKey().toUpperCase( Locale.ENGLISH ) : entry.getValue(), entry.getValue() );
+ envVars.put( !preserveKeyCase ? entry.getKey().toUpperCase( Locale.ENGLISH ) : entry.getKey(), entry.getValue() );
}
return envVars;
}
Modified: maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java?rev=1397224&r1=1397223&r2=1397224&view=diff
==============================================================================
--- maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java (original)
+++ maven/shared/trunk/maven-shared-utils/src/test/java/org/apache/maven/shared/utils/cli/CommandLineUtilsTest.java Thu Oct 11 18:42:54 2012
@@ -20,12 +20,14 @@ package org.apache.maven.shared.utils.cl
*/
-import junit.framework.TestCase;
-import org.apache.maven.shared.utils.Os;
-
import java.util.Arrays;
+import java.util.HashMap;
import java.util.Locale;
+import java.util.Map;
import java.util.Properties;
+import org.apache.maven.shared.utils.Os;
+
+import junit.framework.TestCase;
@SuppressWarnings( { "JavaDoc", "deprecation" } )
public class CommandLineUtilsTest
@@ -47,6 +49,15 @@ public class CommandLineUtilsTest
}
}
+ public void testEnsureCaseSensitivity()
+ throws Exception
+ {
+ Map<String, String> data = new HashMap<String, String>( );
+ data.put( "abz", "cool" );
+ assertTrue( CommandLineUtils.ensureCaseSensitivity( data, false ).containsKey( "ABZ" ) );
+ assertTrue( CommandLineUtils.ensureCaseSensitivity( data, true ).containsKey( "abz" ) );
+ }
+
/**
* Tests that environment variables on Windows are normalized to upper case. Does nothing on Unix platforms.
*/