Author: dkulp Date: Thu Apr 9 13:27:23 2009 New Revision: 763640 URL: http://svn.apache.org/viewvc?rev=763640&view=rev Log: Fix an issue where classes only referenced as arrays are not being properly shaded.
Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java?rev=763640&r1=763639&r2=763640&view=diff ============================================================================== --- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java (original) +++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java Thu Apr 9 13:27:23 2009 @@ -302,9 +302,52 @@ value = r.relocateClass( name ); break; } + if ( name.length() > 0 && name.charAt( 0 ) == '[' ) + { + int count = 0; + while ( name.length() > 0 && name.charAt(0) == '[' ) + { + name = name.substring( 1 ); + ++count; + } + + if ( name.length() > 0 + && name.charAt( 0 ) == 'L' + && name.charAt( name.length() - 1 ) == ';' ) + { + name = name.substring( 1, name.length() - 1 ); + + if ( r.canRelocatePath( name ) ) + { + value = 'L' + r.relocatePath( name ) + ';'; + while ( count > 0 ) + { + value = '[' + value; + --count; + } + break; + } + + if ( r.canRelocateClass( name ) ) + { + value = 'L' + r.relocateClass( name ) + ';'; + while (count > 0) + { + value = '[' + value; + --count; + } + break; + } + + } + } } return value; + } + else + { + object = super.mapValue( object ); } return object; }