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
`protected` `ContentTransformingResource()` no arg constructor
`protected` `ContentTransformingResource​(ResourceCollection other)` Constructor with another resource to wrap.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`<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 Detail

#### ContentTransformingResource

    protected ContentTransformingResource()

no arg constructor

#### ContentTransformingResource

    protected ContentTransformingResource​(ResourceCollection other)

Constructor with another resource to wrap.

Parameters:
  `other` - the resource to wrap.

### Method Detail

#### 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.