public class IOPathResource extends BundleResourceBase implements java.io.Serializable
BundleResource
backed by an IOPath
.Constructor and Description |
---|
IOPathResource(IOPath ioPath,
java.lang.String contentType)
Create a
BundleResource backed by an IOPath, specifying a content type. |
IOPathResource(IOPath ioPath,
java.lang.String contentType,
java.lang.String format)
Create a
BundleResource backed by an IOPath, specifying a content type string and format string. |
Modifier and Type | Method and Description |
---|---|
boolean |
equals(java.lang.Object o) |
java.util.Optional<java.io.InputStream> |
getInputStream()
Get an
InputStream for this resource, or Optional.empty. |
java.util.Optional<IOPath> |
getIOPath()
Get the
IOPath backing this resource, or Optional.empty. |
java.util.Optional<java.io.OutputStream> |
getOutputStream()
Get an
OutputStream for this resource, or Optional.empty. |
java.util.Optional<SeekableStream> |
getSeekableStream()
Get a
SeekableStream for this resource, or Optional.empty. |
SignatureStream |
getSignatureStream(int signatureProbeLength)
Get a
SignatureStream for this resource. |
int |
hashCode() |
boolean |
hasInputType()
Return true if is this resource is backed by a type that can be used for input.
|
boolean |
hasOutputType()
Return true if this resource is backed by a type that can be used for output.
|
boolean |
hasSeekableStream()
Returns true if this resource can be rendered as a
SeekableStream . |
getContentType, getDisplayName, getFileFormat, toString
public IOPathResource(IOPath ioPath, java.lang.String contentType)
BundleResource
backed by an IOPath, specifying a content type.ioPath
- The IOPath for this resource. May not be null.contentType
- The content type for this resource. May not be null or 0-length.public IOPathResource(IOPath ioPath, java.lang.String contentType, java.lang.String format)
BundleResource
backed by an IOPath, specifying a content type string and format string.ioPath
- The IOPath for this resource. May not be null.contentType
- The content type for this resource. May not be mull or 0-length.format
- The format for this resource. May not be null or 0-length.public java.util.Optional<IOPath> getIOPath()
BundleResource
IOPath
backing this resource, or Optional.empty.getIOPath
in interface BundleResource
getIOPath
in class BundleResourceBase
IOPath
backing this resource, or Optional.empty if the resource has no backing
IOPath
public java.util.Optional<java.io.InputStream> getInputStream()
InputStream
for this resource, or Optional.empty.
return a new stream for the IOPath managed by this resourcegetInputStream
in interface BundleResource
getInputStream
in class BundleResourceBase
public java.util.Optional<java.io.OutputStream> getOutputStream()
BundleResource
OutputStream
for this resource, or Optional.empty.getOutputStream
in interface BundleResource
getOutputStream
in class BundleResourceBase
OutputStream
for this resource, or Optional.empty if BundleResource.hasOutputType()
is false for this resourcepublic boolean hasInputType()
BundleResource
InputStreamResource
, can be used for input but not for output (see
BundleResource.hasOutputType()
. Others, such as OutputStreamResource
, can be used for output but not
for input. Some resource types may be suitable for both (for example see IOPathResource
).
The determination is based only on the type of the resource, and does not imply a guarantee about whether the resource type is actually readable.
hasInputType
in interface BundleResource
hasInputType
in class BundleResourceBase
public boolean hasOutputType()
BundleResource
InputStreamResource
, can be used for input but not for output (see
BundleResource.hasOutputType()
. Others, such as OutputStreamResource
, can be used for output but
not for input. Some resource types may be suitable for both (for example see IOPathResource
).
The determination is based only on the type of the resource, and does not imply a guarantee about whether the resource is actually writeable.
hasOutputType
in interface BundleResource
hasOutputType
in class BundleResourceBase
public boolean hasSeekableStream()
BundleResource
SeekableStream
.hasSeekableStream
in interface BundleResource
hasSeekableStream
in class BundleResourceBase
SeekableStream
(see BundleResource.getSeekableStream()
)public java.util.Optional<SeekableStream> getSeekableStream()
BundleResource
SeekableStream
for this resource, or Optional.empty.getSeekableStream
in interface BundleResource
getSeekableStream
in class BundleResourceBase
SeekableStream
for this resource, or Optional.empty if this is not an input
type (see BundleResource.hasInputType()
), or is an input type for which no SeekableStream
can be obtained (see BundleResource.hasSeekableStream()
).public SignatureStream getSignatureStream(int signatureProbeLength)
BundleResource
SignatureStream
for this resource.
This method requires access to the first signatureProbeLength
bytes of the underlying
resource. BundleResource
implementations that are backed by raw streams that can only be consumed
once, such as InputStreamResource
, may consume and buffer a portion of the underlying resource's
stream in order to allow subsequent callers of the BundleResource.getInputStream()
) method to be presented with
the entire stream, including the signature. Calls to this method may have the side effect of changing
or resetting the current position of the underlying stream; serial calls to
BundleResource.getSignatureStream(int)
on the same object are not necessarily idempotent; and implementations
are free to throw to prevent serial calls to this method.getSignatureStream
in interface BundleResource
signatureProbeLength
- the number of bytes of the underlying resource to include in the
SignatureStream
stream. signatureProbeLength
should be
expressed in "compressed(/encrypted)" space rather than "plaintext" space.
For example, a file format signature may consist of n
bytes of ASCII,
but for formats that use compressed streams, the codec may need access to an
entire compressed block in order to inspect those n
bytes. signatureProbeLength
should use the compressed block size, in order to ensure
that the SignatureStream
contains a semantically meaningful fragment
of the underlying input.SignatureStream
over the first signatureProbeLength
bytes of this
resource, for use with signature probing for codec resolution. Only applicable to resources for
which BundleResource.hasInputType()
is true.public boolean equals(java.lang.Object o)
equals
in class BundleResourceBase
public int hashCode()
hashCode
in class BundleResourceBase