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

commit fc7ec0475788ce023fce9b7a65668708f7e7dea2
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Wed Feb 3 23:54:23 2021 +0100

    FREEMARKER-172 [freemarker-generator] Start with refactoring
---
 .../generator/base/datasource/DataSource.java      | 47 +++++++++++++++++-----
 .../generator/datasource/DataSourceLoaderTest.java | 10 ++++-
 .../generator/datasource/DataSourceTest.java       |  4 +-
 3 files changed, 48 insertions(+), 13 deletions(-)

diff --git 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
index 9634ecb..d01df00 100644
--- 
a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
+++ 
b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/datasource/DataSource.java
@@ -43,7 +43,7 @@ import static 
org.apache.freemarker.generator.base.mime.Mimetypes.MIME_APPLICATI
 
 /**
  * Data source which encapsulates data to be used for rendering
- * a template. When accessing content it is loaded on demand on not
+ * a template. When accessing content it is loaded on demand and not
  * kept in memory to allow processing of large volumes of data.
  * <br>
  * There is also special support of <code>UrlDataSource</code> since
@@ -62,7 +62,7 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
     public static final String METADATA_GROUP = "group";
     public static final String METADATA_NAME = "name";
     public static final String METADATA_URI = "uri";
-    public static final String METADATA_URI_PATH = "uriPath";
+    public static final String METADATA_MIME_TYPE = "mimeType";
 
     /** Human-readable name of the data source */
     private final String name;
@@ -140,14 +140,32 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
         return group;
     }
 
+    /**
+     * Get the file name from the underlying "FileDataSource". All
+     * other data sources will return an empty string.
+     *
+     * @return file name or empty string
+     */
     public String getFileName() {
         return isFileDataSource() ? 
FilenameUtils.getName(dataSource.getName()) : "";
     }
 
+    /**
+     * Get the base name from the underlying "FileDataSource". All
+     * other data sources will return an empty string.
+     *
+     * @return base name or empty string
+     */
     public String getBaseName() {
         return FilenameUtils.getBaseName(getFileName());
     }
 
+    /**
+     * Get the extension from the underlying "FileDataSource". All
+     * other data sources will return an empty string.
+     *
+     * @return base name or empty string
+     */
     public String getExtension() {
         return FilenameUtils.getExtension(getFileName());
     }
