Skip to content

Commit f9869e2

Browse files
committed
[MASSEMBLY-748] ability so specifiy encoding for unpackOptions
git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1674674 13f79535-47bb-0310-9956-ffa450edef68
1 parent 09d8ec1 commit f9869e2

File tree

10 files changed

+79
-27
lines changed

10 files changed

+79
-27
lines changed

pom.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ under the License.
5757
</distributionManagement>
5858

5959
<properties>
60-
<mdoVersion>1.1.2</mdoVersion>
60+
<mdoVersion>1.1.3</mdoVersion>
6161
<mavenArchiverVersion>2.5</mavenArchiverVersion>
6262
<mavenFilteringVersion>1.3</mavenFilteringVersion>
6363
<mavenVersion>2.2.1</mavenVersion>
@@ -124,7 +124,7 @@ under the License.
124124
<dependency>
125125
<groupId>org.codehaus.plexus</groupId>
126126
<artifactId>plexus-archiver</artifactId>
127-
<version>2.9.1</version>
127+
<version>2.10</version>
128128
</dependency>
129129
<dependency>
130130
<groupId>org.apache.maven.shared</groupId>
@@ -149,7 +149,7 @@ under the License.
149149
<dependency>
150150
<groupId>org.codehaus.plexus</groupId>
151151
<artifactId>plexus-io</artifactId>
152-
<version>2.4.1</version>
152+
<version>2.6</version>
153153
</dependency>
154154
<dependency>
155155
<groupId>org.apache.maven</groupId>

src/main/java/org/apache/maven/plugin/assembly/archive/archiver/AssemblyProxyArchiver.java

+20
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import java.io.FileInputStream;
4242
import java.io.IOException;
4343
import java.io.InputStream;
44+
import java.nio.charset.Charset;
4445
import java.util.ArrayList;
4546
import java.util.Arrays;
4647
import java.util.List;
@@ -661,6 +662,25 @@ public void addArchivedFileSet( final ArchivedFileSet fileSet )
661662
}
662663
}
663664

665+
public void addArchivedFileSet( ArchivedFileSet archivedFileSet, Charset charset )
666+
throws ArchiverException
667+
{
668+
inPublicApi.set( Boolean.TRUE );
669+
try
670+
{
671+
final PrefixedArchivedFileSet fs = new PrefixedArchivedFileSet( archivedFileSet, rootPrefix, selectors );
672+
673+
debug( "Adding archived file-set in: " + archivedFileSet.getArchive() + " to archive location: "
674+
+ fs.getPrefix() );
675+
676+
delegate.addArchivedFileSet( fs, charset );
677+
}
678+
finally
679+
{
680+
inPublicApi.set( null );
681+
}
682+
}
683+
664684
/**
665685
* {@inheritDoc}
666686
*/

src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ void addModuleArtifact( final Artifact artifact, final MavenProject project, fin
339339
+ "Please ensure the package phase is run before the assembly is generated." );
340340
}
341341

342-
final AddArtifactTask task = new AddArtifactTask( artifact, getLogger() );
342+
final AddArtifactTask task = new AddArtifactTask( artifact, getLogger(), null );
343343

344344
task.setFileNameMapping( binaries.getOutputFileNameMapping() );
345345
task.setOutputDirectory( binaries.getOutputDirectory() );

src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java

+10-5
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737

3838
import java.io.File;
3939
import java.io.IOException;
40+
import java.nio.charset.Charset;
4041
import java.util.List;
4142

4243
import static org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils.artifactProjectInterpolator;
@@ -76,16 +77,20 @@ public class AddArtifactTask
7677

7778
private final InputStreamTransformer transformer;
7879

79-
public AddArtifactTask( final Artifact artifact, final Logger logger, InputStreamTransformer transformer )
80+
private final Charset encoding;
81+
82+
public AddArtifactTask( final Artifact artifact, final Logger logger, InputStreamTransformer transformer,
83+
Charset encoding )
8084
{
8185
this.artifact = artifact;
8286
this.logger = logger;
8387
this.transformer = transformer;
88+
this.encoding = encoding;
8489
}
8590

86-
public AddArtifactTask( final Artifact artifact, final Logger logger )
91+
public AddArtifactTask( final Artifact artifact, final Logger logger, Charset encoding )
8792
{
88-
this( artifact, logger, null );
93+
this( artifact, logger, null, encoding );
8994
}
9095

