Class ArchiveTestResourceProvider
- java.lang.Object
-
- de.gebit.integrity.runner.providers.AbstractTestResourceProvider
-
- de.gebit.integrity.runner.providers.ArchiveTestResourceProvider
-
- All Implemented Interfaces:
TestResourceProvider
public class ArchiveTestResourceProvider extends AbstractTestResourceProvider
ThisTestResourceProvider
can read archive files (zip/jar format) and provide the Integrity script files within these archives transparently to the Test Runner. It can even read archives within archives, up to an arbitrary depth.- Author:
- Rene Schneider - initial API and implementation
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ArchiveTestResourceProvider.ArchivedTestResource
Test resource located within one or multiple archives.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ARCHIVE_ENDING_JAR
The ending of jar archives.static java.lang.String
ARCHIVE_ENDING_ZIP
The ending of zip archives.-
Fields inherited from class de.gebit.integrity.runner.providers.AbstractTestResourceProvider
INTEGRITY_TEST_FILES_SUFFIX, resourceFiles
-
-
Constructor Summary
Constructors Constructor Description ArchiveTestResourceProvider()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addArchive(java.io.File anArchiveFile, boolean aRecursiveFlag)
Adds an archive (all contained .integrity files) to the resource provider.protected void
addArchive(java.util.zip.ZipInputStream anArchiveInputStream, java.lang.String aPrefix, boolean aRecursiveFlag, java.util.Stack<java.lang.String> anArchiveFileNameStack)
Recursive-enabled variant ofaddArchive(File, boolean)
.void
closeResource(TestResource aResourceName, java.io.InputStream aResourceStream)
Closes a specified resources' stream (and all the stuff opened for this stream in the background).protected boolean
findFileInZipInputStream(java.util.zip.ZipInputStream aStream, java.lang.String aFileName)
Searches the givenZipInputStream
for an entry, then stops.java.io.InputStream
openResource(TestResource aResourceName)
Opens a specific named resource.-
Methods inherited from class de.gebit.integrity.runner.providers.AbstractTestResourceProvider
addResource, createAndAddResource, createResource, getClassLoader, getResourceNames, setClassLoader
-
-
-
-
Field Detail
-
ARCHIVE_ENDING_ZIP
public static final java.lang.String ARCHIVE_ENDING_ZIP
The ending of zip archives.- See Also:
- Constant Field Values
-
ARCHIVE_ENDING_JAR
public static final java.lang.String ARCHIVE_ENDING_JAR
The ending of jar archives.- See Also:
- Constant Field Values
-
-
Method Detail
-
addArchive
public void addArchive(java.io.File anArchiveFile, boolean aRecursiveFlag) throws java.io.IOException
Adds an archive (all contained .integrity files) to the resource provider.- Parameters:
anArchiveFile
- the archive file to addaRecursiveFlag
- whether other archives inside this archive shall be added recursively- Throws:
java.io.IOException
-
addArchive
protected void addArchive(java.util.zip.ZipInputStream anArchiveInputStream, java.lang.String aPrefix, boolean aRecursiveFlag, java.util.Stack<java.lang.String> anArchiveFileNameStack) throws java.io.IOException
Recursive-enabled variant ofaddArchive(File, boolean)
.- Parameters:
anArchiveInputStream
- the archive input stream to read fromaPrefix
- the prefix to prepend in front of the filename inside the archiveaRecursiveFlag
- a flag whether recursive invocation is desired- Throws:
java.io.IOException
-
openResource
public java.io.InputStream openResource(TestResource aResourceName) throws java.io.IOException
Description copied from interface:TestResourceProvider
Opens a specific named resource. This should return anInputStream
at the start of the data of the respective resources, and it is only expected to work if the resource is one of those enumerated by a call toTestResourceProvider.getResourceNames()
.- Parameters:
aResourceName
- the resource to be opened- Returns:
- an
InputStream
to read the resource - Throws:
java.io.IOException
-
closeResource
public void closeResource(TestResource aResourceName, java.io.InputStream aResourceStream) throws java.io.IOException
Description copied from interface:TestResourceProvider
Closes a specified resources' stream (and all the stuff opened for this stream in the background).- Parameters:
aResourceName
- the resource to be closedaResourceStream
- the resource stream to close- Throws:
java.io.IOException
-
findFileInZipInputStream
protected boolean findFileInZipInputStream(java.util.zip.ZipInputStream aStream, java.lang.String aFileName) throws java.io.IOException
Searches the givenZipInputStream
for an entry, then stops. This changes the active entry in the stream to the entry to find (if found) or no entry (if not found).- Parameters:
aStream
- the stream to search inaFileName
- the entry name- Returns:
- true if the entry was found, false if not
- Throws:
java.io.IOException
-
-