o Updated to 'plexus-utils-3.0.23'.
o Updated to stop suppressing exceptions incorrectly when closing resources.
  Most of the time the 'IOUtils.closeQuietly' methods of 'commons-io' and
  the 'IOUtil.close' method of 'plexus-utils' are used incorrectly. They
  are meant to be used in 'finally' blocks to not suppress an exception
  already thrown in the 'try' block. The documentation of the
  'IOUtils.closeQuietly' methods explicitly contains usage examples.
  As soon as 'commons-io' or 'plexus-utils' is targetted at Java 1.7, those
  methods should get deprecated and people should be told to use the
  try-with-resources statement instead.



git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1742353 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index 615280e..917c3ee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -141,7 +141,7 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
-      <version>3.0.20</version>
+      <version>3.0.23</version>
     </dependency>
 
     <!-- other -->
diff --git a/src/main/java/org/apache/maven/plugin/resources/remote/BundleRemoteResourcesMojo.java b/src/main/java/org/apache/maven/plugin/resources/remote/BundleRemoteResourcesMojo.java
index e03d35d..0afe25d 100644
--- a/src/main/java/org/apache/maven/plugin/resources/remote/BundleRemoteResourcesMojo.java
+++ b/src/main/java/org/apache/maven/plugin/resources/remote/BundleRemoteResourcesMojo.java
@@ -150,6 +150,9 @@
             writer = new FileWriter( f );
 
             w.write( writer, remoteResourcesBundle );
+
+            writer.close();
+            writer = null;
         }
         catch ( IOException e )
         {
diff --git a/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java b/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
index 0bd522e..d105244 100644
--- a/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
+++ b/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
@@ -836,6 +836,10 @@
                         }
 
                         velocity.evaluate( context, writer, "", reader );