9196
public void execute( final Archiver archiver, final AssemblerConfigurationSource configSource )
@@ -229,7 +234,7 @@ else if ( artifactFile.isDirectory() )
229234
afs.setExcludes( excludesArray );
230235
afs.setPrefix( outputLocation );
231236
afs.setStreamTransformer( transformer );
232-
archiver.addArchivedFileSet( afs );
237+
archiver.addArchivedFileSet( afs, encoding );
233238
}
234239
}
235240
catch ( final ArchiverException e )
@@ -246,7 +251,7 @@ private File moveArtifactSomewhereElse( AssemblerConfigurationSource configSourc
246251
final File tempArtifactFile = new File( tempRoot, artifact.getFile().getName() );
247252

248253
logger.warn( "Artifact: " + artifact.getId() + " references the same file as the assembly destination file. "
249-
+ "Moving it to a temporary location for inclusion." );
254+
+ "Moving it to a temporary location for inclusion." );
250255
try
251256
{
252257
FileUtils.copyFile( artifact.getFile(), tempArtifactFile );

src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.codehaus.plexus.logging.Logger;
4444

4545
import java.io.File;
46+
import java.nio.charset.Charset;
4647
import java.util.ArrayList;
4748
import java.util.Collections;
4849
import java.util.LinkedHashSet;
@@ -222,7 +223,9 @@ private void addNormalArtifact( final DependencySet dependencySet, final Artifac
222223
{
223224
logger.debug( "Adding dependency artifact " + depArtifact.getId() + "." );
224225

225-
final AddArtifactTask task = new AddArtifactTask( depArtifact, logger, fileSetTransformers );
226+
String encoding = isUnpackWithOptions( dependencySet ) ? dependencySet.getUnpackOptions().getEncoding() : null;
227+
Charset charset = encoding != null ? Charset.forName( encoding ) : null;
228+
final AddArtifactTask task = new AddArtifactTask( depArtifact, logger, fileSetTransformers, charset );
226229

227230
task.setProject( depProject );
228231
task.setModuleProject( moduleProject );

src/main/mdo/component.mdo

+13-1
Original file line numberDiff line numberDiff line change
@@ -1255,7 +1255,19 @@
12551255
metadata files, should be used when calculating the files affected by this set.
12561256
For backward compatibility, the default value is true. (Since 2.2)
12571257
</description>
1258-
</field>
1258+
</field>
1259+
<field>
1260+
<name>encoding</name>
1261+
<version>1.1.3+</version>
1262+
<type>String</type>
1263+
<description>
1264+
<![CDATA[
1265+
Allows to specify the encoding to use when unpacking archives, for unarchivers
1266+
that support specifying encoding. If unspecified, archiver default will be used.
1267+
Archiver defaults generally represent sane (modern) values.
1268+
]]>
1269+
</description>
1270+
</field>
12591271
</fields>
12601272
</class>
12611273
<class>

src/main/mdo/descriptor.mdo

+12
Original file line numberDiff line numberDiff line change
@@ -1366,6 +1366,18 @@
13661366
For backward compatibility, the default value is true. (Since 2.2)
13671367
</description>
13681368
</field>
1369+
<field>
1370+
<name>encoding</name>
1371+
<version>1.1.3+</version>
1372+
<type>String</type>
1373+
<description>
1374+
<![CDATA[
1375+
Allows to specify the encoding to use when unpacking archives, for unarchivers
1376+
that support specifying encoding. If unspecified, archiver default will be used.
1377+
Archiver defaults generally represent sane (modern) values.
1378+
]]>
1379+
</description>
1380+
</field>
13691381
</fields>
13701382
</class>
13711383
<class>

src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java

+12-14
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
* under the License.
2020
*/
2121

22+
import junit.framework.TestCase;
2223
import org.apache.maven.artifact.Artifact;
2324
import org.apache.maven.model.Model;
2425
import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
@@ -32,14 +33,13 @@
3233
import org.codehaus.plexus.archiver.ArchiverException;
3334
import org.codehaus.plexus.logging.Logger;
3435
import org.codehaus.plexus.logging.console.ConsoleLogger;
36+
import org.easymock.classextension.EasyMockSupport;
3537

3638
import java.io.File;
3739
import java.io.IOException;
40+
import java.nio.charset.Charset;
3841
import java.util.Arrays;
3942

40-
import junit.framework.TestCase;
41-
import org.easymock.classextension.EasyMockSupport;
42-
4343
import static org.easymock.EasyMock.anyObject;
4444

4545
public class AddArtifactTaskTest
@@ -78,7 +78,7 @@ public void testShouldAddArchiveFileWithoutUnpacking()
7878
mac.expectGetDestFile( new File( "junk" ) );
7979
mac.expectAddFile( artifactFile, outputLocation );
8080
mac.expectInterpolators();
81-
81+
8282
mockManager.replayAll();
8383

8484
AddArtifactTask task = createTask( artifactMock.getArtifact() );
@@ -108,7 +108,8 @@ public void testShouldAddArchiveFileWithDefaultOutputLocation()
108108
mac.expectInterpolators();
109109
mockManager.replayAll();
110110

111-
AddArtifactTask task = new AddArtifactTask( mock.getArtifact(), new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
111+
AddArtifactTask task =
112+
new AddArtifactTask( mock.getArtifact(), new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), null );
112113
task.setOutputDirectory( outputDir );
113114
task.setFileNameMapping( new DependencySet().getOutputFileNameMapping() );
114115

@@ -126,7 +127,7 @@ public void testShouldAddArchiveFileWithDefaultOutputLocation()
126127

127128
private AddArtifactTask createTask( Artifact artifact )
128129
{
129-
AddArtifactTask task = new AddArtifactTask( artifact, new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
130+
AddArtifactTask task = new AddArtifactTask( artifact, new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), null );
130131

131132
task.setFileNameMapping( "artifact" );
132133

@@ -139,8 +140,6 @@ public void testShouldAddArchiveFileWithUnpack()
139140
mac.expectModeChange( -1, -1, -1, -1, 1 );
140141
mac.expectInterpolators();
141142

142-
143-
144143
ArtifactMock artifactMock = new ArtifactMock( mockManager, "group", "artifact", "version", "jar", false );
145144
File artifactFile = artifactMock.setNewFile();
146145

@@ -149,8 +148,9 @@ public void testShouldAddArchiveFileWithUnpack()
149148
mac.expectGetDestFile( new File( "junk" ) );
150149
try
151150
{
152-
// mac.archiver.addArchivedFileSet( artifactFile, outputLocation, AddArtifactTask.DEFAULT_INCLUDES_ARRAY, null );
153-
mac.archiver.addArchivedFileSet((ArchivedFileSet) anyObject());
151+
// mac.archiver.addArchivedFileSet( artifactFile, outputLocation, AddArtifactTask.DEFAULT_INCLUDES_ARRAY,
152+
// null );
153+
mac.archiver.addArchivedFileSet( (ArchivedFileSet) anyObject(), (Charset) anyObject() );
154154
}
155155
catch ( ArchiverException e )
156156
{
@@ -177,8 +177,6 @@ public void testShouldAddArchiveFileWithUnpackAndModes()
177177
mac.expectModeChange( -1, -1, directoryMode, fileMode, 2 );
178178
mac.expectInterpolators();
179179

180-
181-
182180
// mac.expectIsSnapshot( false );
183181

184182
String outputLocation = "";
@@ -189,7 +187,7 @@ public void testShouldAddArchiveFileWithUnpackAndModes()
189187
mac.expectGetDestFile( new File( "junk" ) );
190188
try
191189
{
192-
mac.archiver.addArchivedFileSet((ArchivedFileSet) anyObject());
190+
mac.archiver.addArchivedFileSet( (ArchivedFileSet) anyObject(), (Charset) anyObject() );
193191
}
194192
catch ( ArchiverException e )
195193
{
@@ -201,7 +199,7 @@ public void testShouldAddArchiveFileWithUnpackAndModes()
201199
AddArtifactTask task = createTask( artifactMock.getArtifact() );
202200

203201
task.setUnpack( true );
204-
202+
205203
task.setDirectoryMode( directoryMode );
206204
task.setFileMode( fileMode );
207205

src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
*/
2121

2222
import java.io.File;
23+
import java.nio.charset.Charset;
2324
import java.util.LinkedHashMap;
2425
import java.util.List;
2526
import java.util.Set;
@@ -103,7 +104,7 @@ public void expectAddArchivedFileSet()
103104
{
104105
archiver.addArchivedFileSet( (File)anyObject(), (String)anyObject(), (String[])anyObject(), (String[])anyObject() );
105106
EasyMock.expectLastCall().anyTimes();
106-
archiver.addArchivedFileSet((ArchivedFileSet) anyObject());
107+
archiver.addArchivedFileSet((ArchivedFileSet) anyObject(), (Charset) anyObject() );
107108
EasyMock.expectLastCall().anyTimes();
108109

109110
}

src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
*/
2121

2222
import java.io.File;
23+
import java.nio.charset.Charset;
2324
import java.util.LinkedHashMap;
2425
import java.util.List;
2526
import java.util.Set;
@@ -99,7 +100,7 @@ public void expectAddArchivedFileSet()
99100
archiver.addArchivedFileSet( (File) anyObject(), (String) anyObject(), (String[]) anyObject(),
100101
(String[]) anyObject() );
101102
EasyMock.expectLastCall().anyTimes();
102-
archiver.addArchivedFileSet( (ArchivedFileSet)anyObject() );
103+
archiver.addArchivedFileSet( (ArchivedFileSet)anyObject(), (Charset) anyObject() );
103104
EasyMock.expectLastCall().anyTimes();
104105

105106
}

0 commit comments

Comments
 (0)