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 2015/11/16 18:52:52 UTC

svn commit: r1714643 - in /maven/plugins/trunk/maven-shade-plugin/src: main/java/org/apache/maven/plugins/shade/ main/java/org/apache/maven/plugins/shade/resource/ test/java/org/apache/maven/plugins/shade/resource/

Author: krosenvold
Date: Mon Nov 16 17:52:52 2015
New Revision: 1714643

URL: http://svn.apache.org/viewvc?rev=1714643&view=rev
Log:
[MSHADE-213] Clarified the contract of the ResourceTransformer wrt closing of stream

Modified:
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
    maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformerParameterTests.java
    maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformerTest.java
    maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ServiceResourceTransformerTest.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=1714643&r1=1714642&r2=1714643&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 Mon Nov 16 17:52:52 2015
@@ -88,9 +88,7 @@ public class DefaultShader
         RelocatorRemapper remapper = new RelocatorRemapper( shadeRequest.getRelocators() );
 
         // noinspection ResultOfMethodCallIgnored
-        shadeRequest.getUberJar()
-                    .getParentFile()
-                    .mkdirs();
+        shadeRequest.getUberJar().getParentFile().mkdirs();
         FileOutputStream fileOutputStream = new FileOutputStream( shadeRequest.getUberJar() );
         JarOutputStream jos = new JarOutputStream( new BufferedOutputStream( fileOutputStream ) );
 
@@ -121,8 +119,7 @@ public class DefaultShader
             // Log a summary of duplicates
             logSummaryOfDuplicates( overlapping );
 
-            if ( overlapping.keySet()
-                            .size() > 0 )
+            if ( overlapping.keySet().size() > 0 )
             {
                 showOverlappingWarning();
             }
@@ -269,8 +266,15 @@ public class DefaultShader
                     if ( manifestTransformer.canTransformResource( resource ) )
                     {
                         resources.add( resource );
-                        manifestTransformer.processResource( resource, jarFile.getInputStream( entry ),
-                                                             shadeRequest.getRelocators() );
+                        InputStream inputStream = jarFile.getInputStream( entry );
+                        try
+                        {
+                            manifestTransformer.processResource( resource, inputStream, shadeRequest.getRelocators() );
+                        }
+                        finally
+                        {
+                            inputStream.close();
+                        }
                         break;
                     }
                 }
@@ -308,13 +312,12 @@ public class DefaultShader
 
             for ( String clazz : overlapping.get( jarz ) )
             {
-                classes.add( clazz.replace( ".class", "" )
-                                  .replace( "/", "." ) );
+                classes.add( clazz.replace( ".class", "" ).replace( "/", "." ) );
             }
 
             //CHECKSTYLE_OFF: LineLength
-            getLogger().warn( Joiner.on( ", " )
-                                    .join( jarzS ) + " define " + classes.size() + " overlapping classes: " );
+            getLogger().warn(
+                Joiner.on( ", " ).join( jarzS ) + " define " + classes.size() + " overlapping classes: " );
             //CHECKSTYLE_ON: LineLength
 
             int max = 10;
@@ -480,8 +483,7 @@ public class DefaultShader
         {
             if ( transformer.canTransformResource( name ) )
             {
-                getLogger().debug( "Transforming " + name + " using " + transformer.getClass()
-                                                                                   .getName() );
+                getLogger().debug( "Transforming " + name + " using " + transformer.getClass().getName() );
 
                 transformer.processResource( name, is, relocators );
 

Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java?rev=1714643&r1=1714642&r2=1714643&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java Mon Nov 16 17:52:52 2015
@@ -55,8 +55,6 @@ public class AppendingTransformer
     {
         IOUtil.copy( is, data );
         data.write( '\n' );
-
-        is.close();
     }
 
     public boolean hasTransformedResource()

Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java?rev=1714643&r1=1714642&r2=1714643&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java Mon Nov 16 17:52:52 2015
@@ -20,7 +20,6 @@ package org.apache.maven.plugins.shade.r
  */
 
 import org.apache.maven.plugins.shade.relocation.Relocator;
-import org.codehaus.plexus.util.IOUtil;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -74,7 +73,6 @@ public class ManifestResourceTransformer
         {
             manifest = new Manifest( is );
             manifestDiscovered = true;
-            IOUtil.close( is );
         }
     }
 

Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java?rev=1714643&r1=1714642&r2=1714643&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java Mon Nov 16 17:52:52 2015
@@ -31,6 +31,13 @@ public interface ResourceTransformer
 {
     boolean canTransformResource( String resource );
 
+    /**
+     * Transform an individual resource
+     * @param resource The resoure name
+     * @param is An input stream for the resource, the implementation should *not* close this stream
+     * @param relocators  A list of relocators
+     * @throws IOException When the IO blows up
+     */
     void processResource( String resource, InputStream is, List<Relocator> relocators )
         throws IOException;
 

Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java?rev=1714643&r1=1714642&r2=1714643&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java Mon Nov 16 17:52:52 2015
@@ -86,8 +86,6 @@ public class ServicesResourceTransformer
             }
             fout.append( relContent + "\n" );
         }
