This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch FREEMARKER-154
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git

commit 6a8d2e0e825ba0f02ed0ca16bfdffb81bb82f4d5
Author: ddekany <[email protected]>
AuthorDate: Mon Sep 13 00:26:20 2021 +0200

    Allow overriding environment variables with a system properties with 
special prefix for env:\\ data source. It's useful when running examples for 
the documentation, and in tests, because Java can't set environment variables.
---
 .../generator/base/datasource/DataSourceFactory.java         | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceFactory.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceFactory.java
index 6930e91..e6f37f5 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceFactory.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSourceFactory.java
@@ -49,6 +49,8 @@ import static 
org.apache.freemarker.generator.base.FreeMarkerConstants.DEFAULT_G
  */
 public abstract class DataSourceFactory {
 
+    private static final String ENV_VARIABLE_OVERRIDE_SYSTEM_PROPERTY_PREFIX = 
"freemarker.generator.datasource.envOverride.";
+
     private DataSourceFactory() {
     }
 
@@ -161,9 +163,15 @@ public abstract class DataSourceFactory {
     }
 
     public static DataSource fromEnvironment(String name, String group, String 
key, String contentType) {
-        Validate.notEmpty(System.getenv(key), "Environment variable not found: 
" + key);
+        // Overriding the value with system property is useful when running 
examples for the documentation, and in tests,
+        // because Java can't set environment variables.
+        String value = 
System.getProperty(ENV_VARIABLE_OVERRIDE_SYSTEM_PROPERTY_PREFIX + key);
+        if (value == null) {
+            value = System.getenv(key);
+        }
+        Validate.notEmpty(value, "Environment variable not found: " + key);
 
-        final StringDataSource dataSource = new StringDataSource(name, 
System.getenv(key), contentType, UTF_8);
+        final StringDataSource dataSource = new StringDataSource(name, value, 
contentType, UTF_8);
         final URI uri = UriUtils.toUri(Location.ENVIRONMENT, key);
         return create(name, group, uri, dataSource, contentType, UTF_8, 
noProperties());
     }

Reply via email to