+                        writer.close();
+                        writer = null;
+                        reader.close();
+                        reader = null;
                     }
                     catch ( ParseErrorException e )
                     {
@@ -909,16 +913,20 @@
 
         if ( file.exists() )
         {
-            InputStream is = new FileInputStream( file );
-            InputStream newContents = new ByteArrayInputStream( outStream.getData() );
+            InputStream is = null;
             try
             {
+                is = new FileInputStream( file );
+                final InputStream newContents = new ByteArrayInputStream( outStream.getData() );
                 needOverwrite = !IOUtil.contentEquals( is, newContents );
                 if ( getLog().isDebugEnabled() )
                 {
                     getLog().debug( "File " + file + " contents "
-                            + ( needOverwrite ? "differs" : "does not differ" ) );
+                                        + ( needOverwrite ? "differs" : "does not differ" ) );
                 }
+
+                is.close();
+                is = null;
             }
             finally
             {
@@ -936,6 +944,8 @@
         try
         {
             outStream.writeTo( os );
+            os.close();
+            os = null;
         }
         finally
         {
@@ -1141,8 +1151,6 @@
     protected void processResourceBundles( RemoteResourcesClassLoader classLoader, VelocityContext context )
         throws MojoExecutionException
     {
-        InputStreamReader reader = null;
-
         try
         {
             // CHECKSTYLE_OFF: LineLength
@@ -1150,6 +1158,10 @@
             {
                 URL url = e.nextElement();
 
+                InputStream in = null;
+                OutputStream out = null;
+                Reader reader = null;
+                Writer writer = null;
                 try
                 {
                     reader = new InputStreamReader( url.openStream() );
@@ -1158,6 +1170,9 @@
 
                     RemoteResourcesBundle bundle = bundleReader.read( reader );
 
+                    reader.close();
+                    reader = null;
+
                     for ( String bundleResource : bundle.getRemoteResources() )
                     {
                         String projectResource = bundleResource;
@@ -1180,38 +1195,27 @@
                             if ( doVelocity )
                             {
                                 DeferredFileOutputStream os =
-                                        new DeferredFileOutputStream( velocityFilterInMemoryThreshold, f );
-                                Writer writer;
+                                    new DeferredFileOutputStream( velocityFilterInMemoryThreshold, f );
+
+                                writer = bundle.getSourceEncoding() == null
+                                             ? new OutputStreamWriter( os )
+                                             : new OutputStreamWriter( os, bundle.getSourceEncoding() );
+
                                 if ( bundle.getSourceEncoding() == null )
                                 {
-                                    writer = new OutputStreamWriter( os );
+                                    // TODO: Is this correct? Shouldn't we behave like the rest of maven and fail
+                                    // down to JVM default instead ISO-8859-1 ?
+                                    velocity.mergeTemplate( bundleResource, "ISO-8859-1", context, writer );
                                 }
                                 else
                                 {
-                                    writer =
-                                        new OutputStreamWriter( os,
-                                                                bundle.getSourceEncoding() );
+                                    velocity.mergeTemplate( bundleResource, bundle.getSourceEncoding(), context,
+                                                            writer );
+
                                 }
 
-                                try
-                                {
-                                    if ( bundle.getSourceEncoding() == null )
-                                    {
-                                        // TODO: Is this correct? Shouldn't we behave like the rest of maven and fail
-                                        // down to JVM default instead ISO-8859-1 ?
-                                        velocity.mergeTemplate( bundleResource, "ISO-8859-1", context, writer );
-                                    }
-                                    else
-                                    {
-                                        velocity.mergeTemplate( bundleResource, bundle.getSourceEncoding(), context,
-                                                                writer );
-
-                                    }
-                                }
-                                finally
-                                {
-                                    IOUtil.close( writer );
-                                }
+                                writer.close();
+                                writer = null;
                                 fileWriteIfDiffers( os );
                             }
                             else
@@ -1225,25 +1229,20 @@
                             File appendedResourceFile = new File( appendedResourcesDirectory, projectResource );
                             File appendedVmResourceFile =
                                 new File( appendedResourcesDirectory, projectResource + ".vm" );
+
                             if ( appendedResourceFile.exists() )
                             {
-                                final InputStream in = new FileInputStream( appendedResourceFile );
-                                final OutputStream append = new FileOutputStream( f, true );
-
-                                try
-                                {
-                                    IOUtil.copy( in, append );
-                                }
-                                finally
-                                {
-                                    IOUtil.close( in );
-                                    IOUtil.close( append );
-                                }
+                                in = new FileInputStream( appendedResourceFile );
+                                out = new FileOutputStream( f, true );
+                                IOUtil.copy( in, out );
+                                out.close();
+                                out = null;
+                                in.close();
+                                in = null;
                             }
                             else if ( appendedVmResourceFile.exists() )
                             {
-                                PrintWriter writer;
-                                FileReader freader = new FileReader( appendedVmResourceFile );
+                                reader = new FileReader( appendedVmResourceFile );
 
                                 if ( bundle.getSourceEncoding() == null )
                                 {
@@ -1256,24 +1255,22 @@
                                                                                  bundle.getSourceEncoding() ) );
                                 }
 
-                                try
-                                {
-                                    Velocity.init();
-                                    Velocity.evaluate( context, writer, "remote-resources", freader );
-                                }
-                                finally
-                                {
-                                    IOUtil.close( writer );
-                                    IOUtil.close( freader );
-                                }
+                                Velocity.init();
+                                Velocity.evaluate( context, writer, "remote-resources", reader );
+                                writer.close();
+                                writer = null;
+                                reader.close();
+                                reader = null;
                             }
-
                         }
                     }
                 }
                 finally
                 {
-                    reader.close();
+                    IOUtil.close( out );
+                    IOUtil.close( in );
+                    IOUtil.close( writer );
+                    IOUtil.close( reader );
                 }
                 // CHECKSTYLE_ON: LineLength
             }
diff --git a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
index 2314709..9fbae63 100644
--- a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
+++ b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
@@ -239,7 +239,7 @@
 
         InputStream in = new FileInputStream( file );
         byte[] data = IOUtil.toByteArray( in );
-        IOUtil.close( in );
+        in.close();
 
         byte[] expected = "\u00E4\u00F6\u00FC\u00C4\u00D6\u00DC\u00DF".getBytes( "UTF-8" );
         assertTrue( Arrays.equals( expected, data ) );
@@ -280,7 +280,7 @@
 
         InputStream in = new FileInputStream( file );
         byte[] data = IOUtil.toByteArray( in );
-        IOUtil.close( in );
+        in.close();
 
         byte[] expected = "\u00E4\u00F6\u00FC\u00C4\u00D6\u00DC\u00DF".getBytes( "ISO-8859-1" );
         assertTrue( Arrays.equals( expected, data ) );
@@ -405,8 +405,8 @@
                 InputStream in = new FileInputStream(resource);
                 jar.putNextEntry(new ZipEntry(resourceName));
                 IOUtil.copy(in, jar);
-                IOUtil.close(in);
                 jar.closeEntry();
+                in.close();
             }
             jar.close();
         }