Search in sources :

Example 1 with ChainableReader

use of org.apache.tools.ant.filters.ChainableReader in project ant by apache.

the class ChainReaderHelper method getAssembledReader.

/**
 * Assemble the reader
 * @return the assembled reader
 * @exception BuildException if an error occurs
 */
public ChainReader getAssembledReader() throws BuildException {
    if (primaryReader == null) {
        throw new BuildException("primaryReader must not be null.");
    }
    Reader instream = primaryReader;
    final List<AntClassLoader> classLoadersToCleanUp = new ArrayList<>();
    final List<Object> finalFilters = filterChains.stream().map(FilterChain::getFilterReaders).flatMap(Collection::stream).collect(Collectors.toList());
    if (!finalFilters.isEmpty()) {
        boolean success = false;
        try {
            for (Object o : finalFilters) {
                if (o instanceof AntFilterReader) {
                    instream = expandReader((AntFilterReader) o, instream, classLoadersToCleanUp);
                } else if (o instanceof ChainableReader) {
                    setProjectOnObject(o);
                    instream = ((ChainableReader) o).chain(instream);
                    setProjectOnObject(instream);
                }
            }
            success = true;
        } finally {
            if (!success && !classLoadersToCleanUp.isEmpty()) {
                cleanUpClassLoaders(classLoadersToCleanUp);
            }
        }
    }
    return new ChainReader(instream, classLoadersToCleanUp);
}
Also used : AntFilterReader(org.apache.tools.ant.types.AntFilterReader) FilterChain(org.apache.tools.ant.types.FilterChain) ArrayList(java.util.ArrayList) FilterReader(java.io.FilterReader) BaseFilterReader(org.apache.tools.ant.filters.BaseFilterReader) Reader(java.io.Reader) ChainableReader(org.apache.tools.ant.filters.ChainableReader) AntFilterReader(org.apache.tools.ant.types.AntFilterReader) AntClassLoader(org.apache.tools.ant.AntClassLoader) BuildException(org.apache.tools.ant.BuildException) ChainableReader(org.apache.tools.ant.filters.ChainableReader)

Aggregations

FilterReader (java.io.FilterReader)1 Reader (java.io.Reader)1 ArrayList (java.util.ArrayList)1 AntClassLoader (org.apache.tools.ant.AntClassLoader)1 BuildException (org.apache.tools.ant.BuildException)1 BaseFilterReader (org.apache.tools.ant.filters.BaseFilterReader)1 ChainableReader (org.apache.tools.ant.filters.ChainableReader)1 AntFilterReader (org.apache.tools.ant.types.AntFilterReader)1 FilterChain (org.apache.tools.ant.types.FilterChain)1