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

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


The following commit(s) were added to refs/heads/FREEMARKER-172 by this push:
     new e64cb43  FREEMARKER-172 [freemarker-generator] Start with refactoring
e64cb43 is described below

commit e64cb43b53d3d6b961db5096388a11282a936da4
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Thu Feb 4 00:02:08 2021 +0100

    FREEMARKER-172 [freemarker-generator] Start with refactoring
---
 .../freemarker/generator/base/FreeMarkerConstants.java     |  6 +-----
 .../generator/base/datasource/DataSourceFactory.java       | 14 ++++++++++++++
 .../generator/datasource/DataSourceFactoryTest.java        | 13 +++++++++++++
 3 files changed, 28 insertions(+), 5 deletions(-)

diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
index c5e5dff..86a69ab 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
@@ -61,7 +61,6 @@ public class FreeMarkerConstants {
 
         /** Prefix to extract FreeMarker configuration settings from 
'freemarker-generator.properties' */
         public static final String SETTING_PREFIX = 
"freemarker.configuration.setting.";
-
     }
 
     public static class Location {
@@ -69,13 +68,13 @@ public class FreeMarkerConstants {
         private Location() {
         }
 
+        public static final String BYTES = "bytes";
         public static final String ENVIRONMENT = "env";
         public static final String INTERACTIVE = "interactive";
         public static final String INPUTSTREAM = "inputstream";
         public static final String STDIN = "stdin";
         public static final String SYSTEM = "system";
         public static final String STRING = "string";
-
     }
 
     public static class Model {
@@ -92,7 +91,6 @@ public class FreeMarkerConstants {
         public static final String FREEMARKER_TEMPLATE_DIRECTORIES = 
"freemarker.template.directories";
         public static final String FREEMARKER_USER_SYSTEM_PROPERTIES = 
"freemarker.user.system.properties";
         public static final String FREEMARKER_USER_PARAMETERS = 
"freemarker.user.parameters";
-
     }
 
     public static class SystemProperties {
@@ -105,7 +103,5 @@ public class FreeMarkerConstants {
 
         /** Home directory of the user */
         public static final String USER_HOME = "user.home";
-
     }
-
 }
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 8a888d9..d98b60c 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
@@ -17,6 +17,7 @@
 package org.apache.freemarker.generator.base.datasource;
 
 import org.apache.freemarker.generator.base.FreeMarkerConstants.Location;
+import org.apache.freemarker.generator.base.activation.ByteArrayDataSource;
 import org.apache.freemarker.generator.base.activation.CachingUrlDataSource;
 import org.apache.freemarker.generator.base.activation.InputStreamDataSource;
 import org.apache.freemarker.generator.base.activation.StringDataSource;
@@ -93,8 +94,21 @@ public abstract class DataSourceFactory {
         return create(name, group, file.toURI(), dataSource, contentType, 
charset);
     }
 
+    // == Bytes ============================================================
+
+    public static DataSource fromBytes(String name, String group, byte[] 
content, String contentType) {
+        final ByteArrayDataSource dataSource = new ByteArrayDataSource(name, 
content);
+        final URI uri = UriUtils.toUri(Location.BYTES + ":///");
+        return create(name, group, uri, dataSource, contentType, UTF_8);
+    }
+
     // == InputStream =======================================================
 
+    public static DataSource fromInputStream(String name, String group, 
InputStream is, String contentType, Charset charset) {
+        final URI uri = UriUtils.toUri(Location.INPUTSTREAM + ":///");
+        return fromInputStream(name, group, uri, is, contentType, charset);
+    }
+
     public static DataSource fromInputStream(
             String name,
             String group,
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceFactoryTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceFactoryTest.java
index 24714ef..0cec87f 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceFactoryTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceFactoryTest.java
@@ -69,6 +69,19 @@ public class DataSourceFactoryTest {
     }
 
     @Test
+    public void shouldCreateDataSourceFromBytes() {
+        final DataSource dataSource = DataSourceFactory.fromBytes("test.txt", 
"default", ANY_TEXT.getBytes(UTF_8), "text/plain");
+
+        assertEquals("test.txt", dataSource.getName());
+        assertEquals("default", dataSource.getGroup());
+        assertEquals(UTF_8, dataSource.getCharset());
+        assertEquals("text/plain", dataSource.getContentType());
+        assertTrue(dataSource.getUri().toString().startsWith("bytes:///"));
+        assertEquals(ANY_TEXT, dataSource.getText());
+        assertEquals(1, dataSource.getLines().size());
+    }
+
+    @Test
     public void shouldCreateDataSourceFromInputStream() {
         final URI uri = UriUtils.toUri(Location.INPUTSTREAM + ":///");
         final InputStream is = new 
ByteArrayInputStream(ANY_TEXT.getBytes(UTF_8));

Reply via email to