Skip to content

Commit 530c2ee

Browse files
committed
Added overload with encoding
1 parent e6634b2 commit 530c2ee

File tree

7 files changed

+65
-3
lines changed

7 files changed

+65
-3
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
<dependency>
5757
<groupId>org.codehaus.plexus</groupId>
5858
<artifactId>plexus-io</artifactId>
59-
<version>2.5</version>
59+
<version>2.5.1-SNAPSHOT</version>
6060
</dependency>
6161
<dependency>
6262
<groupId>org.apache.commons</groupId>

src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java

+15-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.io.IOException;
2424
import java.io.InputStream;
2525
import java.lang.reflect.UndeclaredThrowableException;
26+
import java.nio.charset.Charset;
2627
import java.util.ArrayList;
2728
import java.util.HashMap;
2829
import java.util.HashSet;
@@ -44,6 +45,7 @@
4445
import org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributes;
4546
import org.codehaus.plexus.components.io.functions.ResourceAttributeSupplier;
4647
import org.codehaus.plexus.components.io.resources.AbstractPlexusIoResourceCollection;
48+
import org.codehaus.plexus.components.io.resources.EncodingSupported;
4749
import org.codehaus.plexus.components.io.resources.PlexusIoArchivedResourceCollection;
4850
import org.codehaus.plexus.components.io.resources.PlexusIoFileResourceCollection;
4951
import org.codehaus.plexus.components.io.resources.PlexusIoResource;
@@ -694,7 +696,7 @@ public Map getDirs()
694696
}
695697
}
696698

697-
protected PlexusIoResourceCollection asResourceCollection( final ArchivedFileSet fileSet )
699+
protected PlexusIoResourceCollection asResourceCollection( final ArchivedFileSet fileSet, Charset charset )
698700
throws ArchiverException
699701
{
700702
final File archiveFile = fileSet.getArchive();
@@ -710,6 +712,10 @@ protected PlexusIoResourceCollection asResourceCollection( final ArchivedFileSet
710712
"Error adding archived file-set. PlexusIoResourceCollection not found for: " + archiveFile, e );
711713
}
712714

