Author: dennisl
Date: Wed Feb 11 13:06:59 2009
New Revision: 743319

URL: http://svn.apache.org/viewvc?rev=743319&view=rev
Log:
[MWAR-183] filteringDeploymentDescriptors should honor the encoding specified 
in web.xml

Modified:
    
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java

Modified: 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java?rev=743319&r1=743318&r2=743319&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java
 (original)
+++ 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java
 Wed Feb 11 13:06:59 2009
@@ -31,6 +31,7 @@
 import org.apache.maven.shared.filtering.MavenFilteringException;
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.XmlStreamReader;
 
 /**
  * Handles the project own resources, that is:
@@ -220,9 +221,8 @@
                 }
                 if ( context.isFilteringDeploymentDescriptors() )
                 {
-                    // TODO: web.xml encoding can be different from UTF-8
                     context.getMavenFileFilter().copyFile( webXml, new File( 
webinfDir, "web.xml" ), true,
-                                                           
context.getFilterWrappers(), "UTF-8" );
+                                                           
context.getFilterWrappers(), getEncoding( webXml ) );
                 }
                 else
                 {
@@ -238,9 +238,8 @@
                 // if exists we can filter it
                 if ( defaultWebXml.exists() && 
context.isFilteringDeploymentDescriptors() )
                 {
-                    // TODO: web.xml encoding can be different from UTF-8
                     context.getMavenFileFilter().copyFile( defaultWebXml, new 
File( webinfDir, "web.xml" ), true,
-                                                           
context.getFilterWrappers(), "UTF-8" );
+                                                           
context.getFilterWrappers(), getEncoding( defaultWebXml ) );
                     context.getWebappStructure().getFullStructure().add( 
WEB_INF_PATH + "/web.xml" );
                 }
             }
@@ -250,9 +249,9 @@
                 String xmlFileName = containerConfigXML.getName();
                 if ( context.isFilteringDeploymentDescriptors() )
                 {
-                    // TODO: XML config file encoding can be different from 
UTF-8
                     context.getMavenFileFilter().copyFile( containerConfigXML, 
new File( metainfDir, xmlFileName ),
-                                                           true, 
context.getFilterWrappers(), "UTF-8" );
+                                                           true, 
context.getFilterWrappers(),
+                                                           getEncoding( 
containerConfigXML ) );
                 }
                 else
                 {
@@ -272,6 +271,19 @@
         }
     }
 
+    /**
+     * Get the encoding from an XML-file.
+     *
+     * @param webXml the XML-file
+     * @return The encoding of the XML-file, or UTF-8 if it's not specified in 
the file
+     * @throws IOException if an error occurred while reading the file
+     */
+    private String getEncoding( File webXml )
+        throws IOException
+    {
+        XmlStreamReader xmlReader = new XmlStreamReader( webXml );
+        return xmlReader.getEncoding();
+    }
 
     /**
      * Copies webapp webResources from the specified directory.


Reply via email to