Added system property to override generation time (useful to prevent meaningless differences when comparing outputs for testing)
diff --git a/src/main/org/freemarker/docgen/Transform.java b/src/main/org/freemarker/docgen/Transform.java
index 9916bcb..88fffd9 100644
--- a/src/main/org/freemarker/docgen/Transform.java
+++ b/src/main/org/freemarker/docgen/Transform.java
@@ -79,6 +79,8 @@
import freemarker.template.TemplateModelException;
import freemarker.template.TemplateScalarModel;
import freemarker.template.utility.ClassUtil;
+import freemarker.template.utility.DateUtil;
+import freemarker.template.utility.DateUtil.DateParseException;
import freemarker.template.utility.StringUtil;
/**
@@ -578,6 +580,8 @@
private static final Charset UTF_8 = Charset.forName("UTF-8");
+ static final String SYSPROP_GENERATION_TIME = "docgen.generationTime";
+
// Docgen-specific XML attributes (added during DOM-tree postediting):
/**
@@ -1316,8 +1320,23 @@
VAR_ROOT_ELEMENT, doc.getDocumentElement());
// Calculated data:
- fmConfig.setSharedVariable(
- VAR_TRANSFORM_START_TIME, new Date());
+ {
+ Date generationTime;
+ String generationTimeStr = System.getProperty(SYSPROP_GENERATION_TIME);
+ if (generationTimeStr == null) {
+ generationTime = new Date();
+ } else {
+ try {
+ generationTime = DateUtil.parseISO8601DateTime(generationTimeStr, DateUtil.UTC,
+ new DateUtil.TrivialCalendarFieldsToDateConverter());
+ } catch (DateParseException e) {
+ throw new DocgenException(
+ "Malformed \"" + SYSPROP_GENERATION_TIME
+ + "\" system property value: " + generationTimeStr, e);
+ }
+ }
+ fmConfig.setSharedVariable(VAR_TRANSFORM_START_TIME, generationTime);
+ }
fmConfig.setSharedVariable(
VAR_INDEX_ENTRIES, indexEntries);
int tofCntLv1 = countTOFEntries(tocNodes.get(0), 1);