-
-        is.close();
     }
     public boolean hasTransformedResource()
     {

Modified: maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformerParameterTests.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformerParameterTests.java?rev=1714643&r1=1714642&r2=1714643&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformerParameterTests.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformerParameterTests.java Mon Nov 16 17:52:52 2015
@@ -96,6 +96,7 @@ public class ApacheNoticeResourceTransfo
             final ByteArrayInputStream noticeInputStream = new ByteArrayInputStream( noticeText.getBytes() );
             final List<Relocator> emptyList = Collections.emptyList();
             subject.processResource( NOTICE_RESOURCE, noticeInputStream, emptyList );
+            noticeInputStream.close();
         }
         catch ( NullPointerException e )
         {

Modified: maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformerTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformerTest.java?rev=1714643&r1=1714642&r2=1714643&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformerTest.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformerTest.java Mon Nov 16 17:52:52 2015
@@ -27,6 +27,7 @@ import org.custommonkey.xmlunit.Diff;
 import org.custommonkey.xmlunit.XMLAssert;
 import org.custommonkey.xmlunit.XMLUnit;
 
+import java.io.InputStream;
 import java.util.Collections;
 
 /**
@@ -51,10 +52,14 @@ public class ComponentsXmlResourceTransf
 
         XMLUnit.setNormalizeWhitespace( true );
 
-        transformer.processResource( "components-1.xml", getClass().getResourceAsStream( "/components-1.xml" ),
+        InputStream resourceAsStream = getClass().getResourceAsStream( "/components-1.xml" );
+        transformer.processResource( "components-1.xml", resourceAsStream,
                                      Collections.<Relocator> emptyList() );
-        transformer.processResource( "components-1.xml", getClass().getResourceAsStream( "/components-2.xml" ),
+        resourceAsStream.close();
+        InputStream resourceAsStream1 = getClass().getResourceAsStream( "/components-2.xml" );
+        transformer.processResource( "components-1.xml", resourceAsStream1,
                                      Collections.<Relocator> emptyList() );
+        resourceAsStream1.close();
         Diff diff = XMLUnit.compareXML(
             IOUtil.toString( getClass().getResourceAsStream( "/components-expected.xml" ), "UTF-8" ),
             IOUtil.toString( transformer.getTransformedResource(), "UTF-8" ) );

Modified: maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ServiceResourceTransformerTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ServiceResourceTransformerTest.java?rev=1714643&r1=1714642&r2=1714643&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ServiceResourceTransformerTest.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/resource/ServiceResourceTransformerTest.java Mon Nov 16 17:52:52 2015
@@ -56,6 +56,7 @@ public class ServiceResourceTransformerT
 
         ServicesResourceTransformer xformer = new ServicesResourceTransformer();
         xformer.processResource( contentResource, contentStream, relocators );
+        contentStream.close();
 
         File tempJar = File.createTempFile("shade.", ".jar");
         tempJar.deleteOnExit();
@@ -96,6 +97,7 @@ public class ServiceResourceTransformerT
 
         ServicesResourceTransformer xformer = new ServicesResourceTransformer();
         xformer.processResource( contentResource, contentStream, relocators );
+        contentStream.close();
 
         content = "org.blah.Service\n";
         contentBytes = content.getBytes( "UTF-8" );
@@ -103,6 +105,7 @@ public class ServiceResourceTransformerT
         contentResource = "META-INF/services/org.something.another";
 
         xformer.processResource( contentResource, contentStream, relocators );
+        contentStream.close();
 
         File tempJar = File.createTempFile("shade.", ".jar");
         tempJar.deleteOnExit();