Author: hboutemy Date: Sun Apr 18 22:05:27 2010 New Revision: 935423 URL: http://svn.apache.org/viewvc?rev=935423&view=rev Log: [MPMD-83] use project.reporting.outputEncoding encoding for non-HTML reports
Modified: maven/plugins/trunk/maven-pmd-plugin/src/it/multi-module/mod-1/pom.xml maven/plugins/trunk/maven-pmd-plugin/src/it/multi-module/verify.bsh maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java 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/it/multi-module/mod-1/pom.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/multi-module/mod-1/pom.xml?rev=935423&r1=935422&r2=935423&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/it/multi-module/mod-1/pom.xml (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/it/multi-module/mod-1/pom.xml Sun Apr 18 22:05:27 2010 @@ -35,6 +35,10 @@ under the License. Test proper report generation in a multi-module build. </description> + <properties> + <project.reporting.outputEncoding>ISO-8859-1</project.reporting.outputEncoding> + </properties> + <reporting> <plugins> <plugin> Modified: maven/plugins/trunk/maven-pmd-plugin/src/it/multi-module/verify.bsh URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/it/multi-module/verify.bsh?rev=935423&r1=935422&r2=935423&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/it/multi-module/verify.bsh (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/it/multi-module/verify.bsh Sun Apr 18 22:05:27 2010 @@ -56,4 +56,25 @@ if ( content.indexOf( nonascii ) < 0 ) throw new IOException( "non-ascii content corrupted in UTF-8." ); } +// check xml files encoding +void checkEncoding( String module, String encoding ) +{ + for ( String path : paths ) + { + if ( !path.endsWith( ".xml" ) ) + { + continue; + } + File file = new File( basedir, module + '/' + path ); + content = FileUtils.fileRead( file, encoding ); + if ( !content.startsWith( "<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>" ) ) + { + throw new IOException( "wrong XML encoding declaration for " + file ); + } + } +} +checkEncoding( "mod-1", "ISO-8859-1" ); +checkEncoding( "mod-2", "UTF-8" ); +checkEncoding( "mod-3", "UTF-8" ); + return true; Modified: maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java?rev=935423&r1=935422&r2=935423&view=diff ============================================================================== --- maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java (original) +++ maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java Sun Apr 18 22:05:27 2010 @@ -38,6 +38,7 @@ import org.apache.maven.project.MavenPro import org.apache.maven.reporting.AbstractMavenReport; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.PathTool; +import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.StringUtils; /** @@ -186,6 +187,14 @@ public abstract class AbstractPmdReport private String sourceEncoding; /** + * The file encoding when writing non-HTML reports. + * + * @parameter expression="${outputEncoding}" default-value="${project.reporting.outputEncoding}" + * @since 2.5 + */ + private String outputEncoding; + + /** * The projects in the reactor for aggregation report. * * @parameter expression="${reactorProjects}" @@ -427,4 +436,15 @@ public abstract class AbstractPmdReport { return sourceEncoding; } + + /** + * Gets the effective reporting output files encoding. + * + * @return The effective reporting output file encoding, never <code>null</code>. + * @since 2.5 + */ + protected String getOutputEncoding() + { + return ( outputEncoding != null ) ? outputEncoding : ReaderFactory.UTF_8; + } } 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=935423&r1=935422&r2=935423&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 Sun Apr 18 22:05:27 2010 @@ -174,7 +174,7 @@ public class CpdReport targetDirectory.mkdirs(); File targetFile = new File( targetDirectory, "cpd." + format ); FileOutputStream tStream = new FileOutputStream( targetFile ); - writer = new OutputStreamWriter( tStream, "UTF-8" ); + writer = new OutputStreamWriter( tStream, getOutputEncoding() ); writer.write( buffer ); writer.close(); @@ -216,7 +216,7 @@ public class CpdReport Renderer renderer = null; if ( "xml".equals( format ) ) { - renderer = new XMLRenderer( "UTF-8" ); + renderer = new XMLRenderer( getOutputEncoding() ); } else if ( "csv".equals( format ) ) { 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=935423&r1=935422&r2=935423&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 Sun Apr 18 22:05:27 2010 @@ -311,7 +311,7 @@ public class PmdReport { File targetFile = new File( targetDirectory, "pmd." + format ); FileOutputStream tStream = new FileOutputStream( targetFile ); - writer = new OutputStreamWriter( tStream, "UTF-8" ); + writer = new OutputStreamWriter( tStream, getOutputEncoding() ); r.setWriter( writer ); r.start(); @@ -411,7 +411,7 @@ public class PmdReport Renderer renderer = null; if ( "xml".equals( format ) ) { - renderer = new PmdXMLRenderer( "UTF-8" ); + renderer = new PmdXMLRenderer( getOutputEncoding() ); } else if ( "txt".equals( format ) ) {