Author: bimargulies Date: Sun Nov 20 22:17:34 2011 New Revision: 1204282 URL: http://svn.apache.org/viewvc?rev=1204282&view=rev Log: MSHADE-104: Cannot shade aspectj library o allow for relocating 'raw' (non-mangled-class-name) strings. o fix regex internal confusion.
Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java?rev=1204282&r1=1204281&r2=1204282&view=diff ============================================================================== --- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java (original) +++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java Sun Nov 20 22:17:34 2011 @@ -34,6 +34,8 @@ public class PackageRelocation private List includes; private List excludes; + + private boolean rawString; public String getPattern() { @@ -54,4 +56,9 @@ public class PackageRelocation { return excludes; } + + public boolean isRawString() + { + return rawString; + } } Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java?rev=1204282&r1=1204281&r2=1204282&view=diff ============================================================================== --- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java (original) +++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java Sun Nov 20 22:17:34 2011 @@ -613,7 +613,7 @@ public class ShadeMojo { PackageRelocation r = relocations[i]; - relocators.add( new SimpleRelocator( r.getPattern(), r.getShadedPattern(), r.getIncludes(), r.getExcludes() ) ); + relocators.add( new SimpleRelocator( r.getPattern(), r.getShadedPattern(), r.getIncludes(), r.getExcludes(), r.isRawString() ) ); } return relocators; Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java?rev=1204282&r1=1204281&r2=1204282&view=diff ============================================================================== --- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java (original) +++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java Sun Nov 20 22:17:34 2011 @@ -24,6 +24,7 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import java.util.regex.Pattern; import org.codehaus.plexus.util.SelectorUtils; @@ -46,21 +47,41 @@ public class SimpleRelocator private final Set includes; private final Set excludes; + + private final boolean rawString; public SimpleRelocator( String patt, String shadedPattern, List includes, List excludes ) { - this.pattern = patt.replace( '/', '.' ); - this.pathPattern = patt.replace( '.', '/' ); - - if ( shadedPattern != null ) + this( patt, shadedPattern, includes, excludes, false ); + } + + public SimpleRelocator( String patt, String shadedPattern, List includes, List excludes, boolean rawString ) + { + this.rawString = rawString; + + if ( rawString ) { - this.shadedPattern = shadedPattern.replace( '/', '.' ); - this.shadedPathPattern = shadedPattern.replace( '.', '/' ); + this.pathPattern = patt; + this.shadedPathPattern = shadedPattern; + + this.pattern = null; // not used for raw string relocator + this.shadedPattern = null; // not used for raw string relocator } else { - this.shadedPattern = "hidden." + this.pattern; - this.shadedPathPattern = "hidden/" + this.pathPattern; + this.pattern = patt.replace( '/', '.' ); + this.pathPattern = patt.replace( '.', '/' ); + + if ( shadedPattern != null ) + { + this.shadedPattern = shadedPattern.replace( '/', '.' ); + this.shadedPathPattern = shadedPattern.replace( '.', '/' ); + } + else + { + this.shadedPattern = "hidden." + this.pattern; + this.shadedPathPattern = "hidden/" + this.pathPattern; + } } this.includes = normalizePatterns( includes ); @@ -131,6 +152,11 @@ public class SimpleRelocator public boolean canRelocatePath( String path ) { + if ( rawString ) + { + return Pattern.compile( pathPattern ).matcher( path ).find(); + } + if ( path.endsWith( ".class" ) ) { path = path.substring( 0, path.length() - 6 ); @@ -146,12 +172,19 @@ public class SimpleRelocator public boolean canRelocateClass( String clazz ) { - return clazz.indexOf( '/' ) < 0 && canRelocatePath( clazz.replace( '.', '/' ) ); + return !rawString && clazz.indexOf( '/' ) < 0 && canRelocatePath( clazz.replace( '.', '/' ) ); } public String relocatePath( String path ) { - return path.replaceFirst( pathPattern, shadedPathPattern ); + if ( rawString ) + { + return path.replaceAll( pathPattern, shadedPathPattern ); + } + else + { + return path.replaceFirst( pathPattern, shadedPathPattern ); + } } public String relocateClass( String clazz ) Modified: maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java?rev=1204282&r1=1204281&r2=1204282&view=diff ============================================================================== --- maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java (original) +++ maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java Sun Nov 20 22:17:34 2011 @@ -71,6 +71,17 @@ public class SimpleRelocatorTest assertEquals( false, relocator.canRelocateClass( "org.foo.PublicStuff" ) ); assertEquals( false, relocator.canRelocateClass( "org.foo.PublicUtilStuff" ) ); } + + public void testCanRelocateRawString() + { + SimpleRelocator relocator; + + relocator = new SimpleRelocator( "org/foo", null, null, null, true ); + assertEquals( true, relocator.canRelocatePath( "(I)org/foo/bar/Class;" ) ); + + relocator = new SimpleRelocator( "^META-INF/org.foo.xml$", null, null, null, true ); + assertEquals( true, relocator.canRelocatePath( "META-INF/org.foo.xml" ) ); + } public void testRelocatePath() { @@ -94,4 +105,14 @@ public class SimpleRelocatorTest assertEquals( "private.stuff.bar.Class", relocator.relocateClass( "org.foo.bar.Class" ) ); } + public void testRelocateRawString() + { + SimpleRelocator relocator; + + relocator = new SimpleRelocator( "Lorg/foo", "Lhidden/org/foo", null, null, true ); + assertEquals( "(I)Lhidden/org/foo/bar/Class;", relocator.relocatePath( "(I)Lorg/foo/bar/Class;" ) ); + + relocator = new SimpleRelocator( "^META-INF/org.foo.xml$", "META-INF/hidden.org.foo.xml", null, null, true ); + assertEquals( "META-INF/hidden.org.foo.xml", relocator.relocatePath( "META-INF/org.foo.xml" ) ); + } }