in src/main/java/org/apache/maven/plugins/pdf/DocumentDescriptorReader.java [94:151]
public DocumentModel readAndFilterDocumentDescriptor(File docDescriptor)
throws XmlPullParserException, IOException {
if (locale != null) {
String descriptorFilename = docDescriptor.getName();
String localized = FileUtils.removeExtension(descriptorFilename)
+ '_'
+ locale.getLanguage()
+ '.'
+ FileUtils.getExtension(descriptorFilename);
File localizedDocDescriptor = new File(docDescriptor.getParentFile(), localized);
if (localizedDocDescriptor.exists()) {
docDescriptor = localizedDocDescriptor;
}
}
try {
// System properties
final Properties filterProperties = System.getProperties();
// Project properties
if (project != null && project.getProperties() != null) {
filterProperties.putAll(project.getProperties());
}
final Interpolator interpolator = new RegexBasedInterpolator();
interpolator.addValueSource(new MapBasedValueSource(filterProperties));
interpolator.addValueSource(new EnvarBasedValueSource());
interpolator.addValueSource(new ObjectBasedValueSource(project) {
/** {@inheritDoc} */
public Object getValue(final String expression) {
try {
return ReflectionValueExtractor.evaluate(expression, project);
} catch (Exception e) {
addFeedback("Failed to extract '" + expression + "' from: " + project, e);
}
return null;
}
});
final DateBean bean = new DateBean();
interpolator.addValueSource(new ObjectBasedValueSource(bean));
try (Reader reader = ReaderFactory.newXmlReader(docDescriptor)) {
final String interpolatedDoc = interpolator.interpolate(IOUtil.toString(reader));
if (log != null && log.isDebugEnabled()) {
log.debug("Interpolated document descriptor (" + docDescriptor.getAbsolutePath() + ")\n"
+ interpolatedDoc);
}
// No Strict
return new DocumentXpp3Reader().read(new StringReader(interpolatedDoc), false);
}
} catch (InterpolationException e) {
throw new IOException("Error interpolating document descriptor", e);
}
}