You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/04/06 16:49:44 UTC
svn commit: r762367 - in /maven/plugins/trunk/maven-remote-resources-plugin:
./ src/main/java/org/apache/maven/plugin/resources/remote/ src/main/mdo/
src/test/java/org/apache/maven/plugin/resources/remote/ src/test/resources/
Author: jvanzyl
Date: Mon Apr 6 14:49:43 2009
New Revision: 762367
URL: http://svn.apache.org/viewvc?rev=762367&view=rev
Log:
MRRESOURCES-36: ${project.build.sourceEncoding} not honoured
Submitted by: Christian Schulte
Added:
maven/plugins/trunk/maven-remote-resources-plugin/src/test/resources/ISO-8859-1.bin.vm (with props)
maven/plugins/trunk/maven-remote-resources-plugin/src/test/resources/UTF-8.bin.vm (with props)
Modified:
maven/plugins/trunk/maven-remote-resources-plugin/pom.xml
maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/BundleRemoteResourcesMojo.java
maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
maven/plugins/trunk/maven-remote-resources-plugin/src/main/mdo/remote-resources.mdo
maven/plugins/trunk/maven-remote-resources-plugin/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
Modified: maven/plugins/trunk/maven-remote-resources-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/pom.xml?rev=762367&r1=762366&r2=762367&view=diff
==============================================================================
--- maven/plugins/trunk/maven-remote-resources-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-remote-resources-plugin/pom.xml Mon Apr 6 14:49:43 2009
@@ -29,7 +29,7 @@
</parent>
<artifactId>maven-remote-resources-plugin</artifactId>
- <version>1.0.2-SNAPSHOT</version>
+ <version>1.1-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<name>Maven Remote Resources Plugin</name>
@@ -169,7 +169,7 @@
<goal>xsd</goal>
</goals>
<configuration>
- <version>1.0.0</version>
+ <version>1.1.0</version>
<models>
<model>src/main/mdo/remote-resources.mdo</model>
</models>
@@ -183,7 +183,7 @@
<goal>xpp3-reader</goal>
</goals>
<configuration>
- <version>1.0.0</version>
+ <version>1.1.0</version>
<models>
<model>src/main/mdo/remote-resources.mdo</model>
</models>
Modified: maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/BundleRemoteResourcesMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/BundleRemoteResourcesMojo.java?rev=762367&r1=762366&r2=762367&view=diff
==============================================================================
--- maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/BundleRemoteResourcesMojo.java (original)
+++ maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/BundleRemoteResourcesMojo.java Mon Apr 6 14:49:43 2009
@@ -83,6 +83,15 @@
*/
private String[] excludes;
+ /**
+ * Encoding of the bundle.
+ *
+ * @since 1.1
+ * @optional
+ * @parameter expression="${project.build.sourceEncoding}"
+ */
+ private String sourceEncoding;
+
public void execute()
throws MojoExecutionException
{
@@ -95,6 +104,7 @@
// so that velocity can easily process any resources inside the JAR that need to be processed.
RemoteResourcesBundle remoteResourcesBundle = new RemoteResourcesBundle();
+ remoteResourcesBundle.setSourceEncoding( sourceEncoding );
DirectoryScanner scanner = new DirectoryScanner();
Modified: maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java?rev=762367&r1=762366&r2=762367&view=diff
==============================================================================
--- maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java (original)
+++ maven/plugins/trunk/maven-remote-resources-plugin/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java Mon Apr 6 14:49:43 2009
@@ -19,12 +19,16 @@
* under the License.
*/
-import java.io.BufferedReader;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringReader;
import java.net.MalformedURLException;
@@ -298,11 +302,11 @@
* @readonly
*/
private ResourceManager locator;
-
-
+
+
/**
* Scope to include. An Empty string indicates all scopes (default).
- *
+ *
* @since 1.0
* @parameter expression="${includeScope}" default-value="runtime"
* @optional
@@ -311,16 +315,16 @@
/**
* Scope to exclude. An Empty string indicates no scopes (default).
- *
+ *
* @since 1.0
* @parameter expression="${excludeScope}" default-value=""
* @optional
*/
protected String excludeScope;
-
+
/**
* Comma separated list of Artifact names too exclude.
- *
+ *
* @since 1.0
* @optional
* @parameter expression="${excludeArtifactIds}" default-value=""
@@ -329,7 +333,7 @@
/**
* Comma separated list of Artifact names to include.
- *
+ *
* @since 1.0
* @optional
* @parameter expression="${includeArtifactIds}" default-value=""
@@ -338,7 +342,7 @@
/**
* Comma separated list of GroupId Names to exclude.
- *
+ *
* @since 1.0
* @optional
* @parameter expression="${excludeGroupIds}" default-value=""
@@ -347,7 +351,7 @@
/**
* Comma separated list of GroupIds to include.
- *
+ *
* @since 1.0
* @optional
* @parameter expression="${includeGroupIds}" default-value=""
@@ -356,7 +360,7 @@
/**
* If we should exclude transitive dependencies
- *
+ *
* @since 1.0
* @optional
* @parameter expression="${excludeTransitive}" default-value="false"
@@ -455,7 +459,7 @@
throws MojoExecutionException
{
List projects = new ArrayList();
-
+
// add filters in well known order, least specific to most specific
FilterArtifacts filter = new FilterArtifacts();
@@ -776,10 +780,30 @@
{
if ( doVelocity )
{
- PrintWriter writer = new PrintWriter( new FileWriter( f ) );
+ PrintWriter writer;
+ if ( bundle.getSourceEncoding() == null )
+ {
+ writer = new PrintWriter( new FileWriter( f ) );
+ }
+ else
+ {
+ writer = new PrintWriter( new OutputStreamWriter( new FileOutputStream( f ),
+ bundle.getSourceEncoding() ) );
+
+ }
+
try
{
- velocity.getEngine().mergeTemplate( bundleResource, context, writer );
+ if ( bundle.getSourceEncoding() == null )
+ {
+ velocity.getEngine().mergeTemplate( bundleResource, context, writer );
+ }
+ else
+ {
+ velocity.getEngine().mergeTemplate( bundleResource, bundle.getSourceEncoding(),
+ context, writer );
+
+ }
}
finally
{
@@ -799,31 +823,36 @@
projectResource + ".vm" );
if ( appendedResourceFile.exists() )
{
- PrintWriter writer = new PrintWriter( new FileWriter( f, true ) );
- FileReader freader = new FileReader( appendedResourceFile );
- BufferedReader breader = new BufferedReader( freader );
+ final InputStream in = new FileInputStream( appendedResourceFile );
+ final OutputStream append = new FileOutputStream( f, true );
try
{
- String line = breader.readLine();
-
- while ( line != null )
- {
- writer.println( line );
- line = breader.readLine();
- }
+ IOUtil.copy( in, append );
}
finally
{
- IOUtil.close(writer);
- IOUtil.close(breader);
+ IOUtil.close( in );
+ IOUtil.close( append );
}
- }
- else if ( appendedVmResourceFile.exists() )
+ }
+ else if ( appendedVmResourceFile.exists() )
{
- PrintWriter writer = new PrintWriter( new FileWriter( f, true ) );
+ PrintWriter writer;
FileReader freader = new FileReader( appendedVmResourceFile );
- try
+
+ if ( bundle.getSourceEncoding() == null )
+ {
+ writer = new PrintWriter( new FileWriter( f, true ) );
+ }
+ else
+ {
+ writer = new PrintWriter( new OutputStreamWriter( new FileOutputStream( f, true ),
+ bundle.getSourceEncoding() ) );
+
+ }
+
+ try
{
Velocity.init();
Velocity.evaluate( context, writer, "remote-resources", freader );
@@ -834,7 +863,7 @@
IOUtil.close(freader);
}
}
-
+
}
}
}
Modified: maven/plugins/trunk/maven-remote-resources-plugin/src/main/mdo/remote-resources.mdo
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/src/main/mdo/remote-resources.mdo?rev=762367&r1=762366&r2=762367&view=diff
==============================================================================
--- maven/plugins/trunk/maven-remote-resources-plugin/src/main/mdo/remote-resources.mdo (original)
+++ maven/plugins/trunk/maven-remote-resources-plugin/src/main/mdo/remote-resources.mdo Mon Apr 6 14:49:43 2009
@@ -33,12 +33,12 @@
<classes>
<class rootElement="true" xml.tagName="remoteResourcesBundle">
<name>RemoteResourcesBundle</name>
- <version>1.0.0</version>
+ <version>1.1.0</version>
<description>Root element of the remote-resources.xml file.</description>
<fields>
<field>
<name>remoteResources</name>
- <version>1.0.0</version>
+ <version>1.1.0</version>
<description><![CDATA[
Remote resources that are contained in a remote resources bundle.
]]></description>
@@ -47,6 +47,14 @@
<multiplicity>*</multiplicity>
</association>
</field>
+ <field>
+ <name>sourceEncoding</name>
+ <version>1.1.0</version>
+ <description><![CDATA[
+ Source encoding of the remote resources contained in the bundle.
+ ]]></description>
+ <type>String</type>
+ </field>
</fields>
</class>
</classes>
Modified: maven/plugins/trunk/maven-remote-resources-plugin/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java?rev=762367&r1=762366&r2=762367&view=diff
==============================================================================
--- maven/plugins/trunk/maven-remote-resources-plugin/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java (original)
+++ maven/plugins/trunk/maven-remote-resources-plugin/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java Mon Apr 6 14:49:43 2009
@@ -30,7 +30,9 @@
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
+import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
@@ -38,6 +40,7 @@
import java.util.Properties;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;
+import org.codehaus.plexus.util.IOUtil;
/**
@@ -90,6 +93,7 @@
throws Exception
{
buildResourceBundle( "default-createbundle",
+ null,
new String[] { "SIMPLE.txt" },
null );
}
@@ -117,6 +121,7 @@
File file = new File( repo.getBasedir() + "/" + path + ".jar" );
file.getParentFile().mkdirs();
buildResourceBundle( "default-simplebundles-create",
+ null,
new String[] { "SIMPLE.txt" },
file );
@@ -128,6 +133,88 @@
assertTrue( file.exists() );
}
+ public void testVelocityUTF8()
+ throws Exception
+ {
+ final MavenProjectResourcesStub project = createTestProject( "default-utf8" );
+ final ProcessRemoteResourcesMojo mojo = lookupProcessMojoWithSettings( project ,
+ new String[] {
+ "test:test:1.2"
+ } );
+
+ setupDefaultProject( project );
+
+ ArtifactRepository repo = (ArtifactRepository) getVariableValueFromObject( mojo, "localRepository" );
+ String path = repo.pathOf( new DefaultArtifact( "test",
+ "test",
+ VersionRange.createFromVersion( "1.2" ),
+ null,
+ "jar",
+ "",
+ new DefaultArtifactHandler() ) );
+
+ File file = new File( repo.getBasedir() + "/" + path + ".jar" );
+ file.getParentFile().mkdirs();
+ buildResourceBundle( "default-utf8-create",
+ "UTF-8",
+ new String[] { "UTF-8.bin.vm" },
+ file );
+
+ mojo.execute();
+
+ file = (File) getVariableValueFromObject( mojo, "outputDirectory" );
+ file = new File( file, "UTF-8.bin" );
+ assertTrue( file.exists() );
+
+ InputStream in = new FileInputStream( file );
+ byte[] data = IOUtil.toByteArray( in );
+ IOUtil.close( in );
+
+ byte[] expected = "\u00E4\u00F6\u00FC\u00C4\u00D6\u00DC\u00DF".getBytes( "UTF-8" );
+ assertTrue( Arrays.equals( expected, data ) );
+ }
+
+ public void testVelocityISO88591()
+ throws Exception
+ {
+ final MavenProjectResourcesStub project = createTestProject( "default-iso88591" );
+ final ProcessRemoteResourcesMojo mojo = lookupProcessMojoWithSettings( project ,
+ new String[] {
+ "test:test:1.3"
+ } );
+
+ setupDefaultProject( project );
+
+ ArtifactRepository repo = (ArtifactRepository) getVariableValueFromObject( mojo, "localRepository" );
+ String path = repo.pathOf( new DefaultArtifact( "test",
+ "test",
+ VersionRange.createFromVersion( "1.3" ),
+ null,
+ "jar",
+ "",
+ new DefaultArtifactHandler() ) );
+
+ File file = new File( repo.getBasedir() + "/" + path + ".jar" );
+ file.getParentFile().mkdirs();
+ buildResourceBundle( "default-iso88591-create",
+ "ISO-8859-1",
+ new String[] { "ISO-8859-1.bin.vm" },
+ file );
+
+ mojo.execute();
+
+ file = (File) getVariableValueFromObject( mojo, "outputDirectory" );
+ file = new File( file, "ISO-8859-1.bin" );
+ assertTrue( file.exists() );
+
+ InputStream in = new FileInputStream( file );
+ byte[] data = IOUtil.toByteArray( in );
+ IOUtil.close( in );
+
+ byte[] expected = "\u00E4\u00F6\u00FC\u00C4\u00D6\u00DC\u00DF".getBytes( "ISO-8859-1" );
+ assertTrue( Arrays.equals( expected, data ) );
+ }
+
public void testFilteredBundles()
throws Exception
{
@@ -151,6 +238,7 @@
File file = new File( repo.getBasedir() + "/" + path + ".jar" );
file.getParentFile().mkdirs();
buildResourceBundle( "default-filterbundles-create",
+ null,
new String[] { "FILTER.txt.vm" },
file );
@@ -169,6 +257,7 @@
}
protected void buildResourceBundle( String id,
+ String sourceEncoding,
String resourceNames[],
File jarName )
throws Exception
@@ -176,7 +265,7 @@
final MavenProjectResourcesStub project = createTestProject( id );
final File resourceDir = new File( project.getBasedir() + "/src/main/resources" );
- final BundleRemoteResourcesMojo mojo = lookupBundleMojoWithSettings( project , resourceDir );
+ final BundleRemoteResourcesMojo mojo = lookupBundleMojoWithSettings( project , resourceDir, sourceEncoding );
setupDefaultProject( project );
@@ -209,9 +298,10 @@
for ( int x = 0; x < resourceNames.length; x++ )
{
File resource = new File( resourceDir, resourceNames[x] );
- data = FileUtils.fileRead( resource );
+ InputStream in = new FileInputStream( resource );
jar.putNextEntry( new ZipEntry( resourceNames[x] ) );
- jar.write( data.getBytes() );
+ IOUtil.copy( in, jar );
+ IOUtil.close( in );
jar.closeEntry();
}
jar.close();
@@ -252,16 +342,17 @@
throws Exception
{
File resourceDir = new File( project.getBasedir() + "/src/main/resources" );
- return lookupBundleMojoWithSettings( project, resourceDir );
+ return lookupBundleMojoWithSettings( project, resourceDir, null );
}
protected BundleRemoteResourcesMojo lookupBundleMojoWithSettings( final MavenProject project,
- File resourceDir )
+ File resourceDir, String sourceEncoding )
throws Exception
{
final BundleRemoteResourcesMojo mojo = lookupBundleMojo();
setVariableValueToObject( mojo, "resourcesDirectory", resourceDir );
setVariableValueToObject( mojo, "outputDirectory", new File( project.getBuild().getOutputDirectory() ) );
+ setVariableValueToObject( mojo, "sourceEncoding", sourceEncoding );
return mojo;
}
Added: maven/plugins/trunk/maven-remote-resources-plugin/src/test/resources/ISO-8859-1.bin.vm
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/src/test/resources/ISO-8859-1.bin.vm?rev=762367&view=auto
==============================================================================
Binary file - no diff available.
Propchange: maven/plugins/trunk/maven-remote-resources-plugin/src/test/resources/ISO-8859-1.bin.vm
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: maven/plugins/trunk/maven-remote-resources-plugin/src/test/resources/UTF-8.bin.vm
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-remote-resources-plugin/src/test/resources/UTF-8.bin.vm?rev=762367&view=auto
==============================================================================
Binary file - no diff available.
Propchange: maven/plugins/trunk/maven-remote-resources-plugin/src/test/resources/UTF-8.bin.vm
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream