Forward ported from 2.3-gae: HTMLOutputFormat, XMLOutputFormat, 
XHTMLOutputFormat aren't final classes anymore, furthermore XHTMLOutputFormat 
now extends XMLOutputFormat. Same applies to the respective 
TemplateOutputModel-s (TemplateHTMLOutputModel is not final anymore, etc.). 
This allows defining new custom markup output format classes that will work 
with program logic that's only prepared for the standard markup output formats, 
because instanceof SomeStandardOutputFromat  will return true for them.


Project: http://git-wip-us.apache.org/repos/asf/freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/freemarker/commit/81eb29c5
Tree: http://git-wip-us.apache.org/repos/asf/freemarker/tree/81eb29c5
Diff: http://git-wip-us.apache.org/repos/asf/freemarker/diff/81eb29c5

Branch: refs/heads/3
Commit: 81eb29c565cd1b65bf4a254c311a18b633dbd622
Parents: 333c4ca
Author: ddekany <ddek...@apache.org>
Authored: Wed Dec 19 18:52:55 2018 +0100
Committer: ddekany <ddek...@apache.org>
Committed: Wed Dec 19 18:52:55 2018 +0100

----------------------------------------------------------------------
 .../core/outputformat/impl/HTMLOutputFormat.java         | 11 ++++++-----
 .../core/outputformat/impl/RTFOutputFormat.java          |  4 ++--
 .../core/outputformat/impl/TemplateHTMLOutputModel.java  |  4 ++--
 .../core/outputformat/impl/TemplateRTFOutputModel.java   |  4 ++--
 .../core/outputformat/impl/TemplateXHTMLOutputModel.java |  4 ++--
 .../core/outputformat/impl/TemplateXMLOutputModel.java   |  4 ++--
 .../core/outputformat/impl/XHTMLOutputFormat.java        | 10 +++++-----
 .../core/outputformat/impl/XMLOutputFormat.java          |  4 ++--
 8 files changed, 23 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/freemarker/blob/81eb29c5/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/HTMLOutputFormat.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/HTMLOutputFormat.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/HTMLOutputFormat.java
index 1b9f367..efdf7b7 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/HTMLOutputFormat.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/HTMLOutputFormat.java
@@ -27,18 +27,19 @@ import org.apache.freemarker.core.outputformat.OutputFormat;
 import org.apache.freemarker.core.util._StringUtils;
 
 /**
- * Represents the HTML output format (MIME type "text/html", name "HTML"). 
This format escapes by default (via
- * {@link _StringUtils#XHTMLEnc(String)}). The {@code ?html}, {@code ?xhtml} 
and {@code ?xml} built-ins silently bypass
- * template output values of the type produced by this output format ({@link 
TemplateHTMLOutputModel}).
+ * Represents the HTML output format (MIME type "text/html", name "HTML"). 
This format escapes by default, replacing
+ * all reserved HTML characters (and character sequences) with entity 
references. The {@code ?html}, {@code ?xhtml}
+ * and {@code ?xml} built-ins silently bypass template output values of the 
type produced by this output format
+ * ({@link TemplateHTMLOutputModel}).
  */
