diff -ruN maven-resources-plugin.orig/src/main/java/org/apache/maven/plugin/resources/Native2AsciiWriter.java maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/Native2AsciiWriter.java --- maven-resources-plugin.orig/src/main/java/org/apache/maven/plugin/resources/Native2AsciiWriter.java 1970-01-01 09:00:00.000000000 +0900 +++ maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/Native2AsciiWriter.java 2006-09-13 20:54:40.502568000 +0900 @@ -0,0 +1,48 @@ +package org.apache.maven.plugin.resources; + +import java.io.FilterWriter; +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.Writer; +import java.io.*; + +/** + * FilterWriter for `native2ascii' command. + * + * @author Haruaki TAMADA + * @version 1.0 2006/09/11 + */ +public class Native2AsciiWriter extends FilterWriter{ + /** + * constructor + */ + public Native2AsciiWriter(Writer out){ + super(out); + } + + /** + * write encoded code (exclude ASCII code) + */ + public void write(char[] data, int offset, int length) throws IOException{ + StringBuffer sb = new StringBuffer(); + for(int i = 0; i < length; i++){ + int value = (int)data[i + offset]; + + if(value <= 0xff && (value & 0x80) == 0){ + sb.append(data[i + offset]); + } + else{ + sb.append("\\u"); + String characterCodeString = Integer.toString(value & 0xffffffff, 16); + for(int j = characterCodeString.length(); j < 4; j++){ + sb.append("0"); + } + sb.append(characterCodeString); + } + } + out.write(new String(sb).toCharArray()); + } +} + diff -ruN maven-resources-plugin.orig/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java --- maven-resources-plugin.orig/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java 2006-09-13 20:53:26.025475200 +0900 +++ maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java 2006-09-13 20:57:36.796065600 +0900 @@ -61,6 +61,11 @@ private String encoding; /** + * @parameter + */ + private boolean native2ascii; + + /** * The output directory into which to copy the resources. * * @parameter expression="${project.build.outputDirectory}" @@ -221,7 +226,7 @@ private void copyFile( File from, File to, boolean filtering ) throws IOException { - if ( !filtering ) + if ( !filtering && !native2ascii ) { if ( to.lastModified() < from.lastModified() ) { @@ -250,23 +255,29 @@ fileWriter = new OutputStreamWriter( outstream, encoding ); } - - // support ${token} - Reader reader = new InterpolationFilterReader( fileReader, filterProperties, "${", "}" ); + if ( native2ascii ) + { + fileWriter = new Native2AsciiWriter( fileWriter ); + } - // support @token@ - reader = new InterpolationFilterReader( reader, filterProperties, "@", "@" ); + if ( filtering ) + { + // support ${token} + fileReader = new InterpolationFilterReader( fileReader, filterProperties, "${", "}" ); - boolean isPropertiesFile = false; + // support @token@ + fileReader = new InterpolationFilterReader( fileReader, filterProperties, "@", "@" ); - if ( to.isFile() && to.getName().endsWith( ".properties" ) ) - { - isPropertiesFile = true; - } + boolean isPropertiesFile = false; - reader = new InterpolationFilterReader( reader, new ReflectionProperties( project, isPropertiesFile ), "${", "}" ); + if ( to.isFile() && to.getName().endsWith( ".properties" ) ) + { + isPropertiesFile = true; + } - IOUtil.copy( reader, fileWriter ); + fileReader = new InterpolationFilterReader( fileReader, new ReflectionProperties( project, isPropertiesFile ), "${", "}" ); + } + IOUtil.copy( fileReader, fileWriter ); } finally {