Package org.jboss.shrinkwrap.impl.base
Class ArchiveBase<T extends Archive<T>>
- java.lang.Object
-
- org.jboss.shrinkwrap.impl.base.ArchiveBase<T>
-
- All Implemented Interfaces:
Archive<T>,Assignable,ArchiveFormatAssociable,Configurable,Identifiable
- Direct Known Subclasses:
MemoryMapArchiveBase
public abstract class ArchiveBase<T extends Archive<T>> extends java.lang.Object implements Archive<T>, Configurable, ArchiveFormatAssociable, Identifiable
Base implementation ofArchive. Contains support for operations (typically overloaded) that are not specific to any particular storage implementation, and may be delegated to other forms.- Version:
- $Revision: $
-
-
Field Summary
Fields Modifier and Type Field Description private ConfigurationconfigurationConfiguration for this archiveprivate java.lang.StringidGlobally-unique ID for this archiveprivate static java.util.logging.LoggerlogLoggerprivate java.lang.StringnameName of the archive
-
Constructor Summary
Constructors Modifier Constructor Description protectedArchiveBase(java.lang.String name, Configuration configuration)Constructor Creates a new Archive with the specified name
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Tadd(Archive<?> archive, ArchivePath path, java.lang.Class<? extends StreamExporter> exporter)Add an archive under a specific context and maintain the archive name as context path.Tadd(Asset asset, java.lang.String target)Adds the specified resource under the context denoted by the specified targetTadd(Asset asset, java.lang.String target, java.lang.String name)Adds the specified asset under the specified target (directory) using the specified name.Tadd(Asset asset, ArchivePath path, java.lang.String name)Adds the specified asset under the specified target (directory) using the specified name.Tadd(NamedAsset namedAsset)Adds the asset encapsulated within the specifiedNamedAssetunder the encapsulated name and target (directory)TaddAsDirectories(java.lang.String... paths)Adds the specified directories.TaddAsDirectories(ArchivePath... paths)Adds the specified directories.TaddAsDirectory(java.lang.String path)Adds the specified directory.<TYPE extends Assignable>
TYPEas(java.lang.Class<TYPE> clazz)Wraps an Archive in a different 'view'.protected TcovariantReturn()Provides typesafe covariant return of this instancebooleanequals(java.lang.Object obj)Tfilter(Filter<ArchivePath> filter)Obtains all assets matching given filter in this archive as a new Archive.
This is an alias for shallowCopy(Filter).Nodeget(java.lang.String path)Obtains theNodelocated at the specified pathprotected abstract java.lang.Class<T>getActualClass()Exposes the actual class used in castingArchiveFormatgetArchiveFormat()<X extends Archive<X>>
XgetAsType(java.lang.Class<X> type, java.lang.String path)Get a nestedArchiveas a specific type.
The found Archives must have been added as a Archive, no import is performed.<X extends Archive<X>>
XgetAsType(java.lang.Class<X> type, java.lang.String path, ArchiveFormat archiveFormat)Get a nestedArchiveas a specific type using the specifyArchiveFormat<X extends Archive<X>>
XgetAsType(java.lang.Class<X> type, ArchivePath path)Get a nestedArchiveas a specific type.
The found Archives must have been added as a Archive, no import is performed.<X extends Archive<X>>
XgetAsType(java.lang.Class<X> type, ArchivePath path, ArchiveFormat archiveFormat)<X extends Archive<X>>
java.util.Collection<X>getAsType(java.lang.Class<X> type, Filter<ArchivePath> filter)Get all nestedArchivematching the filter as a specific type.
The found Archives must have been added as a Archive, no import is performed.<X extends Archive<X>>
java.util.Collection<X>getAsType(java.lang.Class<X> type, Filter<ArchivePath> filter, ArchiveFormat archiveFormat)Get all nestedArchivematching the filter as a specific type using the specifyArchiveFormat.ConfigurationgetConfiguration()Obtains theConfigurationassociated with thisArchivejava.lang.StringgetId()Obtains a globally-unique identifier for thisArchivejava.lang.StringgetName()Obtains the name of this archive (ie.inthashCode()Tmerge(Archive<?> source)Merge the contents from an existing archive without maintaining the archive name in the context path.Tmerge(Archive<?> source, java.lang.String path)Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path.Tmerge(Archive<?> source, java.lang.String path, Filter<ArchivePath> filter)Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path.Tmerge(Archive<?> source, ArchivePath path)Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path.Tmerge(Archive<?> source, ArchivePath path, Filter<ArchivePath> filter)Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path.Tmerge(Archive<?> source, Filter<ArchivePath> filter)Merge the contents from an existing archive without maintaining the archive name in the context path.Tmove(java.lang.String source, java.lang.String target)Moves the asset under the source path to the target path.Tmove(ArchivePath source, ArchivePath target)Moves the asset under the source path to the target path.voidsetId(java.lang.String id)Sets the globally-unique identifierArchive<T>shallowCopy()Creates a shallow copy of thisArchive.Archive<T>shallowCopy(Filter<ArchivePath> filter)Creates a shallow copy of thisArchivebased on given filter.Assets from this archive are made available under the same paths.java.lang.StringtoString()Acts as a shorthand forArchive.toString(Formatter)where theFormatters.SIMPLEis leveraged.java.lang.StringtoString(boolean verbose)If "true" is specified, acts as a shorthand forArchive.toString(Formatter)where theFormatters.VERBOSEis leveraged.java.lang.StringtoString(Formatter formatter)voidwriteTo(java.io.OutputStream outputStream, Formatter formatter)-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.jboss.shrinkwrap.api.Archive
add, add, addAsDirectory, addHandlers, contains, contains, delete, delete, get, getContent, getContent
-
-
-
-
Field Detail
-
log
private static final java.util.logging.Logger log
Logger
-
name
private final java.lang.String name
Name of the archive
-
configuration
private final Configuration configuration
Configuration for this archive
-
id
private java.lang.String id
Globally-unique ID for this archive
-
-
Constructor Detail
-
ArchiveBase
protected ArchiveBase(java.lang.String name, Configuration configuration) throws java.lang.IllegalArgumentExceptionConstructor Creates a new Archive with the specified name- Parameters:
name- Name of the archiveconfiguration- The configuration for this archive- Throws:
java.lang.IllegalArgumentException- If the name was not specified
-
-
Method Detail
-
getArchiveFormat
public ArchiveFormat getArchiveFormat()
- Specified by:
getArchiveFormatin interfaceArchiveFormatAssociable- See Also:
ArchiveFormatAssociable.getArchiveFormat()
-
add
public T add(Asset asset, java.lang.String target) throws java.lang.IllegalArgumentException
Adds the specified resource under the context denoted by the specified target
-
add
public T add(Asset asset, java.lang.String target, java.lang.String name) throws java.lang.IllegalArgumentException
Adds the specified asset under the specified target (directory) using the specified name. The resultant path will be treating the specified path as a prefix namespace, then appending the name.- Specified by:
addin interfaceArchive<T extends Archive<T>>target- The context directory under which to add the assetname- The name to assign the assent under the target namespace- Returns:
- Throws:
java.lang.IllegalArgumentException- If the target, name, or asset was not specified- See Also:
Archive.add(org.jboss.shrinkwrap.api.asset.Asset, java.lang.String, java.lang.String)
-
add
public T add(Asset asset, ArchivePath path, java.lang.String name)
Adds the specified asset under the specified target (directory) using the specified name. The resultant path will be treating the specified path as a prefix namespace, then appending the name.- Specified by:
addin interfaceArchive<T extends Archive<T>>path- The context directory under which to add the assetname- The name to assign the assent under the target namespace- Returns:
- See Also:
org.jboss.shrinkwrap.api.Archive#add(org.jboss.shrinkwrap.api.ArchivePath, java.lang.String, org.jboss.shrinkwrap.api.asset.Asset)
-
get
public Node get(java.lang.String path) throws java.lang.IllegalArgumentException
Obtains theNodelocated at the specified path
-
getAsType
public <X extends Archive<X>> X getAsType(java.lang.Class<X> type, java.lang.String path)
Get a nestedArchiveas a specific type.
The found Archives must have been added as a Archive, no import is performed.
-
getAsType
public <X extends Archive<X>> java.util.Collection<X> getAsType(java.lang.Class<X> type, Filter<ArchivePath> filter)
Get all nestedArchivematching the filter as a specific type.
The found Archives must have been added as a Archive, no import is performed.- Specified by:
getAsTypein interfaceArchive<T extends Archive<T>>- Parameters:
type- The Type to return the Archive asfilter- Filter to match result- Returns:
- A
Collectionof found Archives matching given filter or emptyCollectionif non found. - See Also:
Archive.getAsType(java.lang.Class, org.jboss.shrinkwrap.api.Filter)
-
getAsType
public <X extends Archive<X>> X getAsType(java.lang.Class<X> type, ArchivePath path)
Get a nestedArchiveas a specific type.
The found Archives must have been added as a Archive, no import is performed.- Specified by:
getAsTypein interfaceArchive<T extends Archive<T>>- Parameters:
type- The Type to return the Archive aspath- The location of the Archive- Returns:
- The found Archive as given type or null if none found at given
ArchivePath - See Also:
Archive.getAsType(java.lang.Class, org.jboss.shrinkwrap.api.ArchivePath)
-
getAsType
public <X extends Archive<X>> X getAsType(java.lang.Class<X> type, java.lang.String path, ArchiveFormat archiveFormat)
Get a nestedArchiveas a specific type using the specifyArchiveFormat- Specified by:
getAsTypein interfaceArchive<T extends Archive<T>>- Parameters:
type- The Type to return the Archive aspath- The location of the ArchivearchiveFormat- The archive format- Returns:
- The found Archive as given type or null if none found at the given path
- See Also:
Archive.getAsType(java.lang.Class, java.lang.String, org.jboss.shrinkwrap.api.ArchiveFormat)
-
getAsType
public <X extends Archive<X>> X getAsType(java.lang.Class<X> type, ArchivePath path, ArchiveFormat archiveFormat)
- Specified by:
getAsTypein interfaceArchive<T extends Archive<T>>- Parameters:
type- The Type to return the Archive aspath- The location of the ArchivearchiveFormat- The archive format- Returns:
- The found Archive as given type or null if none found at given
ArchivePath - See Also:
Archive.getAsType(java.lang.Class, org.jboss.shrinkwrap.api.ArchivePath, org.jboss.shrinkwrap.api.ArchiveFormat)
-
getAsType
public <X extends Archive<X>> java.util.Collection<X> getAsType(java.lang.Class<X> type, Filter<ArchivePath> filter, ArchiveFormat archiveFormat)
Get all nestedArchivematching the filter as a specific type using the specifyArchiveFormat.- Specified by:
getAsTypein interfaceArchive<T extends Archive<T>>- Parameters:
type- The Type to return the Archive asfilter- Filter to match resultarchiveFormat- The archive format- Returns:
- A
Collectionof found Archives matching given filter or emptyCollectionif non found. - See Also:
Archive.getAsType(java.lang.Class, org.jboss.shrinkwrap.api.Filter, org.jboss.shrinkwrap.api.ArchiveFormat)
-
filter
public T filter(Filter<ArchivePath> filter)
Obtains all assets matching given filter in this archive as a new Archive.
This is an alias for shallowCopy(Filter).
-
add
public T add(Archive<?> archive, ArchivePath path, java.lang.Class<? extends StreamExporter> exporter)
Add an archive under a specific context and maintain the archive name as context path.- Specified by:
addin interfaceArchive<T extends Archive<T>>- Parameters:
archive- to addpath- to useexporter- Exporter type to use in fulfilling theAsset.openStream()contract for the added (nested) archive.- Returns:
- See Also:
Archive.add(org.jboss.shrinkwrap.api.Archive, org.jboss.shrinkwrap.api.ArchivePath, java.lang.Class)
-
add
public T add(NamedAsset namedAsset)
Adds the asset encapsulated within the specifiedNamedAssetunder the encapsulated name and target (directory)
-
addAsDirectory
public T addAsDirectory(java.lang.String path) throws java.lang.IllegalArgumentException
Adds the specified directory.- Specified by:
addAsDirectoryin interfaceArchive<T extends Archive<T>>- Parameters:
path- The path to add- Returns:
- This archive
- Throws:
java.lang.IllegalArgumentException- If no path was specified- See Also:
Archive.addAsDirectory(java.lang.String)
-
addAsDirectories
public T addAsDirectories(ArchivePath... paths) throws java.lang.IllegalArgumentException
Adds the specified directories.- Specified by:
addAsDirectoriesin interfaceArchive<T extends Archive<T>>- Parameters:
paths- The paths to add- Returns:
- This archive
- Throws:
java.lang.IllegalArgumentException- If no paths were specified- See Also:
Archive.addAsDirectories(org.jboss.shrinkwrap.api.ArchivePath[])
-
addAsDirectories
public T addAsDirectories(java.lang.String... paths) throws java.lang.IllegalArgumentException
Adds the specified directories.- Specified by:
addAsDirectoriesin interfaceArchive<T extends Archive<T>>- Parameters:
paths- The paths to add- Returns:
- This archive
- Throws:
java.lang.IllegalArgumentException- If no paths were specified- See Also:
Archive.addAsDirectories(java.lang.String[])
-
getName
public final java.lang.String getName()
Obtains the name of this archive (ie. myLibrary.jar)
-
getId
public java.lang.String getId()
Obtains a globally-unique identifier for thisArchive- Specified by:
getIdin interfaceArchive<T extends Archive<T>>- Specified by:
getIdin interfaceIdentifiable- Returns:
- See Also:
Archive.getId()
-
setId
public void setId(java.lang.String id) throws java.lang.IllegalArgumentExceptionDescription copied from interface:IdentifiableSets the globally-unique identifier- Specified by:
setIdin interfaceIdentifiable- Throws:
java.lang.IllegalArgumentException- If the ID is not specified
-
merge
public T merge(Archive<?> source) throws java.lang.IllegalArgumentException
Merge the contents from an existing archive without maintaining the archive name in the context path.
-
merge
public T merge(Archive<?> source, Filter<ArchivePath> filter) throws java.lang.IllegalArgumentException
Merge the contents from an existing archive without maintaining the archive name in the context path. The filter control whichArchivePaths to include form the sourceArchive.
-
merge
public T merge(Archive<?> source, ArchivePath path) throws java.lang.IllegalArgumentException
Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path.- Specified by:
mergein interfaceArchive<T extends Archive<T>>- Parameters:
source- Archive to add contents frompath- Path to add contents to- Returns:
- Throws:
java.lang.IllegalArgumentException- If the path or existing archive is not specified- See Also:
org.jboss.shrinkwrap.api.Archive#merge(org.jboss.shrinkwrap.api.ArchivePath, org.jboss.shrinkwrap.api.Archive)
-
merge
public T merge(Archive<?> source, java.lang.String path, Filter<ArchivePath> filter) throws java.lang.IllegalArgumentException
Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path. The filter control whichArchivePaths to include form the sourceArchive.- Specified by:
mergein interfaceArchive<T extends Archive<T>>- Parameters:
source- Archive to add contents frompath- Path to add contents tofilter- Filter to use for includingAssets in the merge.- Returns:
- Throws:
java.lang.IllegalArgumentException- If the path or existing archive is not specified- See Also:
Archive.merge(org.jboss.shrinkwrap.api.Archive, java.lang.String, org.jboss.shrinkwrap.api.Filter)
-
merge
public T merge(Archive<?> source, java.lang.String path) throws java.lang.IllegalArgumentException
Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path.- Specified by:
mergein interfaceArchive<T extends Archive<T>>- Parameters:
source- Archive to add contents frompath- Path to add contents to- Returns:
- Throws:
java.lang.IllegalArgumentException- If the path or existing archive is not specified- See Also:
Archive.merge(org.jboss.shrinkwrap.api.Archive, java.lang.String)
-
shallowCopy
public final Archive<T> shallowCopy()
Creates a shallow copy of thisArchive. Assets from this archive are made available under the same paths. However, removing old assets or adding new assets on this archive affects does not affect the new archive.- Specified by:
shallowCopyin interfaceArchive<T extends Archive<T>>- Returns:
- a new archive with a copy of the pointers to the assets
- See Also:
Archive.shallowCopy()
-
shallowCopy
public final Archive<T> shallowCopy(Filter<ArchivePath> filter)
Creates a shallow copy of thisArchivebased on given filter.Assets from this archive are made available under the same paths. However, removing old assets or adding new assets on this archive affects does not affect the new archive.- Specified by:
shallowCopyin interfaceArchive<T extends Archive<T>>- Returns:
- a new archive with a copy of the pointers to the assets
- See Also:
Archive.shallowCopy(Filter)
-
merge
public T merge(Archive<?> source, ArchivePath path, Filter<ArchivePath> filter) throws java.lang.IllegalArgumentException
Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path. The filter control whichArchivePaths to include form the sourceArchive.- Specified by:
mergein interfaceArchive<T extends Archive<T>>- Parameters:
source- Archive to add contents frompath- Path to add contents tofilter- Filter to use for includingAssets in the merge.- Returns:
- Throws:
java.lang.IllegalArgumentException- If the path or existing archive is not specified- See Also:
org.jboss.shrinkwrap.api.Archive#merge(org.jboss.shrinkwrap.api.Archive, org.jboss.shrinkwrap.api.Path, org.jboss.shrinkwrap.api.Filter)
-
move
public T move(ArchivePath source, ArchivePath target) throws java.lang.IllegalArgumentException, IllegalArchivePathException
Moves the asset under the source path to the target path.- Specified by:
movein interfaceArchive<T extends Archive<T>>- Parameters:
source- The context under which to remove the assetstarget- The context under which to add the moved assets- Returns:
- the resulting archive with the moved assets
- Throws:
java.lang.IllegalArgumentException- If any of the paths is not specifiedIllegalArchivePathException- If the source path is invalid.- See Also:
Archive.move(org.jboss.shrinkwrap.api.ArchivePath, org.jboss.shrinkwrap.api.ArchivePath)
-
move
public T move(java.lang.String source, java.lang.String target) throws java.lang.IllegalArgumentException, IllegalArchivePathException
Moves the asset under the source path to the target path.- Specified by:
movein interfaceArchive<T extends Archive<T>>- Parameters:
source- The context under which to remove the assetstarget- The context under which to add the moved assets- Returns:
- the resulting archive with the moved assets
- Throws:
java.lang.IllegalArgumentException- If any of the paths is not specifiedIllegalArchivePathException- If the source path is invalid.- See Also:
Archive.move(java.lang.String, java.lang.String)
-
as
public <TYPE extends Assignable> TYPE as(java.lang.Class<TYPE> clazz)
Wraps an Archive in a different 'view'.- Specified by:
asin interfaceAssignable- Parameters:
clazz- Extension interface to load- Returns:
- The Archive wrapped as TYPE
- See Also:
Assignable.as(java.lang.Class)
-
toString
public java.lang.String toString()
Acts as a shorthand forArchive.toString(Formatter)where theFormatters.SIMPLEis leveraged.
-
toString
public java.lang.String toString(boolean verbose)
If "true" is specified, acts as a shorthand forArchive.toString(Formatter)where theFormatters.VERBOSEis leveraged. Otherwise theFormatters.SIMPLEwill be used (equivalent toArchive.toString()).
-
toString
public java.lang.String toString(Formatter formatter) throws java.lang.IllegalArgumentException
Returns a view of thisArchiveas returned from the specifiedFormatter. Common options may be to use the predefined formatters located inFormatters
-
writeTo
public void writeTo(java.io.OutputStream outputStream, Formatter formatter) throws java.lang.IllegalArgumentException
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object- See Also:
org.jboss.shrinkwrap.api.Archive#hashCode()
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object- See Also:
org.jboss.shrinkwrap.api.Archive#equals(Object)
-
getConfiguration
public Configuration getConfiguration()
Obtains theConfigurationassociated with thisArchive- Specified by:
getConfigurationin interfaceConfigurable- See Also:
Configurable.getConfiguration()
-
getActualClass
protected abstract java.lang.Class<T> getActualClass()
Exposes the actual class used in casting- Returns:
-
covariantReturn
protected final T covariantReturn()
Provides typesafe covariant return of this instance
-
-