Package org.apache.tools.ant.types.resources

# Class ContentTransformingResource

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.types.DataType
org.apache.tools.ant.types.Resource
org.apache.tools.ant.types.resources.ResourceDecorator
org.apache.tools.ant.types.resources.ContentTransformingResource

All Implemented Interfaces:
  `java.lang.Cloneable`, `java.lang.Comparable<Resource>`, `java.lang.Iterable<Resource>`, `ResourceCollection`

Direct Known Subclasses:
  `CompressedResource`

    public abstract class ContentTransformingResource
    extends ResourceDecorator

A resource that transforms the content of another resource.

Wraps around another resource, delegates all queries (except getSize) to that other resource but transforms stream content on the fly.

Since:
  Ant 1.8

- ## Field Summary

  ### Fields inherited from class org.apache.tools.ant.types.Resource

  `MAGIC, UNKNOWN_DATETIME, UNKNOWN_SIZE`

  ### Fields inherited from class org.apache.tools.ant.types.DataType

  `checked, ref`

  ### Fields inherited from class org.apache.tools.ant.ProjectComponent

  `description, location, project`

- ## Constructor Summary

  Constructors
  Modifier | Constructor | Description
  --- | --- | ---
  `protected` | `ContentTransformingResource()` | no arg constructor
  `protected` | `ContentTransformingResource​(ResourceCollection other)` | Constructor with another resource to wrap.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `<T> T` | `as​(java.lang.Class<T> clazz)` | Suppress FileProvider, re-implement Appendable
  `java.io.InputStream` | `getInputStream()` | Get an InputStream for the Resource.
  `java.io.OutputStream` | `getOutputStream()` | Get an OutputStream for the Resource.
  `long` | `getSize()` | Get the size of this Resource.
  `protected boolean` | `isAppendSupported()` | Learn whether the transformation performed allows appends.
  `protected abstract java.io.InputStream` | `wrapStream​(java.io.InputStream in)` | Get a content-filtering/transforming InputStream.
  `protected abstract java.io.OutputStream` | `wrapStream​(java.io.OutputStream out)` | Get a content-filtering/transforming OutputStream.

  ### Methods inherited from class org.apache.tools.ant.types.resources.ResourceDecorator

  `addConfigured, compareTo, dieOnCircularReference, getLastModified, getName, getResource, hashCode, isDirectory, isExists, isFilesystemOnly, setDirectory, setExists, setLastModified, setName, setRefid, setSize`

  ### Methods inherited from class org.apache.tools.ant.types.Resource

  `asOptional, clone, equals, getMagicNumber, getRef, iterator, size, toLongString, toString`

  ### Methods inherited from class org.apache.tools.ant.types.DataType

  `checkAttributesAllowed, checkChildrenAllowed, circularReference, dieOnCircularReference, dieOnCircularReference, getCheckedRef, getCheckedRef, getCheckedRef, getCheckedRef, getCheckedRef, getDataTypeName, getRefid, invokeCircularReferenceCheck, isChecked, isReference, noChildrenAllowed, pushAndInvokeCircularReferenceCheck, setChecked, tooManyAttributes`

  ### Methods inherited from class org.apache.tools.ant.ProjectComponent

  `getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject`

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

  ### Methods inherited from interface org.apache.tools.ant.types.ResourceCollection

  `isEmpty, stream`

- ## Constructor Details

  - ### ContentTransformingResource

    protected ContentTransformingResource()
    no arg constructor

  - ### ContentTransformingResource

    protected ContentTransformingResource​(ResourceCollection other)
    Constructor with another resource to wrap.
    Parameters:
      `other` - the resource to wrap.

- ## Method Details

  - ### getSize

    public long getSize()
    Get the size of this Resource.
    Overrides:
      `getSize` in class `ResourceDecorator`
    Returns:
      the size, as a long, 0 if the Resource does not exist (for compatibility with java.io.File), or UNKNOWN_SIZE if not known.

  - ### getInputStream

    public java.io.InputStream getInputStream() throws java.io.IOException
    Get an InputStream for the Resource.
    Overrides:
      `getInputStream` in class `ResourceDecorator`
    Returns:
      an InputStream containing this Resource's content.
    Throws:
      `java.io.IOException` - if unable to provide the content of this Resource as a stream.
      `java.lang.UnsupportedOperationException` - if InputStreams are not supported for this Resource type.

  - ### getOutputStream

    public java.io.OutputStream getOutputStream() throws java.io.IOException
    Get an OutputStream for the Resource.
    Overrides:
      `getOutputStream` in class `ResourceDecorator`
    Returns:
      an OutputStream to which content can be written.
    Throws:
      `java.io.IOException` - if unable to provide the content of this Resource as a stream.
      `java.lang.UnsupportedOperationException` - if OutputStreams are not supported for this Resource type.

  - ### as

    public <T> T as​(java.lang.Class<T> clazz)
    Suppress FileProvider, re-implement Appendable
    Overrides:
      `as` in class `ResourceDecorator`
    Type Parameters:
      `T` - desired type
    Parameters:
      `clazz` - a class
    Returns:
      resource of a desired type

  - ### isAppendSupported

    protected boolean isAppendSupported()
    Learn whether the transformation performed allows appends.

    In general compressed outputs will become invalid if they are appended to, for example.

    This implementations returns false.

    Returns:
      boolean false

  - ### wrapStream

    protected abstract java.io.InputStream wrapStream​(java.io.InputStream in) throws java.io.IOException
    Get a content-filtering/transforming InputStream.
    Parameters:
      `in` - InputStream to wrap, will never be null.
    Returns:
      a compressed InputStream.
    Throws:
      `java.io.IOException` - if there is a problem.

  - ### wrapStream

    protected abstract java.io.OutputStream wrapStream​(java.io.OutputStream out) throws java.io.IOException
    Get a content-filtering/transforming OutputStream.
    Parameters:
      `out` - OutputStream to wrap, will never be null.
    Returns:
      a compressed OutputStream.
    Throws:
      `java.io.IOException` - if there is a problem.