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 Object
implements Archive<T>, Configurable, ArchiveFormatAssociable, Identifiable
Base implementation of
Archive
. 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
FieldsModifier and TypeFieldDescriptionprivate final Configuration
Configuration for this archiveprivate String
Globally-unique ID for this archiveprivate static final Logger
Loggerprivate final String
Name of the archive -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
ArchiveBase
(String name, Configuration configuration) Constructor Creates a new Archive with the specified name -
Method Summary
Modifier and TypeMethodDescriptionadd
(Archive<?> archive, ArchivePath path, Class<? extends StreamExporter> exporter) Add an archive under a specific context and maintain the archive name as context path.Adds the specified resource under the context denoted by the specified targetAdds the specified asset under the specified target (directory) using the specified name.add
(Asset asset, ArchivePath path, String name) Adds the specified asset under the specified target (directory) using the specified name.add
(NamedAsset namedAsset) Adds the asset encapsulated within the specifiedNamedAsset
under the encapsulated name and target (directory)addAsDirectories
(String... paths) Adds the specified directories.addAsDirectories
(ArchivePath... paths) Adds the specified directories.addAsDirectory
(String path) Adds the specified directory.<TYPE extends Assignable>
TYPEWraps an Archive in a different 'view'.protected final T
Provides typesafe covariant return of this instanceboolean
filter
(Filter<ArchivePath> filter) Obtains all assets matching given filter in this archive as a new Archive.
This is an alias for shallowCopy(Filter).Obtains theNode
located at the specified pathExposes the actual class used in casting<X extends Archive<X>>
XGet a nestedArchive
as a specific type.
The found Archives must have been added as a Archive, no import is performed.<X extends Archive<X>>
XgetAsType
(Class<X> type, String path, ArchiveFormat archiveFormat) Get a nestedArchive
as a specific type using the specifyArchiveFormat
<X extends Archive<X>>
XgetAsType
(Class<X> type, ArchivePath path) Get a nestedArchive
as a specific type.
The found Archives must have been added as a Archive, no import is performed.<X extends Archive<X>>
XgetAsType
(Class<X> type, ArchivePath path, ArchiveFormat archiveFormat) <X extends Archive<X>>
Collection<X> getAsType
(Class<X> type, Filter<ArchivePath> filter) Get all nestedArchive
matching the filter as a specific type.
The found Archives must have been added as a Archive, no import is performed.<X extends Archive<X>>
Collection<X> getAsType
(Class<X> type, Filter<ArchivePath> filter, ArchiveFormat archiveFormat) Get all nestedArchive
matching the filter as a specific type using the specifyArchiveFormat
.Obtains theConfiguration
associated with thisArchive
getId()
Obtains a globally-unique identifier for thisArchive
final String
getName()
Obtains the name of this archive (ie.int
hashCode()
Merge the contents from an existing archive without maintaining the archive name in the context path.Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path.merge
(Archive<?> source, 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.merge
(Archive<?> source, ArchivePath path) Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path.merge
(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.merge
(Archive<?> source, Filter<ArchivePath> filter) Merge the contents from an existing archive without maintaining the archive name in the context path.Moves the asset under the source path to the target path.move
(ArchivePath source, ArchivePath target) Moves the asset under the source path to the target path.void
Sets the globally-unique identifierCreates a shallow copy of thisArchive
.shallowCopy
(Filter<ArchivePath> filter) Creates a shallow copy of thisArchive
based on given filter.Assets from this archive are made available under the same paths.toString()
Acts as a shorthand forArchive.toString(Formatter)
where theFormatters.SIMPLE
is leveraged.toString
(boolean verbose) If "true" is specified, acts as a shorthand forArchive.toString(Formatter)
where theFormatters.VERBOSE
is leveraged.void
writeTo
(OutputStream outputStream, Formatter formatter) Prints the content of thisArchive
to the specifiedOutputStream
on the format defined by the specifiedFormatter
.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 Details
-
log
Logger -
name
Name of the archive -
configuration
Configuration for this archive -
id
Globally-unique ID for this archive
-
-
Constructor Details
-
ArchiveBase
Constructor Creates a new Archive with the specified name- Parameters:
name
- Name of the archiveconfiguration
- The configuration for this archive- Throws:
IllegalArgumentException
- If the name was not specified
-
-
Method Details
-
getArchiveFormat
- Specified by:
getArchiveFormat
in interfaceArchiveFormatAssociable
- See Also:
-
add
Adds the specified resource under the context denoted by the specified target -
add
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:
add
in interfaceArchive<T extends Archive<T>>
- Parameters:
asset
-target
- The context directory under which to add the assetname
- The name to assign the assent under the target namespace- Returns:
- Throws:
IllegalArgumentException
- If the target, name, or asset was not specified- See Also:
-
add
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. -
get
Obtains theNode
located at the specified path -
getAsType
Get a nestedArchive
as a specific type.
The found Archives must have been added as a Archive, no import is performed. -
getAsType
Get all nestedArchive
matching the filter as a specific type.
The found Archives must have been added as a Archive, no import is performed.- Specified by:
getAsType
in interfaceArchive<T extends Archive<T>>
- Type Parameters:
X
-- Parameters:
type
- The Type to return the Archive asfilter
- Filter to match result- Returns:
- A
Collection
of found Archives matching given filter or emptyCollection
if non found. - See Also:
-
getAsType
Get a nestedArchive
as a specific type.
The found Archives must have been added as a Archive, no import is performed. -
getAsType
Get a nestedArchive
as a specific type using the specifyArchiveFormat
-
getAsType
public <X extends Archive<X>> X getAsType(Class<X> type, ArchivePath path, ArchiveFormat archiveFormat) -
getAsType
public <X extends Archive<X>> Collection<X> getAsType(Class<X> type, Filter<ArchivePath> filter, ArchiveFormat archiveFormat) Get all nestedArchive
matching the filter as a specific type using the specifyArchiveFormat
.- Specified by:
getAsType
in interfaceArchive<T extends Archive<T>>
- Type Parameters:
X
-- Parameters:
type
- The Type to return the Archive asfilter
- Filter to match resultarchiveFormat
- The archive format- Returns:
- A
Collection
of found Archives matching given filter or emptyCollection
if non found. - See Also:
-
filter
Obtains all assets matching given filter in this archive as a new Archive.
This is an alias for shallowCopy(Filter). -
add
Add an archive under a specific context and maintain the archive name as context path. -
add
Adds the asset encapsulated within the specifiedNamedAsset
under the encapsulated name and target (directory) -
addAsDirectory
Adds the specified directory.- Specified by:
addAsDirectory
in interfaceArchive<T extends Archive<T>>
- Parameters:
path
- The path to add- Returns:
- This archive
- Throws:
IllegalArgumentException
- If no path was specified- See Also:
-
addAsDirectories
Adds the specified directories.- Specified by:
addAsDirectories
in interfaceArchive<T extends Archive<T>>
- Parameters:
paths
- The paths to add- Returns:
- This archive
- Throws:
IllegalArgumentException
- If no paths were specified- See Also:
-
addAsDirectories
Adds the specified directories.- Specified by:
addAsDirectories
in interfaceArchive<T extends Archive<T>>
- Parameters:
paths
- The paths to add- Returns:
- This archive
- Throws:
IllegalArgumentException
- If no paths were specified- See Also:
-
getName
Obtains the name of this archive (ie. myLibrary.jar) -
getId
Obtains a globally-unique identifier for thisArchive
-
setId
Description copied from interface:Identifiable
Sets the globally-unique identifier- Specified by:
setId
in interfaceIdentifiable
- Parameters:
id
-- Throws:
IllegalArgumentException
- If the ID is not specified
-
merge
Merge the contents from an existing archive without maintaining the archive name in the context path. -
merge
Merge the contents from an existing archive without maintaining the archive name in the context path. The filter control whichArchivePath
s to include form the sourceArchive
. -
merge
Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path. -
merge
public T merge(Archive<?> source, String path, Filter<ArchivePath> filter) throws IllegalArgumentException Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path. The filter control whichArchivePath
s to include form the sourceArchive
.- Specified by:
merge
in interfaceArchive<T extends Archive<T>>
- Parameters:
source
- Archive to add contents frompath
- Path to add contents tofilter
- Filter to use for includingAsset
s in the merge.- Returns:
- Throws:
IllegalArgumentException
- If the path or existing archive is not specified- See Also:
-
merge
Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path. -
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:
shallowCopy
in interfaceArchive<T extends Archive<T>>
- Returns:
- a new archive with a copy of the pointers to the assets
- See Also:
-
shallowCopy
Creates a shallow copy of thisArchive
based 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:
shallowCopy
in interfaceArchive<T extends Archive<T>>
- Returns:
- a new archive with a copy of the pointers to the assets
- See Also:
-
merge
public T merge(Archive<?> source, ArchivePath path, Filter<ArchivePath> filter) throws IllegalArgumentException Merge the contents from an existing archive in a specific path without maintaining the archive name in the context path. The filter control whichArchivePath
s to include form the sourceArchive
.- Specified by:
merge
in interfaceArchive<T extends Archive<T>>
- Parameters:
source
- Archive to add contents frompath
- Path to add contents tofilter
- Filter to use for includingAsset
s in the merge.- Returns:
- Throws:
IllegalArgumentException
- If the path or existing archive is not specified- See Also:
-
move
public T move(ArchivePath source, ArchivePath target) throws IllegalArgumentException, IllegalArchivePathException Moves the asset under the source path to the target path.- Specified by:
move
in 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:
IllegalArgumentException
- If any of the paths is not specifiedIllegalArchivePathException
- If the source path is invalid.- See Also:
-
move
public T move(String source, String target) throws IllegalArgumentException, IllegalArchivePathException Moves the asset under the source path to the target path.- Specified by:
move
in 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:
IllegalArgumentException
- If any of the paths is not specifiedIllegalArchivePathException
- If the source path is invalid.- See Also:
-
as
Wraps an Archive in a different 'view'.- Specified by:
as
in interfaceAssignable
- Type Parameters:
TYPE
-- Parameters:
clazz
- Extension interface to load- Returns:
- The Archive wrapped as TYPE
- See Also:
-
toString
Acts as a shorthand forArchive.toString(Formatter)
where theFormatters.SIMPLE
is leveraged. -
toString
If "true" is specified, acts as a shorthand forArchive.toString(Formatter)
where theFormatters.VERBOSE
is leveraged. Otherwise theFormatters.SIMPLE
will be used (equivalent toArchive.toString()
). -
toString
Returns a view of thisArchive
as returned from the specifiedFormatter
. Common options may be to use the predefined formatters located inFormatters
-
writeTo
Prints the content of thisArchive
to the specifiedOutputStream
on the format defined by the specifiedFormatter
. The caller is responsible for opening, flushing and eventually closing the stream. -
hashCode
public int hashCode() -
equals
-
getConfiguration
Obtains theConfiguration
associated with thisArchive
- Specified by:
getConfiguration
in interfaceConfigurable
- See Also:
-
getActualClass
Exposes the actual class used in casting- Returns:
-
covariantReturn
Provides typesafe covariant return of this instance
-