Package org.apache.wicket.util.resource
Class ZipResourceStream
- java.lang.Object
-
- org.apache.wicket.util.resource.AbstractResourceStream
-
- org.apache.wicket.util.resource.ZipResourceStream
-
- All Implemented Interfaces:
Closeable
,Serializable
,AutoCloseable
,IClusterable
,IResourceStream
,IModifiable
public class ZipResourceStream extends AbstractResourceStream
An IResourceStream that ZIPs a directory's contents on the flyNOTE 1. As a future improvement, cache a map of generated ZIP files for every directory and use a Watcher to detect modifications in this directory. Using ehcache would be good for that, but it's not in Wicket dependencies yet. No caching of the generated ZIP files is done yet.
NOTE 2. As a future improvement, implement getLastModified() and request ResourceStreamRequestTarget to generate Last-Modified and Expires HTTP headers. No HTTP cache headers are provided yet. See WICKET-385
- Author:
- Jean-Baptiste Quenot
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description ZipResourceStream(File dir)
Construct.ZipResourceStream(File dir, boolean recursive)
Construct.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Closes the resource.String
getContentType()
Gets the mime type of this resourceInputStream
getInputStream()
Gets the resource stream.Instant
lastModifiedTime()
Gets the last time this modifiable thing changed.Bytes
length()
Gets the size of this resource-
Methods inherited from class org.apache.wicket.util.resource.AbstractResourceStream
getLocale, getStyle, getVariation, setLocale, setStyle, setVariation
-
-
-
-
Constructor Detail
-
ZipResourceStream
public ZipResourceStream(File dir, boolean recursive)
Construct.- Parameters:
dir
- The directory where to look for files. The directory itself will not be included in the ZIP.recursive
- If true, all subdirs will be zipped as well
-
ZipResourceStream
public ZipResourceStream(File dir)
Construct. Until Wicket 1.4-RC3 recursive zip was not supported. In order not to change the behavior, using this constructor will default to recursive == false.- Parameters:
dir
- The directory where to look for files. The directory itself will not be included in the ZIP.
-
-
Method Detail
-
close
public void close() throws IOException
Description copied from interface:IResourceStream
Closes the resource. Normally, this includes closing any underlying input stream returned by getInputStream().- Throws:
IOException
- See Also:
IResourceStream.close()
-
getContentType
public String getContentType()
Description copied from interface:IResourceStream
Gets the mime type of this resource- Specified by:
getContentType
in interfaceIResourceStream
- Overrides:
getContentType
in classAbstractResourceStream
- Returns:
- The mime type of this resource, such as "image/jpeg" or "text/html". Return null to let ResourceStreamRequestHandler handle the Content-Type automatically
- See Also:
IResourceStream.getContentType()
-
getInputStream
public InputStream getInputStream() throws ResourceStreamNotFoundException
Description copied from interface:IResourceStream
Gets the resource stream. You should not directly close this stream. Instead call the close() method on IResourceStream.- Returns:
- Returns the inputStream.
- Throws:
ResourceStreamNotFoundException
- See Also:
IResourceStream.getInputStream()
-
length
public Bytes length()
Description copied from interface:IResourceStream
Gets the size of this resource- Specified by:
length
in interfaceIResourceStream
- Overrides:
length
in classAbstractResourceStream
- Returns:
- The size of this resource in the number of bytes, or
null
if unknown - See Also:
AbstractResourceStream.length()
-
lastModifiedTime
public Instant lastModifiedTime()
Description copied from interface:IModifiable
Gets the last time this modifiable thing changed.- Specified by:
lastModifiedTime
in interfaceIModifiable
- Overrides:
lastModifiedTime
in classAbstractResourceStream
- Returns:
- the last modification
Time
ornull
if that information is not available - See Also:
AbstractResourceStream.lastModifiedTime()
-
-