715+
if (resources instanceof EncodingSupported ) {
716+
((EncodingSupported)resources).setEncoding( charset );
717+
718+
}
713719
if ( resources instanceof PlexusIoArchivedResourceCollection )
714720
{
715721
( (PlexusIoArchivedResourceCollection) resources ).setFile( fileSet.getArchive() );
@@ -764,7 +770,14 @@ private void doAddResource(Object item){
764770
public void addArchivedFileSet( final ArchivedFileSet fileSet )
765771
throws ArchiverException
766772
{
767-
final PlexusIoResourceCollection resourceCollection = asResourceCollection( fileSet );
773+
final PlexusIoResourceCollection resourceCollection = asResourceCollection( fileSet, null );
774+
addResources( resourceCollection );
775+
}
776+
777+
public void addArchivedFileSet( final ArchivedFileSet fileSet, Charset charset )
778+
throws ArchiverException
779+
{
780+
final PlexusIoResourceCollection resourceCollection = asResourceCollection( fileSet, charset );
768781
addResources( resourceCollection );
769782
}
770783

src/main/java/org/codehaus/plexus/archiver/Archiver.java

+20
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import java.io.File;
2424
import java.io.IOException;
25+
import java.nio.charset.Charset;
2526
import java.util.HashSet;
2627
import java.util.Map;
2728
import java.util.Set;
@@ -177,6 +178,25 @@ void addArchivedFileSet( @Nonnull File archiveFile, String prefix, String[] incl
177178
void addArchivedFileSet( ArchivedFileSet fileSet )
178179
throws ArchiverException;
179180

181+
182+
/**
183+
* Adds the given archive file set to the archive. This method is basically obsoleting
184+
* {@link #addArchivedFileSet(File)}, {@link #addArchivedFileSet(File, String[], String[])}, and
185+
* {@link #addArchivedFileSet(File, String, String[], String[])}. However, as these methods are in widespread use,
186+
* they cannot easily be made deprecated.
187+
*
188+
* @param charset the encoding to use, particularly useful to specific non-standard filename encodings
189+
* for some kinds of archives (for instance zip files)
190+
*
191+
* Stream transformers are supported on this method
192+
*
193+
* @param fileSet the fileSet to add
194+
* @param charset
195+
* @since 1.0-alpha-9
196+
*/
197+
void addArchivedFileSet( ArchivedFileSet fileSet, Charset charset )
198+
throws ArchiverException;
199+
180200
/**
181201
* Adds the given resource collection to the archive.
182202
*

src/main/java/org/codehaus/plexus/archiver/diags/DelgatingArchiver.java

+7
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import javax.annotation.Nonnull;
2929
import java.io.File;
3030
import java.io.IOException;
31+
import java.nio.charset.Charset;
3132
import java.util.Map;
3233

3334
@SuppressWarnings( { "UnusedDeclaration", "deprecation" } )
@@ -134,6 +135,12 @@ public void addArchivedFileSet( ArchivedFileSet fileSet )
134135
target.addArchivedFileSet( fileSet );
135136
}
136137

138+
public void addArchivedFileSet( ArchivedFileSet fileSet, Charset charset )
139+
throws ArchiverException
140+
{
141+
target.addArchivedFileSet( fileSet, charset );
142+
}
143+
137144
public void addResource( PlexusIoResource resource, String destFileName, int permissions )
138145
throws ArchiverException
139146
{

src/main/java/org/codehaus/plexus/archiver/diags/DryRunArchiver.java

+8
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import javax.annotation.Nonnull;
3131
import java.io.File;
3232
import java.io.IOException;
33+
import java.nio.charset.Charset;
3334

3435
/**
3536
* A dry run archiver that does nothing. Some methods fall through to the underlying
@@ -197,6 +198,13 @@ public void addArchivedFileSet( final ArchivedFileSet fileSet )
197198
debug( "DRY RUN: Skipping delegated call to: " + getMethodName() );
198199
}
199200

201+
@Override
202+
public void addArchivedFileSet( ArchivedFileSet fileSet, Charset charset )
203+
throws ArchiverException
204+
{
205+
debug( "DRY RUN: Skipping delegated call to: " + getMethodName() );
206+
}
207+
200208
/**
201209
* {@inheritDoc}
202210
*/

src/main/java/org/codehaus/plexus/archiver/diags/NoOpArchiver.java

+7
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import javax.annotation.Nonnull;
2929
import java.io.File;
3030
import java.io.IOException;
31+
import java.nio.charset.Charset;
3132
import java.util.Collections;
3233
import java.util.Map;
3334

@@ -130,6 +131,12 @@ public void addArchivedFileSet( ArchivedFileSet fileSet )
130131

131132
}
132133

134+
public void addArchivedFileSet( ArchivedFileSet fileSet, Charset charset )
135+
throws ArchiverException
136+
{
137+
138+
}
139+
133140
public void addResource( PlexusIoResource resource, String destFileName, int permissions )
134141
throws ArchiverException
135142
{

src/main/java/org/codehaus/plexus/archiver/diags/TrackingArchiver.java

+7
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import javax.annotation.Nonnull;
2828
import java.io.File;
2929
import java.io.IOException;
30+
import java.nio.charset.Charset;
3031
import java.util.ArrayList;
3132
import java.util.HashMap;
3233
import java.util.List;
@@ -138,6 +139,12 @@ public void addArchivedFileSet( final ArchivedFileSet fileSet )
138139
added.add( new Addition( fileSet, null, null, null, -1 ) );
139140
}
140141

142+
public void addArchivedFileSet( final ArchivedFileSet fileSet, Charset charset )
143+
throws ArchiverException
144+
{
145+
added.add( new Addition( fileSet, null, null, null, -1 ) );
146+
}
147+
141148
public void addResource( final PlexusIoResource resource, final String destFileName, final int permissions )
142149
throws ArchiverException
143150
{

0 commit comments

Comments
 (0)