Skip to content

Commit b4e6875

Browse files
committed
Added resolving of resource
1 parent 09d3b40 commit b4e6875

File tree

6 files changed

+79
-73
lines changed

6 files changed

+79
-73
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
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.3.2</version>
59+
<version>2.3.3</version>
6060
</dependency>
6161
<dependency>
6262
<groupId>org.apache.commons</groupId>

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

Lines changed: 56 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -258,30 +258,30 @@ public void setIncludeEmptyDirs( final boolean includeEmptyDirs )
258258
public void addDirectory( @Nonnull final File directory )
259259
throws ArchiverException
260260
{
261-
addFileSet( fileSet( directory ).prefixed( "" )
262-
.includeExclude( null, null ).includeEmptyDirs( includeEmptyDirs ) );
261+
addFileSet(
262+
fileSet( directory ).prefixed( "" ).includeExclude( null, null ).includeEmptyDirs( includeEmptyDirs ) );
263263
}
264264

265265
public void addDirectory( @Nonnull final File directory, final String prefix )
266266
throws ArchiverException
267267
{
268-
addFileSet( fileSet( directory ).prefixed( prefix )
269-
.includeExclude( null, null ).includeEmptyDirs( includeEmptyDirs ) );
268+
addFileSet(
269+
fileSet( directory ).prefixed( prefix ).includeExclude( null, null ).includeEmptyDirs( includeEmptyDirs ) );
270270
}
271271

272272
public void addDirectory( @Nonnull final File directory, final String[] includes, final String[] excludes )
273273
throws ArchiverException
274274
{
275-
addFileSet( fileSet( directory ).prefixed( "" )
276-
.includeExclude( includes, excludes ).includeEmptyDirs( includeEmptyDirs ) );
275+
addFileSet( fileSet( directory ).prefixed( "" ).includeExclude( includes, excludes ).includeEmptyDirs(
276+
includeEmptyDirs ) );
277277
}
278278

279279
public void addDirectory( @Nonnull final File directory, final String prefix, final String[] includes,
280280
final String[] excludes )
281281
throws ArchiverException
282282
{
283-
addFileSet( fileSet( directory ).prefixed( prefix )
284-
.includeExclude( includes, excludes ).includeEmptyDirs( includeEmptyDirs ) );
283+
addFileSet( fileSet( directory ).prefixed( prefix ).includeExclude( includes, excludes ).includeEmptyDirs(
284+
includeEmptyDirs ) );
285285
}
286286

287287
public void addFileSet( @Nonnull final FileSet fileSet )
@@ -300,7 +300,7 @@ public void addFileSet( @Nonnull final FileSet fileSet )
300300

301301
// The PlexusIoFileResourceCollection contains platform-specific File.separatorChar which
302302
// is an interesting cause of grief, see PLXCOMP-192
303-
final PlexusIoFileResourceCollection collection = new PlexusIoFileResourceCollection( );
303+
final PlexusIoFileResourceCollection collection = new PlexusIoFileResourceCollection();
304304
collection.setFollowingSymLinks( !isSymlinkSupported() );
305305

306306
collection.setIncludes( fileSet.getIncludes() );
@@ -328,8 +328,7 @@ public void addFileSet( @Nonnull final FileSet fileSet )
328328

329329
private boolean isSymlinkSupported()
330330
{
331-
return Os.isFamily( Os.FAMILY_UNIX ) &&
332-
Java7Reflector.isAtLeastJava7();
331+
return Os.isFamily( Os.FAMILY_UNIX ) && Java7Reflector.isAtLeastJava7();
333332
}
334333

335334
public void addFile( @Nonnull final File inputFile, @Nonnull final String destFileName )
@@ -340,22 +339,22 @@ public void addFile( @Nonnull final File inputFile, @Nonnull final String destFi
340339
addFile( inputFile, destFileName, fileMode );
341340
}
342341

343-
public void addSymlink(String symlinkName, String symlinkDestination)
342+
public void addSymlink( String symlinkName, String symlinkDestination )
344343
throws ArchiverException
345344
{
346345
final int fileMode = getOverrideFileMode();
347346

348-
addSymlink(symlinkName, fileMode, symlinkDestination);
347+
addSymlink( symlinkName, fileMode, symlinkDestination );
349348
}
350349

