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;
         }


Reply via email to