Author: bimargulies
Date: Sat May 26 22:05:45 2012
New Revision: 1342979
URL: http://svn.apache.org/viewvc?rev=1342979&view=rev
Log:
MSHADE-119: slash-leading classpath resources not properly rewritten when
repackaging classes
o treat "/a/b/c" as the same thing as "a/b/c" in deciding if a path is
relocatable.
Added:
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/
- copied from r1342941,
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-class-from-string-pool/
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/maven/
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/maven/from/
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/maven/from/test.properties
(with props)
Removed:
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/java/relocated/
Modified:
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/pom.xml
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/java/Main.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/it/reloc-abs-resource-path/pom.xml
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/pom.xml?rev=1342979&r1=1342941&r2=1342979&view=diff
==============================================================================
---
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/pom.xml
(original)
+++
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/pom.xml
Sat May 26 22:05:45 2012
@@ -22,35 +22,26 @@ under the License.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.maven.its.shade.rcfsp</groupId>
- <artifactId>test</artifactId>
+ <groupId>org.apache.maven.its.shade</groupId>
+ <artifactId>reloc-abs-resource-path</artifactId>
<version>1.0</version>
- <packaging>jar</packaging>
- <name>MSHADE-47</name>
+ <parent>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-parent</artifactId>
+ <version>21</version>
+ </parent>
+
+ <name>MSHADE-119</name>
<description>
- Test that classes in strings like "[Lnet/sf/cglib/proxy/Callback" get
properly relocated.
+ Test that classes in strings like "/org/apache/velocity/my.properties" get
properly relocated
+ in calls to Class.getResource().
</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.0.2</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.1</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-resources-plugin</artifactId>
- <version>2.2</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>@project.version@</version>
<executions>
@@ -64,8 +55,8 @@ under the License.
<createDependencyReducedPom>false</createDependencyReducedPom>
<relocations>
<relocation>
- <pattern>relocated</pattern>
- <shadedPattern>hidden</shadedPattern>
+ <pattern>org.apache.maven.from</pattern>
+ <shadedPattern>org.apache.maven.to</shadedPattern>
</relocation>
</relocations>
</configuration>
@@ -87,18 +78,13 @@ under the License.
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
- <argument>${project.build.directory}/test-1.0.jar</argument>
+
<argument>${project.build.directory}/reloc-abs-resource-path-1.0.jar</argument>
<argument>Main</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.3.1</version>
- </plugin>
</plugins>
</build>
</project>
Modified:
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/java/Main.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/java/Main.java?rev=1342979&r1=1342941&r2=1342979&view=diff
==============================================================================
---
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/java/Main.java
(original)
+++
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/java/Main.java
Sat May 26 22:05:45 2012
@@ -1,3 +1,5 @@
+import java.net.URL;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -23,50 +25,15 @@ public class Main
public static void main( String[] args )
throws Exception
{
- testClassWithSlashes();
- testClassWithDots();
- testArrayClassWithDots();
- testArrayClassWithDots();
- }
-
- private static void testClassWithSlashes()
- throws Exception
- {
- String typeName = "Lrelocated/RelocatedClass;";
- typeName = typeName.substring( 1, typeName.length() - 1 );
- typeName = typeName.replace( '/', '.' );
- Class type = Class.forName( typeName );
- System.out.println( type.getName() );
- }
-
- private static void testClassWithDots()
- throws Exception
- {
- String typeName = "Lrelocated.RelocatedClass;";
- typeName = typeName.substring( 1, typeName.length() - 1 );
- typeName = typeName.replace( '/', '.' );
- Class type = Class.forName( typeName );
- System.out.println( type.getName() );
+ new Main().testAbsResource();
+
}
- private static void testArrayClassWithSlashes()
- throws Exception
- {
- String typeName = "[[[Lrelocated/RelocatedClass;";
- typeName = typeName.substring( 4, typeName.length() - 1 );
- typeName = typeName.replace( '/', '.' );
- Class type = Class.forName( typeName );
- System.out.println( type.getName() );
- }
-
- private static void testArrayClassWithDots()
- throws Exception
+ private void testAbsResource() throws Exception
{
- String typeName = "[[[[Lrelocated.RelocatedClass;";
- typeName = typeName.substring( 5, typeName.length() - 1 );
- typeName = typeName.replace( '/', '.' );
- Class type = Class.forName( typeName );
- System.out.println( type.getName() );
+ URL r =
getClass().getResource("/org/apache/maven/from/test.properties");
+ // expect NPE if MSHADE-119 is not fixed.
+ System.out.println( r.toString() );
}
}
Added:
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/maven/from/test.properties
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/maven/from/test.properties?rev=1342979&view=auto
==============================================================================
---
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/maven/from/test.properties
(added)
+++
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/maven/from/test.properties
Sat May 26 22:05:45 2012
@@ -0,0 +1 @@
+testprop=proptest
Propchange:
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/maven/from/test.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/plugins/trunk/maven-shade-plugin/src/it/reloc-abs-resource-path/src/main/resources/org/apache/maven/from/test.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain
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=1342979&r1=1342978&r2=1342979&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
Sat May 26 22:05:45 2012
@@ -505,7 +505,7 @@ public class ShadeMojo
// rename the output file if a specific finalName is set
// but don't rename if the finalName is the <build><finalName>
- // because this will be handled implicitely later
+ // because this will be handled implicitly later
if ( finalName != null && finalName.length() > 0 &&
!finalName.equals(
project.getBuild().getFinalName() ) )
{
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=1342979&r1=1342978&r2=1342979&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
Sat May 26 22:05:45 2012
@@ -170,7 +170,8 @@ public class SimpleRelocator
return false;
}
- return path.startsWith( pathPattern );
+ // Allow for annoying option of an extra / on the front of a path. See
MSHADE-119; comes from getClass().getResource("/a/b/c.properties").
+ return path.startsWith( pathPattern ) || path.startsWith ( "/" +
pathPattern );
}
public boolean canRelocateClass( 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=1342979&r1=1342978&r2=1342979&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
Sat May 26 22:05:45 2012
@@ -76,10 +76,18 @@ public class SimpleRelocatorTest
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"
) );
}
+
+ //MSHADE-119, make sure that the easy part of this works.
+ public void testCanRelocateAbsClassPath()
+ {
+ SimpleRelocator relocator = new SimpleRelocator(
"org.apache.velocity", "org.apache.momentum", null, null );
+ assertEquals("/org/apache/momentum/mass.properties",
relocator.relocatePath( "/org/apache/velocity/mass.properties" ) );
+
+ }
public void testRelocatePath()
{