if (filtersCount > 0) {
for (int i = 0; i < filtersCount; i++) {
Object o = finalFilters.elementAt(i);
if (o instanceof AntFilterReader) {
final AntFilterReader filter
= (AntFilterReader) finalFilters.elementAt(i);
final String className = filter.getClassName();
final Path classpath = filter.getClasspath();
final Project pro = filter.getProject();
if (className != null) {
try {
Class clazz = null;
if (classpath == null) {
clazz = Class.forName(className);
} else {
AntClassLoader al
= pro.createClassLoader(classpath);
clazz = Class.forName(className, true, al);
}
if (clazz != null) {
if (!FilterReader.class.isAssignableFrom(clazz)) {
throw new BuildException(className
+ " does not extend java.io.FilterReader");
}
final Constructor[] constructors =
clazz.getConstructors();
int j = 0;
boolean consPresent = false;
for (; j < constructors.length; j++) {
Class[] types = constructors[j]
.getParameterTypes();
if (types.length == 1
&& types[0].isAssignableFrom(Reader.class)) {
consPresent = true;
break;
}
}
if (!consPresent) {
throw new BuildException(className
+ " does not define a public constructor"
+ " that takes in a Reader as its "
+ "single argument.");
}
final Reader[] rdr = {instream};
instream =
(Reader) constructors[j].newInstance((Object[]) rdr);
setProjectOnObject(instream);
if (Parameterizable.class.isAssignableFrom(clazz)) {
final Parameter[] params = filter.getParams();
((Parameterizable)
instream).setParameters(params);
}
}
} catch (final ClassNotFoundException cnfe) {