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);
}
Aggregations