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 }