You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2010/03/15 23:09:25 UTC

svn commit: r923461 - /maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java

Author: hboutemy
Date: Mon Mar 15 22:09:24 2010
New Revision: 923461

URL: http://svn.apache.org/viewvc?rev=923461&view=rev
Log:
preserve encoding when reading or writing XML descriptors

Modified:
    maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java

Modified: maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java?rev=923461&r1=923460&r2=923461&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java (original)
+++ maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/creator/FilesetArchetypeCreator.java Mon Mar 15 22:09:24 2010
@@ -54,16 +54,19 @@ import org.codehaus.plexus.logging.Abstr
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.WriterFactory;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
-import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Reader;
+import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -332,9 +335,18 @@ public class FilesetArchetypeCreator
                 pomReversedProperties, preserveCData, keepParent );
             getLogger().debug( "Created Archetype " + archetypeDescriptor.getName() + " pom" );
 
-            ArchetypeDescriptorXpp3Writer writer = new ArchetypeDescriptorXpp3Writer();
-            writer.write( new FileWriter( archetypeDescriptorFile ), archetypeDescriptor );
-            getLogger().debug( "Archetype " + archetypeDescriptor.getName() + " descriptor written" );
+            Writer out = null;
+            try
+            {
+                ArchetypeDescriptorXpp3Writer writer = new ArchetypeDescriptorXpp3Writer();
+                out = WriterFactory.newXmlWriter( archetypeDescriptorFile );
+                writer.write( out, archetypeDescriptor );
+                getLogger().debug( "Archetype " + archetypeDescriptor.getName() + " descriptor written" );
+            }
+            finally
+            {
+                IOUtil.close( out );
+            }
 
             OldArchetypeDescriptor oldDescriptor =
                 convertToOldDescriptor( archetypeDescriptor.getName(), packageName, basedir );
@@ -966,13 +978,27 @@ public class FilesetArchetypeCreator
 
             FileUtils.copyFile( initialPomFile, inputFile );
 
-            String initialcontent = FileUtils.fileRead( inputFile );
+            Reader in = null;
+            Writer out = null;
+            try
+            {
+                in = ReaderFactory.newXmlReader( inputFile );
 
-            String content = getReversedContent( initialcontent, pomReversedProperties );
+                String initialcontent = IOUtil.toString( in );
 
-            outputFile.getParentFile().mkdirs();
+                String content = getReversedContent( initialcontent, pomReversedProperties );
+
+                outputFile.getParentFile().mkdirs();
+
+                out = WriterFactory.newXmlWriter( outputFile );
 
-            FileUtils.fileWrite( outputFile.getAbsolutePath(), content );
+                IOUtil.copy( content, out );
+            }
+            finally
+            {
+                IOUtil.close( in );
+                IOUtil.close( out );
+            }
 
             inputFile.delete();
         }
@@ -994,19 +1020,29 @@ public class FilesetArchetypeCreator
             pomManager.writePom( pom, outputFile, initialPomFile );
         }
 
-        String initialcontent = FileUtils.fileRead( initialPomFile );
-        Iterator properties = pomReversedProperties.keySet().iterator();
-        while ( properties.hasNext() )
+        Reader in = null;
+        try
         {
-            String property = (String) properties.next();
+            in = ReaderFactory.newXmlReader( initialPomFile );
+            String initialcontent = IOUtil.toString( in );
 
-            if ( initialcontent.indexOf( "${" + property + "}" ) > 0 )
+            Iterator properties = pomReversedProperties.keySet().iterator();
+            while ( properties.hasNext() )
             {
-                getLogger().warn( "Archetype uses ${" + property +
-                    "} for internal processing, but file " + initialPomFile +
-                    " contains this property already" );
+                String property = (String) properties.next();
+
+                if ( initialcontent.indexOf( "${" + property + "}" ) > 0 )
+                {
+                    getLogger().warn( "Archetype uses ${" + property +
+                        "} for internal processing, but file " + initialPomFile +
+                        " contains this property already" );
+                }
             }
         }
+        finally
+        {
+            IOUtil.close( in );
+        }
     }
 
     private FileSet createFileSet(
@@ -1244,13 +1280,28 @@ public class FilesetArchetypeCreator
                 FileUtils.resolveFile( archetypeFilesDirectory, Constants.ARCHETYPE_POM + ".tmp" );
 
             FileUtils.copyFile( initialPomFile, inputFile );
-            String initialcontent = FileUtils.fileRead( inputFile );
 
-            String content = getReversedContent( initialcontent, pomReversedProperties );
+            Reader in = null;
+            Writer out = null;
+            try
+            {
+                in = ReaderFactory.newXmlReader( inputFile );
 
-            outputFile.getParentFile().mkdirs();
+                String initialcontent = IOUtil.toString( in );
+
+                String content = getReversedContent( initialcontent, pomReversedProperties );
+
+                outputFile.getParentFile().mkdirs();
 
-            FileUtils.fileWrite( outputFile.getAbsolutePath(), content );
+                out = WriterFactory.newXmlWriter( outputFile );
+
+                IOUtil.copy( content, out );
+            }
+            finally
+            {
+                IOUtil.close( in );
+                IOUtil.close( out );
+            }
 
             inputFile.delete();
         }
@@ -1296,19 +1347,29 @@ public class FilesetArchetypeCreator
             pomManager.writePom( pom, outputFile, initialPomFile );
         }
 
-        String initialcontent = FileUtils.fileRead( initialPomFile );
-        Iterator properties = pomReversedProperties.keySet().iterator();
-        while ( properties.hasNext() )
+        Reader in = null;
+        try
         {
-            String property = (String) properties.next();
+            in = ReaderFactory.newXmlReader( initialPomFile );
+            String initialcontent = IOUtil.toString( in );
 
-            if ( initialcontent.indexOf( "${" + property + "}" ) > 0 )
+            Iterator properties = pomReversedProperties.keySet().iterator();
+            while ( properties.hasNext() )
             {
-                getLogger().warn( "OldArchetype uses ${" + property +
-                    "} for internal processing, but file " + initialPomFile +
-                    " contains this property already" );
+                String property = (String) properties.next();
+
+                if ( initialcontent.indexOf( "${" + property + "}" ) > 0 )
+                {
+                    getLogger().warn( "OldArchetype uses ${" + property +
+                        "} for internal processing, but file " + initialPomFile +
+                        " contains this property already" );
+                }
             }
         }
+        finally
+        {
+            IOUtil.close( in );
+        }
     }
 
     private void createReplicaFiles( List filesets,
@@ -2098,8 +2159,17 @@ public class FilesetArchetypeCreator
         throws
         IOException
     {
-        OldArchetypeDescriptorXpp3Writer writer = new OldArchetypeDescriptorXpp3Writer();
-        writer.write( new FileWriter( oldDescriptorFile ), oldDescriptor );
+        Writer out = null;
+        try
+        {
+            OldArchetypeDescriptorXpp3Writer writer = new OldArchetypeDescriptorXpp3Writer();
+            out = WriterFactory.newXmlWriter( oldDescriptorFile );
+            writer.write( out, oldDescriptor );
+        }
+        finally
+        {
+            IOUtil.close( out );
+        }
     }
 
     private static final String MAVEN_PROPERTIES = "META-INF/maven/org.apache.maven.archetype/archetype-common/pom.properties";