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));