351-
public void addSymlink(String symlinkName, int permissions, String symlinkDestination)
350+
public void addSymlink( String symlinkName, int permissions, String symlinkDestination )
352351
throws ArchiverException
353352
{
354353
resources.add( ArchiveEntry.createSymlinkEntry( symlinkName, permissions, symlinkDestination ) );
355354
}
356355

357356
protected ArchiveEntry asArchiveEntry( @Nonnull final PlexusIoResource resource, final String destFileName,
358-
final int permissions, PlexusIoResourceCollection collection)
357+
final int permissions, PlexusIoResourceCollection collection )
359358
throws ArchiverException
360359
{
361360
if ( !resource.isExisting() )
@@ -377,27 +376,20 @@ protected ArchiveEntry asArchiveEntry( final PlexusIoResourceCollection collecti
377376
final PlexusIoResource resource )
378377
throws ArchiverException
379378
{
380-
try
379+
final String destFileName = collection.getName( resource );
380+
381+
int permissions = -1;
382+
if ( resource instanceof PlexusIoResourceWithAttributes )
381383
{
382-
final String destFileName = collection.getName( resource );
384+
final PlexusIoResourceAttributes attrs = ( (PlexusIoResourceWithAttributes) resource ).getAttributes();
383385

384-
int permissions = -1;
385-
if ( resource instanceof PlexusIoResourceWithAttributes )
386+
if ( attrs != null )
386387
{
387-
final PlexusIoResourceAttributes attrs = ( (PlexusIoResourceWithAttributes) resource ).getAttributes();
388-
389-
if ( attrs != null )
390-
{
391-
permissions = attrs.getOctalMode();
392-
}
388+
permissions = attrs.getOctalMode();
393389
}
394-
395-
return asArchiveEntry( resource, destFileName, permissions, collection );
396-
}
397-
catch ( final IOException e )
398-
{
399-
throw new ArchiverException( e.getMessage(), e );
400390
}
391+
392+
return asArchiveEntry( resource, destFileName, permissions, collection );
401393
}
402394

403395
public void addResource( final PlexusIoResource resource, final String destFileName, final int permissions )
@@ -457,7 +449,7 @@ public void addFile( @Nonnull final File inputFile, @Nonnull String destFileName
457449
}
458450
}
459451

460-
@Nonnull
452+
@Nonnull
461453
public ResourceIterator getResources()
462454
throws ArchiverException
463455
{
@@ -559,8 +551,8 @@ else if ( Archiver.DUPLICATES_FAIL.equals( duplicateBehavior ) )
559551
private boolean throwIllegalResourceType( Object o )
560552
{
561553
throw new IllegalStateException(
562-
"An invalid resource of type: " + o.getClass().getName()
563-
+ " was added to archiver: " + getClass().getName() );
554+
"An invalid resource of type: " + o.getClass().getName() + " was added to archiver: "
555+
+ getClass().getName() );
564556
}
565557

566558
public ArchiveEntry next()
@@ -585,11 +577,11 @@ public void remove()
585577
};
586578
}
587579

