You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by dk...@apache.org on 2007/02/22 19:07:21 UTC

svn commit: r510609 - /maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java

Author: dkulp
Date: Thu Feb 22 10:07:20 2007
New Revision: 510609

URL: http://svn.apache.org/viewvc?view=rev&rev=510609
Log:
Fix for MRRESOURCES-13
* In a forked lifecycle, the remote-resources are already a resource, make sure we don't try to copy them overtop of themselves
* Close some more streams in the event of failures


Modified:
    maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java

Modified: maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java?view=diff&rev=510609&r1=510608&r2=510609
==============================================================================
--- maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java (original)
+++ maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java Thu Feb 22 10:07:20 2007
@@ -48,6 +48,7 @@
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.io.Writer;
@@ -286,6 +287,7 @@
 
         try
         {
+            
             for ( Enumeration e = classLoader.getResources( BundleRemoteResourcesMojo.RESOURCES_MANIFEST );
                   e.hasMoreElements(); )
             {
@@ -296,52 +298,59 @@
                 conn.connect();
 
                 reader = new InputStreamReader( conn.getInputStream() );
+                               
+                try {
 
-                RemoteResourcesBundleXpp3Reader bundleReader = new RemoteResourcesBundleXpp3Reader();
-
-                RemoteResourcesBundle bundle = bundleReader.read( reader );
-
-                for ( Iterator i = bundle.getRemoteResources().iterator(); i.hasNext(); )
-                {
-                    String bundleResource = (String) i.next();
-
-                    String projectResource = bundleResource;
-
-
-                    if ( projectResource.endsWith(".vm") )
-                    {
-                        projectResource = projectResource.substring( 0, projectResource.length() - 3 );
-                    }
-
-                    // Don't overwrite resource that are already being provided.
-
-                    File f = new File( outputDirectory, projectResource );
-
-                    FileUtils.mkdir( f.getParentFile().getAbsolutePath() );
-
-                    if ( !copyResourceIfExists(f, projectResource) )
+                    RemoteResourcesBundleXpp3Reader bundleReader = new RemoteResourcesBundleXpp3Reader();
+    
+                    RemoteResourcesBundle bundle = bundleReader.read( reader );
+    
+                    for ( Iterator i = bundle.getRemoteResources().iterator(); i.hasNext(); )
                     {
-                        PrintWriter writer = new PrintWriter( new FileWriter( f ) );
-
-                        velocity.getEngine().mergeTemplate( bundleResource, context, writer );
-
-                        File appendedResourceFile = new File( appendedResourcesDirectory, projectResource);
-                        if ( appendedResourceFile.exists() ) 
+                        String bundleResource = (String) i.next();
+    
+                        String projectResource = bundleResource;
+    
+    
+                        if ( projectResource.endsWith(".vm") )
                         {
-                            FileReader freader = new FileReader( appendedResourceFile );
-                            BufferedReader breader = new BufferedReader( freader );
-                            
-                            String line = breader.readLine();
-                   
-                            while ( line != null )
-                            {
-                                writer.println( line );
-                                line = breader.readLine();
+                            projectResource = projectResource.substring( 0, projectResource.length() - 3 );
+                        }
+    
+                        // Don't overwrite resource that are already being provided.
+    
+                        File f = new File( outputDirectory, projectResource );
+    
+                        FileUtils.mkdir( f.getParentFile().getAbsolutePath() );
+    
+                        if ( !copyResourceIfExists(f, projectResource) )
+                        {
+                            PrintWriter writer = new PrintWriter( new FileWriter( f ) );
+    
+                            try {
+                                velocity.getEngine().mergeTemplate( bundleResource, context, writer );
+    
+                                File appendedResourceFile = new File( appendedResourcesDirectory, projectResource);
+                                if ( appendedResourceFile.exists() ) 
+                                {
+                                    FileReader freader = new FileReader( appendedResourceFile );
+                                    BufferedReader breader = new BufferedReader( freader );
+                                    
+                                    String line = breader.readLine();
+                           
+                                    while ( line != null )
+                                    {
+                                        writer.println( line );
+                                        line = breader.readLine();
+                                    }
+                                }
+                            } finally {
+                                writer.close();
                             }
                         }
-                        
-                        writer.close();
                     }
+                } finally {
+                    reader.close();
                 }
             }
         }
@@ -358,11 +367,6 @@
             throw new MojoExecutionException( "Error rendering velocity resource.", e );
         }
 
-        finally
-        {
-            IOUtil.close( reader );
-        }
-
         Thread.currentThread().setContextClassLoader( old );
 
         // ----------------------------------------------------------------------------
@@ -430,7 +434,8 @@
             //TODO - really should use the resource includes/excludes and name mapping
             File source = new File(resourceDirectory, relFileName);
             
-            if ( source.exists() )
+            if ( source.exists() 
+                && !source.equals(file))
             {
                 //TODO - should use filters here
                 FileUtils.copyFile(source, file);