* @param resolver The initial resolver to use.
* @param reader The source XML reader.
* @return The XML PI filter.
*/
private PreprocessingFilter createPIHandler(EntityResolver resolver, XMLReader reader) {
PreprocessingFilter filter = new PreprocessingFilter(reader);
ProcessingInstructionHandler resolvingHandler = new ExpressionHandler(new VariableResolver() {
public Object resolveVariable(String name) throws ELException {
if ("date".equals(name)) {
return DateFormat.getDateInstance(DateFormat.LONG).format(new Date());
} else if ("project".equals(name)) {
return getProject();
} else {
return getProject().getProperties().get(name);
}
}
}, getLog());
filter.setHandlers(Arrays.asList(new Object[] { resolvingHandler }));
filter.setEntityResolver(resolver);
return filter;
}