@@ -180,11 +198,11 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
      * @return Length of data source or UNKNOWN_LENGTH
      */
     public long getLength() {
-        if (dataSource instanceof FileDataSource) {
+        if (isFileDataSource()) {
             return ((FileDataSource) dataSource).getFile().length();
-        } else if (dataSource instanceof StringDataSource) {
+        } else if (isStringDataSource()) {
             return ((StringDataSource) dataSource).length();
-        } else if (dataSource instanceof ByteArrayDataSource) {
+        } else if (isByteArrayDataSource()) {
             return ((ByteArrayDataSource) dataSource).length();
         } else {
             return DATASOURCE_UNKNOWN_LENGTH;
@@ -246,7 +264,7 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
     }
 
     /**
-     * Returns an Iterator for the lines in an <code>InputStream</code>, using
+     * Returns an iterator for the lines in an <code>InputStream</code>, using
      * the default character encoding specified. The exposed iterator is closed
      * by the <code>DataSource</code>.
      *
@@ -282,7 +300,7 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
     }
 
     /**
-     * Expose various parts of the metadata as simple strings to cater for 
filtering in  a script.
+     * Expose various parts of the metadata as simple strings to cater for 
filtering in a script.
      *
      * @param key key part key
      * @return value
@@ -302,10 +320,10 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
                 return getGroup();
             case METADATA_NAME:
                 return getName();
-            case METADATA_URI_PATH:
-                return uri.getPath();
             case METADATA_URI:
                 return uri.toString();
+            case METADATA_MIME_TYPE:
+                return getMimeType();
             default:
                 throw new IllegalArgumentException("Unknown key: " + key);
         }
@@ -356,7 +374,8 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
         if (StringUtils.isNotEmpty(contentType)) {
             return contentType;
         } else {
-            return StringUtils.firstNonEmpty(dataSource.getContentType(), 
MIME_APPLICATION_OCTET_STREAM);
+            final String contentType = dataSource.getContentType();
+            return StringUtils.firstNonEmpty(contentType, 
MIME_APPLICATION_OCTET_STREAM);
         }
     }
 
@@ -364,4 +383,12 @@ public class DataSource implements Closeable, 
javax.activation.DataSource {
         return dataSource instanceof FileDataSource;
     }
 
+    private boolean isStringDataSource() {
+        return dataSource instanceof StringDataSource;
+    }
+
+    private boolean isByteArrayDataSource() {
+        return dataSource instanceof ByteArrayDataSource;
+    }
+
 }
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java
index cbe9aa1..729004c 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceLoaderTest.java
@@ -49,6 +49,7 @@ public class DataSourceLoaderTest {
             assertEquals(ANY_FILE_NAME, dataSource.getFileName());
             assertEquals(UTF_8, dataSource.getCharset());
             assertEquals(MIME_APPLICATION_XML, dataSource.getContentType());
+            assertEquals(MIME_APPLICATION_XML, dataSource.getMimeType());
             assertEquals(ANY_FILE.toURI(), dataSource.getUri());
             assertFalse(dataSource.getLines().isEmpty());
         }
@@ -62,6 +63,7 @@ public class DataSourceLoaderTest {
             assertEquals(ANY_FILE_NAME, dataSource.getFileName());
             assertEquals(UTF_8, dataSource.getCharset());
             assertEquals(MIME_APPLICATION_XML, dataSource.getContentType());
+            assertEquals(MIME_APPLICATION_XML, dataSource.getMimeType());
             assertEquals(ANY_FILE.toURI(), dataSource.getUri());
             assertFalse(dataSource.getLines().isEmpty());
         }
@@ -75,6 +77,7 @@ public class DataSourceLoaderTest {
             assertEquals(ANY_FILE_NAME, dataSource.getFileName());
             assertEquals(UTF_8, dataSource.getCharset());
             assertEquals(MIME_APPLICATION_XML, dataSource.getContentType());
+            assertEquals(MIME_APPLICATION_XML, dataSource.getMimeType());
             assertEquals(ANY_FILE.toURI(), dataSource.getUri());
             assertFalse(dataSource.getLines().isEmpty());
         }
@@ -87,6 +90,7 @@ public class DataSourceLoaderTest {
             assertEquals("source", dataSource.getName());
             assertEquals(UTF_8, dataSource.getCharset());
             assertEquals(MIME_APPLICATION_XML, dataSource.getContentType());
+            assertEquals(MIME_APPLICATION_XML, dataSource.getMimeType());
             assertEquals(ANY_FILE.toURI(), dataSource.getUri());
             assertFalse(dataSource.getLines().isEmpty());
         }
@@ -105,7 +109,7 @@ public class DataSourceLoaderTest {
     }
 
     @Test
-    @Ignore
+    @Ignore("Requires internet access")
     public void shouldCreateDataSourceFromUrl() {
         try (DataSource dataSource = 
dataSourceLoader().load("https://jsonplaceholder.typicode.com/posts/2";)) {
             assertEquals("https://jsonplaceholder.typicode.com/posts/2";, 
dataSource.getName());
@@ -113,13 +117,14 @@ public class DataSourceLoaderTest {
             assertEquals("", dataSource.getBaseName());
             assertEquals("", dataSource.getExtension());
             assertEquals("application/json; charset=utf-8", 
dataSource.getContentType());
+            assertEquals("application/json", dataSource.getMimeType());
             assertEquals(UTF_8, dataSource.getCharset());
             assertEquals("https://jsonplaceholder.typicode.com/posts/2";, 
dataSource.getUri().toString());
         }
     }
 
     @Test
-    @Ignore
+    @Ignore("Requires internet access")
     public void shouldCreateDataSourceFromNamedURL() {
         try (DataSource dataSource = 
dataSourceLoader().load("content:www=https://www.google.com?foo=bar#contenttype=application/json";))
 {
             assertEquals("content", dataSource.getName());
@@ -128,6 +133,7 @@ public class DataSourceLoaderTest {
             assertEquals("", dataSource.getExtension());
             assertEquals("www", dataSource.getGroup());
             assertEquals("text/html; charset=ISO-8859-1", 
dataSource.getContentType());
+            assertEquals("text/html", dataSource.getMimeType());
             assertEquals("ISO-8859-1", dataSource.getCharset().toString());
             
assertEquals("https://www.google.com?foo=bar#contenttype=application/json";, 
dataSource.getUri().toString());
         }
diff --git 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceTest.java
 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceTest.java
index 05c2382..09f860b 100644
--- 
a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceTest.java
+++ 
b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/datasource/DataSourceTest.java
@@ -20,6 +20,7 @@ import org.apache.commons.io.LineIterator;
 import org.apache.freemarker.generator.base.datasource.DataSource;
 import org.apache.freemarker.generator.base.datasource.DataSourceFactory;
 import org.apache.freemarker.generator.base.mime.Mimetypes;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.io.Closeable;
@@ -80,8 +81,8 @@ public class DataSourceTest {
         }
     }
 
-    // @Ignore("Requires internet connection")
     @Test
+    @Ignore("Requires internet access")
     public void shouldSupportUrlDataSource() {
         try (DataSource dataSource = 
DataSourceFactory.fromUrl("www.google.com", DEFAULT_GROUP, 
toUrl("https://www.google.com/?foo=bar";), null, null)) {
             assertEquals("www.google.com", dataSource.getName());
@@ -89,6 +90,7 @@ public class DataSourceTest {
             assertEquals("", dataSource.getBaseName());
             assertEquals("", dataSource.getExtension());
             assertEquals("https://www.google.com/?foo=bar";, 
dataSource.getUri().toString());
+            assertEquals("text/html; charset=ISO-8859-1", 
dataSource.getContentType());
             assertEquals(MIME_TEXT_HTML, dataSource.getMimeType());
             assertEquals("ISO-8859-1", dataSource.getCharset().name());
             assertEquals(-1, dataSource.getLength());

Reply via email to