588-
public Map<String,ArchiveEntry> getFiles()
580+
public Map<String, ArchiveEntry> getFiles()
589581
{
590582
try
591583
{
592-
final Map<String,ArchiveEntry> map = new HashMap<String,ArchiveEntry>();
584+
final Map<String, ArchiveEntry> map = new HashMap<String, ArchiveEntry>();
593585
for ( final ResourceIterator iter = getResources(); iter.hasNext(); )
594586
{
595587
final ArchiveEntry entry = iter.next();
@@ -685,10 +677,11 @@ protected PlexusIoResourceCollection asResourceCollection( final ArchivedFileSet
685677
+ resources.getClass().getName() );
686678
}
687679

688-
if (resources instanceof AbstractPlexusIoResourceCollection ){
689-
((AbstractPlexusIoResourceCollection)resources).setStreamTransformer( fileSet.getStreamTransformer() );
680+
if ( resources instanceof AbstractPlexusIoResourceCollection )
681+
{
682+
( (AbstractPlexusIoResourceCollection) resources ).setStreamTransformer( fileSet.getStreamTransformer() );
690683
}
691-
final PlexusIoProxyResourceCollection proxy = new PlexusIoProxyResourceCollection(resources);
684+
final PlexusIoProxyResourceCollection proxy = new PlexusIoProxyResourceCollection( resources );
692685

693686
proxy.setExcludes( fileSet.getExcludes() );
694687
proxy.setIncludes( fileSet.getIncludes() );
@@ -718,7 +711,7 @@ protected PlexusIoResourceCollection asResourceCollection( final ArchivedFileSet
718711
public void addResources( final PlexusIoResourceCollection collection )
719712
throws ArchiverException
720713
{
721-
resources.add(collection);
714+
resources.add( collection );
722715
}
723716

724717
public void addArchivedFileSet( final ArchivedFileSet fileSet )
@@ -736,10 +729,8 @@ public void addArchivedFileSet( @Nonnull final File archiveFile, final String pr
736729
throws ArchiverException
737730
{
738731
addArchivedFileSet(
739-
archivedFileSet( archiveFile )
740-
.prefixed( prefix )
741-
.includeExclude( includes, excludes )
742-
.includeEmptyDirs( includeEmptyDirs ) );
732+
archivedFileSet( archiveFile ).prefixed( prefix ).includeExclude( includes, excludes ).includeEmptyDirs(
733+
includeEmptyDirs ) );
743734
}
744735

745736
/**
@@ -748,10 +739,7 @@ public void addArchivedFileSet( @Nonnull final File archiveFile, final String pr
748739
public void addArchivedFileSet( @Nonnull final File archiveFile, final String prefix )
749740
throws ArchiverException
750741
{
751-
addArchivedFileSet(
752-
archivedFileSet( archiveFile )
753-
.prefixed( prefix )
754-
.includeEmptyDirs( includeEmptyDirs ) );
742+
addArchivedFileSet( archivedFileSet( archiveFile ).prefixed( prefix ).includeEmptyDirs( includeEmptyDirs ) );
755743
}
756744

757745
/**
@@ -761,9 +749,7 @@ public void addArchivedFileSet( @Nonnull final File archiveFile, final String[]
761749
throws ArchiverException
762750
{
763751
addArchivedFileSet(
764-
archivedFileSet( archiveFile )
765-
.includeExclude( includes, excludes )
766-
.includeEmptyDirs( includeEmptyDirs ) );
752+
archivedFileSet( archiveFile ).includeExclude( includes, excludes ).includeEmptyDirs( includeEmptyDirs ) );
767753
}
768754

769755
/**
@@ -804,7 +790,7 @@ public void setForced( final boolean forced )
804790
this.forced = forced;
805791
}
806792

807-
public void setArchiveFilters(final List filters)
793+
public void setArchiveFilters( final List filters )
808794
{
809795
filterSupport = new FilterSupport( filters, getLogger() );
810796
}
@@ -913,9 +899,10 @@ protected void runArchiveFinalizers()
913899
{
914900
if ( finalizers != null )
915901
{
916-
for (final ArchiveFinalizer finalizer : finalizers) {
917-
finalizer.finalizeArchiveCreation(this);
918-
}
902+
for ( final ArchiveFinalizer finalizer : finalizers )
903+
{
904+
finalizer.finalizeArchiveCreation( this );
905+
}
919906
}
920907
}
921908

@@ -969,13 +956,15 @@ protected boolean hasVirtualFiles()
969956
{
970957
if ( finalizers != null )
971958
{
972-
for (final ArchiveFinalizer finalizer : finalizers) {
973-
final List virtualFiles = finalizer.getVirtualFiles();
959+
for ( final ArchiveFinalizer finalizer : finalizers )
960+
{
961+
final List virtualFiles = finalizer.getVirtualFiles();
974962

975-
if ((virtualFiles != null) && !virtualFiles.isEmpty()) {
976-
return true;
977-
}
978-
}
963+
if ( ( virtualFiles != null ) && !virtualFiles.isEmpty() )
964+
{
965+
return true;
966+
}
967+
}
979968
}
980969
return false;
981970
}
@@ -1000,10 +989,14 @@ protected void cleanUp()
1000989
{
1001990
for ( Object resource : resources )
1002991
{
1003-
if (resource instanceof PlexusIoProxyResourceCollection){
992+
if ( resource instanceof PlexusIoProxyResourceCollection )
993+
{
1004994
resource = ( (PlexusIoProxyResourceCollection) resource ).getSrc();
1005995
}
1006-
if (resource instanceof Closeable ) ((Closeable)resource).close();
996+
if ( resource instanceof Closeable )
997+
{
998+
( (Closeable) resource ).close();
999+
}
10071000
}
10081001
resources.clear();
10091002
}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,12 @@ private ArchiveEntry( String name, @Nonnull PlexusIoResource resource, int type,
6969
PlexusIoResourceCollection collection )
7070
{
7171
this.name = name;
72-
this.resource = resource;
7372
this.collection = collection;
73+
try {
74+
this.resource = collection != null ? collection.resolve(resource) : resource;
75+
} catch (IOException e) {
76+
throw new ArchiverException("Error resolving resource " + resource.getName(), e);
77+
}
7478
this.attributes = ( resource instanceof PlexusIoResourceWithAttributes )
7579
? ( (PlexusIoResourceWithAttributes) resource ).getAttributes() : null;
7680
this.type = type;
@@ -115,7 +119,7 @@ public File getFile()
115119
public InputStream getInputStream()
116120
throws IOException
117121
{
118-
return collection != null ? collection.getInputStream( resource ) : resource.getContents();
122+
return resource.getContents();
119123
}
120124

121125
/**

src/main/java/org/codehaus/plexus/archiver/bzip2/PlexusIoBzip2ResourceCollection.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection;
1414
import org.codehaus.plexus.util.IOUtil;
1515

16+
import javax.annotation.Nonnull;
1617
import javax.annotation.WillNotClose;
1718

1819

@@ -23,6 +24,7 @@
2324
public class PlexusIoBzip2ResourceCollection
2425
extends PlexusIoCompressedFileResourceCollection
2526
{
27+
@Nonnull
2628
protected @WillNotClose InputStream getInputStream( File file )
2729
throws IOException
2830
{

src/main/java/org/codehaus/plexus/archiver/gzip/PlexusIoGzipResourceCollection.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import org.codehaus.plexus.components.io.resources.PlexusIoCompressedFileResourceCollection;
1313
import org.codehaus.plexus.util.IOUtil;
1414

15+
import javax.annotation.Nonnull;
16+
1517

1618
/**
1719
* Abstract base class for compressed files, aka singleton
@@ -25,6 +27,7 @@ protected String getDefaultExtension()
2527
return ".gz";
2628
}
2729

30+
@Nonnull
2831
protected InputStream getInputStream( File file )
2932
throws IOException
3033
{

src/main/java/org/codehaus/plexus/archiver/tar/TarArchiver.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -328,15 +328,19 @@ else if ( longFileMode.isFailMode() )
328328

329329
tOut.putArchiveEntry(te);
330330

331-
if ( entry.getResource().isFile() && !(entry.getType() == ArchiveEntry.SYMLINK))
332-
{
333-
fIn = entry.getInputStream();
331+
try {
332+
if (entry.getResource().isFile() && !(entry.getType() == ArchiveEntry.SYMLINK)) {
333+
fIn = entry.getInputStream();
334334

335-
Streams.copyFullyDontCloseOutput( fIn, tOut, "xAR" );
336-
}
335+
Streams.copyFullyDontCloseOutput(fIn, tOut, "xAR");
336+
}
337337

338-
tOut.closeArchiveEntry();
339-
}
338+
} catch (Throwable e){
339+
getLogger().warn("When creating tar entry", e);
340+
} finally {
341+
tOut.closeArchiveEntry();
342+
}
343+
}
340344
finally
341345
{
342346
IOUtil.close( fIn );

0 commit comments

Comments
 (0)