-public final class HTMLOutputFormat extends 
CommonMarkupOutputFormat<TemplateHTMLOutputModel> {
+public class HTMLOutputFormat extends 
CommonMarkupOutputFormat<TemplateHTMLOutputModel> {
 
     /**
      * The only instance (singleton) of this {@link OutputFormat}.
      */
     public static final HTMLOutputFormat INSTANCE = new HTMLOutputFormat();
     
-    private HTMLOutputFormat() {
+    protected HTMLOutputFormat() {
         // Only to decrease visibility
     }
     

http://git-wip-us.apache.org/repos/asf/freemarker/blob/81eb29c5/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/RTFOutputFormat.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/RTFOutputFormat.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/RTFOutputFormat.java
index fad1293..77df683 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/RTFOutputFormat.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/RTFOutputFormat.java
@@ -31,14 +31,14 @@ import org.apache.freemarker.core.util._StringUtils;
  * default (via {@link _StringUtils#RTFEnc(String)}). The {@code ?rtf} 
built-in silently bypasses template output values
  * of the type produced by this output format ({@link TemplateRTFOutputModel}).
  */
-public final class RTFOutputFormat extends 
CommonMarkupOutputFormat<TemplateRTFOutputModel> {
+public class RTFOutputFormat extends 
CommonMarkupOutputFormat<TemplateRTFOutputModel> {
 
     /**
      * The only instance (singleton) of this {@link OutputFormat}.
      */
     public static final RTFOutputFormat INSTANCE = new RTFOutputFormat();
     
-    private RTFOutputFormat() {
+    protected RTFOutputFormat() {
         // Only to decrease visibility
     }
     

http://git-wip-us.apache.org/repos/asf/freemarker/blob/81eb29c5/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateHTMLOutputModel.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateHTMLOutputModel.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateHTMLOutputModel.java
index 554a7e4..1ae00d0 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateHTMLOutputModel.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateHTMLOutputModel.java
@@ -23,12 +23,12 @@ import 
org.apache.freemarker.core.outputformat.CommonTemplateMarkupOutputModel;
 /**
  * Stores HTML markup to be printed; used with {@link HTMLOutputFormat}.
  */
-public final class TemplateHTMLOutputModel extends 
CommonTemplateMarkupOutputModel<TemplateHTMLOutputModel> {
+public class TemplateHTMLOutputModel extends 
CommonTemplateMarkupOutputModel<TemplateHTMLOutputModel> {
     
     /**
      * See {@link 
CommonTemplateMarkupOutputModel#CommonTemplateMarkupOutputModel(String, 
String)}.
      */
-    TemplateHTMLOutputModel(String plainTextContent, String markupContent) {
+    protected TemplateHTMLOutputModel(String plainTextContent, String 
markupContent) {
         super(plainTextContent, markupContent);
     }
 

http://git-wip-us.apache.org/repos/asf/freemarker/blob/81eb29c5/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateRTFOutputModel.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateRTFOutputModel.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateRTFOutputModel.java
index 6a348af..5e1a8ec 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateRTFOutputModel.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateRTFOutputModel.java
@@ -23,12 +23,12 @@ import 
org.apache.freemarker.core.outputformat.CommonTemplateMarkupOutputModel;
 /**
  * Stores RTF markup to be printed; used with {@link RTFOutputFormat}.
  */
-public final class TemplateRTFOutputModel extends 
CommonTemplateMarkupOutputModel<TemplateRTFOutputModel> {
+public class TemplateRTFOutputModel extends 
CommonTemplateMarkupOutputModel<TemplateRTFOutputModel> {
     
     /**
      * See {@link 
CommonTemplateMarkupOutputModel#CommonTemplateMarkupOutputModel(String, 
String)}.
      */
-    TemplateRTFOutputModel(String plainTextContent, String markupContent) {
+    protected TemplateRTFOutputModel(String plainTextContent, String 
markupContent) {
         super(plainTextContent, markupContent);
     }
 

http://git-wip-us.apache.org/repos/asf/freemarker/blob/81eb29c5/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXHTMLOutputModel.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXHTMLOutputModel.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXHTMLOutputModel.java
index 4d79748..d3bfce0 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXHTMLOutputModel.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXHTMLOutputModel.java
@@ -23,12 +23,12 @@ import 
org.apache.freemarker.core.outputformat.CommonTemplateMarkupOutputModel;
 /**
  * Stores HTML markup to be printed; used with {@link HTMLOutputFormat}.
  */
-public final class TemplateXHTMLOutputModel extends 
CommonTemplateMarkupOutputModel<TemplateXHTMLOutputModel> {
+public class TemplateXHTMLOutputModel extends TemplateXMLOutputModel {
     
     /**
      * See {@link 
CommonTemplateMarkupOutputModel#CommonTemplateMarkupOutputModel(String, 
String)}.
      */
-    TemplateXHTMLOutputModel(String plainTextContent, String markupContent) {
+    protected TemplateXHTMLOutputModel(String plainTextContent, String 
markupContent) {
         super(plainTextContent, markupContent);
     }
 

http://git-wip-us.apache.org/repos/asf/freemarker/blob/81eb29c5/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXMLOutputModel.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXMLOutputModel.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXMLOutputModel.java
index 4238718..e398f20 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXMLOutputModel.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/TemplateXMLOutputModel.java
@@ -23,12 +23,12 @@ import 
org.apache.freemarker.core.outputformat.CommonTemplateMarkupOutputModel;
 /**
  * Stores XML markup to be printed; used with {@link XMLOutputFormat}.
  */
-public final class TemplateXMLOutputModel extends 
CommonTemplateMarkupOutputModel<TemplateXMLOutputModel> {
+public class TemplateXMLOutputModel extends 
CommonTemplateMarkupOutputModel<TemplateXMLOutputModel> {
     
     /**
      * See {@link 
CommonTemplateMarkupOutputModel#CommonTemplateMarkupOutputModel(String, 
String)}.
      */
-    TemplateXMLOutputModel(String plainTextContent, String markupContent) {
+    protected TemplateXMLOutputModel(String plainTextContent, String 
markupContent) {
         super(plainTextContent, markupContent);
     }
 

http://git-wip-us.apache.org/repos/asf/freemarker/blob/81eb29c5/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XHTMLOutputFormat.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XHTMLOutputFormat.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XHTMLOutputFormat.java
index fa61fa8..4614b3d 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XHTMLOutputFormat.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XHTMLOutputFormat.java
@@ -27,18 +27,18 @@ import org.apache.freemarker.core.outputformat.OutputFormat;
 import org.apache.freemarker.core.util._StringUtils;
 
 /**
- * Represents the XML output format (MIME type "application/xhtml+xml", name 
"XHTML"). This format escapes by default
- * (via {@link _StringUtils#XHTMLEnc(String)}). The {@code ?xml} built-in 
silently bypasses template output values of the
- * type produced by this output format ({@link TemplateXHTMLOutputModel}).
+ * Represents the XML output format (MIME type "application/xhtml+xml", name 
"XHTML"); this is the same as
+ * {@link HTMLOutputFormat}, except the name an the MIME Type. (Also, it 
returns {@link TemplateXHTMLOutputModel}
+ * instead of {@link TemplateHTMLOutputModel}, but the former extends the 
later.)
  */
-public final class XHTMLOutputFormat extends 
CommonMarkupOutputFormat<TemplateXHTMLOutputModel> {
+public class XHTMLOutputFormat extends XMLOutputFormat {
 
     /**
      * The only instance (singleton) of this {@link OutputFormat}.
      */
     public static final XHTMLOutputFormat INSTANCE = new XHTMLOutputFormat();
     
-    private XHTMLOutputFormat() {
+    protected XHTMLOutputFormat() {
         // Only to decrease visibility
     }
     

http://git-wip-us.apache.org/repos/asf/freemarker/blob/81eb29c5/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XMLOutputFormat.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XMLOutputFormat.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XMLOutputFormat.java
index bb116d9..4773334 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XMLOutputFormat.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/outputformat/impl/XMLOutputFormat.java
@@ -31,14 +31,14 @@ import org.apache.freemarker.core.util._StringUtils;
  * {@link _StringUtils#XMLEnc(String)}). The {@code ?html}, {@code ?xhtml} and 
{@code ?xml} built-ins silently bypass
  * template output values of the type produced by this output format ({@link 
TemplateXHTMLOutputModel}).
  */
-public final class XMLOutputFormat extends 
CommonMarkupOutputFormat<TemplateXMLOutputModel> {
+public class XMLOutputFormat extends 
CommonMarkupOutputFormat<TemplateXMLOutputModel> {
 
     /**
      * The only instance (singleton) of this {@link OutputFormat}.
      */
     public static final XMLOutputFormat INSTANCE = new XMLOutputFormat();
 
-    private XMLOutputFormat() {
+    protected XMLOutputFormat() {
         // Only to decrease visibility
     }
 

Reply via email to