Author: bentmann
Date: Fri Apr 18 15:50:49 2008
New Revision: 649719

URL: http://svn.apache.org/viewvc?rev=649719&view=rev
Log:
[MPMD-76] use ${project.build.sourceEncoding} as default value for 
"sourceEncoding" parameter

Modified:
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java
    
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java?rev=649719&r1=649718&r2=649719&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReport.java
 Fri Apr 18 15:50:49 2008
@@ -39,6 +39,7 @@
 import net.sourceforge.pmd.cpd.XMLRenderer;
 
 import org.apache.maven.reporting.MavenReportException;
+import org.codehaus.plexus.util.ReaderFactory;
 
 /**
  * Creates a report for PMD's CPD tool.  See
@@ -70,9 +71,10 @@
     private boolean skip;
 
     /**
-     * The file encoding to use when reading the java source.
-     *
-     * @parameter
+     * The file encoding to use when reading the java source. 
<strong>Note:</strong> Prior to version 2.4, this
+     * parameter defaulted to the JVM's default encoding which led to 
platform-dependent builds.
+     * 
+     * @parameter expression="${encoding}" 
default-value="${project.build.sourceEncoding}"
      * @since 2.3
      */
     private String sourceEncoding;
@@ -110,13 +112,11 @@
                 Map files = null;
                 try
                 {
-                    if ( sourceEncoding != null )
-                    {
-                        cpd.setEncoding( sourceEncoding );
+                    cpd.setEncoding( getSourceEncoding() );
+
+                    // test encoding as CPD will convert exception into a 
RuntimeException
+                    new OutputStreamWriter( new ByteArrayOutputStream() , 
getSourceEncoding() );
 
-                        // test encoding as CPD will convert exception into a 
RuntimeException
-                        new OutputStreamWriter( new ByteArrayOutputStream() , 
sourceEncoding );
-                    }
                     files = getFilesToProcess( );
                     for ( Iterator it = files.keySet().iterator(); 
it.hasNext(); ) 
                     {
@@ -125,7 +125,7 @@
                 }
                 catch ( UnsupportedEncodingException e )
                 {
-                    throw new MavenReportException( "Encoding '" + 
sourceEncoding + "' is not supported.", e );
+                    throw new MavenReportException( "Encoding '" + 
getSourceEncoding() + "' is not supported.", e );
                 }
                 catch ( IOException e )
                 {
@@ -148,6 +148,16 @@
             }
 
         }
+    }
+
+    /**
+     * Gets the effective source file encoding.
+     * 
+     * @return The effective source file encoding, never <code>null</code>.
+     */
+    private String getSourceEncoding()
+    {
+        return ( sourceEncoding == null ) ? ReaderFactory.ISO_8859_1 : 
sourceEncoding;
     }
 
     void writeNonHtml( CPD cpd ) throws MavenReportException

Modified: 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java?rev=649719&r1=649718&r2=649719&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
 (original)
+++ 
maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java
 Fri Apr 18 15:50:49 2008
@@ -57,6 +57,7 @@
 import org.codehaus.plexus.resource.loader.FileResourceCreationException;
 import org.codehaus.plexus.resource.loader.FileResourceLoader;
 import org.codehaus.plexus.resource.loader.ResourceNotFoundException;
+import org.codehaus.plexus.util.ReaderFactory;
 
 /**
  * Creates a PMD report.
@@ -107,9 +108,10 @@
     private String[] rulesets = new String[]{"rulesets/basic.xml", 
"rulesets/unusedcode.xml", "rulesets/imports.xml", };
 
     /**
-     * The file encoding to use when reading the java source.
-     *
-     * @parameter
+     * The file encoding to use when reading the java source. 
<strong>Note:</strong> Prior to version 2.4, this
+     * parameter defaulted to the JVM's default encoding which led to 
platform-dependent builds.
+     * 
+     * @parameter expression="${encoding}" 
default-value="${project.build.sourceEncoding}"
      */
     private String sourceEncoding;
 
@@ -199,8 +201,6 @@
                     throw new MavenReportException( e.getMessage(), e );
                 }
     
-                boolean hasEncoding = sourceEncoding != null;
-    
                 Map files;
                 try
                 {
@@ -227,14 +227,12 @@
                         {
                             // PMD closes this Reader even though it did not 
open it so we have
                             // to open a new one with every call to 
processFile().
-                            Reader reader = hasEncoding
-                                ? new InputStreamReader( new FileInputStream( 
file ), sourceEncoding )
-                                : new FileReader( file );
+                            Reader reader = new InputStreamReader( new 
FileInputStream( file ), getSourceEncoding() );
                             pmd.processFile( reader, sets[idx], ruleContext );
                         }
                         catch ( UnsupportedEncodingException e1 )
                         {
-                            throw new MavenReportException( "Encoding '" + 
sourceEncoding + "' is not supported.", e1 );
+                            throw new MavenReportException( "Encoding '" + 
getSourceEncoding() + "' is not supported.", e1 );
                         }
                         catch ( PMDException pe )
                         {
@@ -304,6 +302,16 @@
         }
     }
 
+    /**
+     * Gets the effective source file encoding.
+     * 
+     * @return The effective source file encoding, never <code>null</code>.
+     */
+    private String getSourceEncoding()
+    {
+        return ( sourceEncoding == null ) ? ReaderFactory.ISO_8859_1 : 
sourceEncoding;
+    }
+    
     /**
      * Convenience method to get the location of the specified file name.
      *


Reply via email to