This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new a660d0e Context API refactoring.
a660d0e is described below
commit a660d0e1afe93ee3cdce7376194c3feab8156308
Author: JamesBognar <[email protected]>
AuthorDate: Sun Sep 26 19:25:24 2021 -0400
Context API refactoring.
---
.../java/org/apache/juneau/html/AnchorText.java | 2 +-
.../juneau/html/HtmlSchemaDocSerializer.java | 4 +
.../apache/juneau/html/HtmlSchemaSerializer.java | 10 +-
.../org/apache/juneau/html/HtmlSerializer.java | 221 ++-------------------
.../apache/juneau/html/HtmlSerializerBuilder.java | 127 +++++++++---
.../apache/juneau/html/HtmlSerializerSession.java | 12 +-
.../juneau/html/HtmlStrippedDocSerializer.java | 6 +-
.../org/apache/juneau/html/annotation/Html.java | 4 +-
.../apache/juneau/html/annotation/HtmlConfig.java | 18 +-
.../html/annotation/HtmlConfigAnnotation.java | 25 ++-
.../java/org/apache/juneau/html/Html_Test.java | 2 +-
11 files changed, 158 insertions(+), 273 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/AnchorText.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/AnchorText.java
index fe16959..972570a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/AnchorText.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/AnchorText.java
@@ -13,7 +13,7 @@
package org.apache.juneau.html;
/**
- * Identifies possible values for the {@link
HtmlSerializer#HTML_uriAnchorText} setting.
+ * Identifies possible values for the {@link
HtmlSerializerBuilder#uriAnchorText(AnchorText)} setting.
*/
public enum AnchorText {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
index 7fd9ba1..8507167 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
@@ -38,6 +38,10 @@ import org.apache.juneau.serializer.*;
*/
public final class HtmlSchemaDocSerializer extends HtmlDocSerializer {
+
//-----------------------------------------------------------------------------------------------------------------
+ // Instance
+
//-----------------------------------------------------------------------------------------------------------------
+
private final JsonSchemaGenerator generator;
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
index e0a7b48..dd3006b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
@@ -41,13 +41,7 @@ import org.apache.juneau.serializer.*;
public class HtmlSchemaSerializer extends HtmlSerializer {
//-------------------------------------------------------------------------------------------------------------------
- // Configurable properties
-
//-------------------------------------------------------------------------------------------------------------------
-
- static final String PREFIX = "HtmlSchemaSerializer";
-
-
//-------------------------------------------------------------------------------------------------------------------
- // Predefined instances
+ // Static
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, all default settings.*/
@@ -63,7 +57,7 @@ public class HtmlSchemaSerializer extends HtmlSerializer {
public static final HtmlSchemaSerializer DEFAULT_SIMPLE_READABLE = new
SimpleReadable(create());
//-------------------------------------------------------------------------------------------------------------------
- // Predefined subclasses
+ // Static subclasses
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, with whitespace. */
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index 37fd5ba..a251430 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -131,184 +131,7 @@ import org.apache.juneau.xml.*;
public class HtmlSerializer extends XmlSerializer implements HtmlMetaProvider,
HtmlCommon {
//-------------------------------------------------------------------------------------------------------------------
- // Configurable properties
-
//-------------------------------------------------------------------------------------------------------------------
-
- static final String PREFIX = "HtmlSerializer";
-
- /**
- * Configuration property: Add <js>"_type"</js> properties when needed.
- *
- * <p>
- * If <jk>true</jk>, then <js>"_type"</js> properties will be added to
beans if their type cannot be inferred
- * through reflection.
- *
- * <p>
- * When present, this value overrides the {@link
#SERIALIZER_addBeanTypes} setting and is
- * provided to customize the behavior of specific serializers in a
{@link SerializerGroup}.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.html.HtmlSerializer#HTML_addBeanTypes HTML_addBeanTypes}
- * <li><b>Name:</b> <js>"HtmlSerializer.addBeanTypes.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b> <c>HtmlSerializer.addBeanTypes</c>
- * <li><b>Environment variable:</b>
<c>HTMLSERIALIZER_ADDBEANTYPES</c>
- * <li><b>Default:</b> <jk>false</jk>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.html.annotation.HtmlConfig#addBeanTypes()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.html.HtmlSerializerBuilder#addBeanTypes()}
- * </ul>
- * </ul>
- */
- public static final String HTML_addBeanTypes = PREFIX +
".addBeanTypes.b";
-
- /**
- * Configuration property: Add key/value headers on bean/map tables.
- *
- * <p>
- * When enabled, <bc>key</bc> and <bc>value</bc> column headers are
added to tables.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.html.HtmlSerializer#HTML_addKeyValueTableHeaders
HTML_addKeyValueTableHeaders}
- * <li><b>Name:</b>
<js>"HtmlSerializer.addKeyValueTableHeaders.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b>
<c>HtmlSerializer.addKeyValueTableHeaders</c>
- * <li><b>Environment variable:</b>
<c>HTMLSERIALIZER_ADDKEYVALUETABLEHEADERS</c>
- * <li><b>Default:</b> <jk>false</jk>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.html.annotation.Html#noTableHeaders()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.html.HtmlSerializerBuilder#addKeyValueTableHeaders()}
- * </ul>
- * </ul>
- */
- public static final String HTML_addKeyValueTableHeaders = PREFIX +
".addKeyValueTableHeaders.b";
-
- /**
- * Configuration property: Link label parameter name.
- *
- * <p>
- * The parameter name to look for when resolving link labels.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.html.HtmlSerializer#HTML_labelParameter HTML_labelParameter}
- * <li><b>Name:</b> <js>"HtmlSerializer.labelParameter.s"</js>
- * <li><b>Data type:</b> <c>String</c>
- * <li><b>System property:</b>
<c>HtmlSerializer.labelParameter</c>
- * <li><b>Environment variable:</b>
<c>HTMLSERIALIZER_LABELPARAMETER</c>
- * <li><b>Default:</b> <js>"label"</js>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.html.annotation.HtmlConfig#labelParameter()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.html.HtmlSerializerBuilder#labelParameter(String)}
- * </ul>
- * </ul>
- */
- public static final String HTML_labelParameter = PREFIX +
".labelParameter.s";
-
- /**
- * Configuration property: Don't look for link labels in URIs.
- *
- * <p>
- * Disables the feature where if the URL has a label parameter (e.g.
<js>"?label=foobar"</js>), then use that as the anchor text of the link.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.html.HtmlSerializer#HTML_disableDetectLabelParameters
HTML_disableDetectLabelParameters}
- * <li><b>Name:</b>
<js>"HtmlSerializer.disableDetectLabelParameters.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b>
<c>HtmlSerializer.disableDetectLabelParameters</c>
- * <li><b>Environment variable:</b>
<c>HTMLSERIALIZER_DONTDETECTLABELPARAMETERS</c>
- * <li><b>Default:</b> <jk>false</jk>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.html.annotation.HtmlConfig#disableDetectLabelParameters()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.html.HtmlSerializerBuilder#disableDetectLabelParameters()}
- * </ul>
- * </ul>
- */
- public static final String HTML_disableDetectLabelParameters = PREFIX +
".disableDetectLabelParameters.b";
-
- /**
- * Configuration property: Don't look for URLs in {@link
java.lang.String Strings}.
- *
- * <p>
- * Disables the feature where if a string looks like a URL (i.e. starts
with <js>"http://"</js> or <js>"https://"</js>, then treat it like a URL
- * and make it into a hyperlink based on the rules specified by {@link
#HTML_uriAnchorText}.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.html.HtmlSerializer#HTML_disableDetectLinksInStrings
HTML_disableDetectLinksInStrings}
- * <li><b>Name:</b>
<js>"HtmlSerializer.disableDetectLinksInStrings.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b>
<c>HtmlSerializer.disableDetectLinksInStrings</c>
- * <li><b>Environment variable:</b>
<c>HTMLSERIALIZER_DISABLEDETECTLINKSINSTRINGS</c>
- * <li><b>Default:</b> <jk>false</jk>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.html.annotation.HtmlConfig#disableDetectLinksInStrings()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.html.HtmlSerializerBuilder#disableDetectLinksInStrings()}
- * </ul>
- * </ul>
- */
- public static final String HTML_disableDetectLinksInStrings = PREFIX +
".disableDetectLinksInStrings.b";
-
- /**
- * Configuration property: Anchor text source.
- *
- * <p>
- * When creating anchor tags (e.g. <code><xt><a</xt>
<xa>href</xa>=<xs>'...'</xs>
- * <xt>></xt>text<xt></a></xt></code>) in HTML, this setting
defines what to set the inner text to.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.html.HtmlSerializer#HTML_uriAnchorText HTML_uriAnchorText}
- * <li><b>Name:</b> <js>"HtmlSerializer.uriAnchorText.s"</js>
- * <li><b>Data type:</b> {@link org.apache.juneau.html.AnchorText}
- * <li><b>System property:</b> <c>HtmlSerializer.uriAnchorText</c>
- * <li><b>Environment variable:</b>
<c>HTMLSERIALIZER_URIANCHORTEXT</c>
- * <li><b>Default:</b> <js>"TO_STRING"</js>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.html.annotation.Html#anchorText()}
- * <li class='ja'>{@link
org.apache.juneau.html.annotation.HtmlConfig#uriAnchorText()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.html.HtmlSerializerBuilder#uriAnchorText(AnchorText)}
- * </ul>
- * </ul>
- */
- public static final String HTML_uriAnchorText = PREFIX +
".uriAnchorText.s";
-
-
-
//-------------------------------------------------------------------------------------------------------------------
- // Predefined instances
+ // Static
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, all default settings. */
@@ -320,9 +143,8 @@ public class HtmlSerializer extends XmlSerializer
implements HtmlMetaProvider, H
/** Default serializer, single quotes, whitespace added. */
public static final HtmlSerializer DEFAULT_SQ_READABLE = new
HtmlSerializer.SqReadable(create());
-
//-------------------------------------------------------------------------------------------------------------------
- // Predefined subclasses
+ // Static subclasses
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, single quotes. */
@@ -351,18 +173,18 @@ public class HtmlSerializer extends XmlSerializer
implements HtmlMetaProvider, H
}
}
-
//-------------------------------------------------------------------------------------------------------------------
// Instance
//-------------------------------------------------------------------------------------------------------------------
- private final AnchorText uriAnchorText;
- private final boolean
+ final AnchorText uriAnchorText;
+ final boolean
detectLabelParameters,
detectLinksInStrings,
addKeyValueTableHeaders,
- addBeanTypes;
- private final String labelParameter;
+ addBeanTypesHtml;
+ final String labelParameter;
+
private final Map<ClassMeta<?>,HtmlClassMeta> htmlClassMetas = new
ConcurrentHashMap<>();
private final Map<BeanPropertyMeta,HtmlBeanPropertyMeta>
htmlBeanPropertyMetas = new ConcurrentHashMap<>();
@@ -375,13 +197,12 @@ public class HtmlSerializer extends XmlSerializer
implements HtmlMetaProvider, H
*/
protected HtmlSerializer(HtmlSerializerBuilder builder) {
super(builder);
- ContextProperties cp = getContextProperties();
- uriAnchorText = cp.get(HTML_uriAnchorText,
AnchorText.class).orElse(AnchorText.TO_STRING);
- detectLabelParameters = !
cp.getBoolean(HTML_disableDetectLabelParameters).orElse(false);
- detectLinksInStrings = !
cp.getBoolean(HTML_disableDetectLinksInStrings).orElse(false);
- labelParameter =
cp.getString(HTML_labelParameter).orElse("label");
- addKeyValueTableHeaders =
cp.getBoolean(HTML_addKeyValueTableHeaders).orElse(false);
- addBeanTypes = cp.getFirstBoolean(HTML_addBeanTypes,
SERIALIZER_addBeanTypes).orElse(false);
+ detectLabelParameters = ! builder.disableDetectLabelParameters;
+ detectLinksInStrings = ! builder.disableDetectLinksInStrings;
+ addKeyValueTableHeaders = builder.addKeyValueTableHeaders;
+ labelParameter = builder.labelParameter;
+ uriAnchorText = builder.uriAnchorText;
+ addBeanTypesHtml = builder.addBeanTypesHtml;
}
@Override /* Context */
@@ -459,20 +280,20 @@ public class HtmlSerializer extends XmlSerializer
implements HtmlMetaProvider, H
/**
* Add <js>"_type"</js> properties when needed.
*
- * @see #HTML_addBeanTypes
+ * @see HtmlSerializerBuilder#addBeanTypesHtml()
* @return
* <jk>true</jk> if <js>"_type"</js> properties will be added to
beans if their type cannot be inferred
* through reflection.
*/
@Override
protected final boolean isAddBeanTypes() {
- return addBeanTypes;
+ return addBeanTypesHtml || super.isAddBeanTypes();
}
/**
* Add key/value headers on bean/map tables.
*
- * @see #HTML_addKeyValueTableHeaders
+ * @see HtmlSerializerBuilder#addKeyValueTableHeaders()
* @return
* <jk>true</jk> if <bc>key</bc> and <bc>value</bc> column headers
are added to tables.
*/
@@ -483,7 +304,7 @@ public class HtmlSerializer extends XmlSerializer
implements HtmlMetaProvider, H
/**
* Look for link labels in URIs.
*
- * @see #HTML_disableDetectLabelParameters
+ * @see HtmlSerializerBuilder#disableDetectLabelParameters()
* @return
* <jk>true</jk> if we should look for URL label parameters (e.g.
<js>"?label=foobar"</js>).
*/
@@ -494,7 +315,7 @@ public class HtmlSerializer extends XmlSerializer
implements HtmlMetaProvider, H
/**
* Look for URLs in {@link String Strings}.
*
- * @see #HTML_disableDetectLinksInStrings
+ * @see HtmlSerializerBuilder#disableDetectLinksInStrings()
* @return
* <jk>true</jk> if we should automatically convert strings to
URLs if they look like a URL.
*/
@@ -505,7 +326,7 @@ public class HtmlSerializer extends XmlSerializer
implements HtmlMetaProvider, H
/**
* Link label parameter name.
*
- * @see #HTML_labelParameter
+ * @see HtmlSerializerBuilder#labelParameter(String)
* @return
* The parameter name to look for when resolving link labels.
*/
@@ -516,7 +337,7 @@ public class HtmlSerializer extends XmlSerializer
implements HtmlMetaProvider, H
/**
* Anchor text source.
*
- * @see #HTML_uriAnchorText
+ * @see HtmlSerializerBuilder#uriAnchorText(AnchorText)
* @return
* When creating anchor tags (e.g. <code><xt><a</xt>
<xa>href</xa>=<xs>'...'</xs>
* <xt>></xt>text<xt></a></xt></code>) in HTML, this
setting defines what to set the inner text to.
@@ -542,7 +363,7 @@ public class HtmlSerializer extends XmlSerializer
implements HtmlMetaProvider, H
.a("detectLinksInStrings",
detectLinksInStrings)
.a("labelParameter", labelParameter)
.a("addKeyValueTableHeaders",
addKeyValueTableHeaders)
- .a("addBeanTypes", addBeanTypes)
+ .a("addBeanTypesHtml", addBeanTypesHtml)
);
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
index 4c2d5bf..3ca9b39 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
@@ -12,8 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.html;
-import static org.apache.juneau.html.HtmlSerializer.*;
-
import java.lang.annotation.*;
import java.lang.reflect.*;
import java.nio.charset.*;
@@ -22,6 +20,7 @@ import java.util.*;
import org.apache.juneau.*;
import org.apache.juneau.http.header.*;
import org.apache.juneau.internal.*;
+import org.apache.juneau.serializer.*;
import org.apache.juneau.xml.*;
/**
@@ -31,6 +30,10 @@ import org.apache.juneau.xml.*;
@FluentSetters
public class HtmlSerializerBuilder extends XmlSerializerBuilder {
+ boolean addBeanTypesHtml, addKeyValueTableHeaders,
disableDetectLabelParameters, disableDetectLinksInStrings;
+ String labelParameter;
+ AnchorText uriAnchorText;
+
/**
* Constructor, default settings.
*/
@@ -38,6 +41,12 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
super();
produces("text/html");
type(HtmlSerializer.class);
+ addBeanTypesHtml = env("HtmlSerializer.addBeanTypesHtml",
false);
+ addKeyValueTableHeaders =
env("HtmlSerializer.addKeyValueTableHeaders", false);
+ disableDetectLabelParameters =
env("HtmlSerializer.disableDetectLabelParameters", false);
+ disableDetectLinksInStrings =
env("HtmlSerializer.disableDetectLinksInStrings", false);
+ uriAnchorText = env("HtmlSerializer.uriAnchorText",
AnchorText.TO_STRING);
+ labelParameter = env("HtmlSerializer.labelParameter", "label");
}
/**
@@ -47,6 +56,12 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
*/
protected HtmlSerializerBuilder(HtmlSerializer copyFrom) {
super(copyFrom);
+ addBeanTypesHtml = copyFrom.addBeanTypesHtml;
+ addKeyValueTableHeaders = copyFrom.addKeyValueTableHeaders;
+ disableDetectLabelParameters = ! copyFrom.detectLabelParameters;
+ disableDetectLinksInStrings = ! copyFrom.detectLinksInStrings;
+ labelParameter = copyFrom.labelParameter;
+ uriAnchorText = copyFrom.uriAnchorText;
}
/**
@@ -56,6 +71,12 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
*/
protected HtmlSerializerBuilder(HtmlSerializerBuilder copyFrom) {
super(copyFrom);
+ addBeanTypesHtml = copyFrom.addBeanTypesHtml;
+ addKeyValueTableHeaders = copyFrom.addKeyValueTableHeaders;
+ disableDetectLabelParameters =
copyFrom.disableDetectLabelParameters;
+ disableDetectLinksInStrings =
copyFrom.disableDetectLinksInStrings;
+ labelParameter = copyFrom.labelParameter;
+ uriAnchorText = copyFrom.uriAnchorText;
}
@Override /* ContextBuilder */
@@ -73,6 +94,36 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
//-----------------------------------------------------------------------------------------------------------------
/**
+ * Add <js>"_type"</js> properties when needed.
+ *
+ * <p>
+ * If <jk>true</jk>, then <js>"_type"</js> properties will be added to
beans if their type cannot be inferred
+ * through reflection.
+ *
+ * <p>
+ * When present, this value overrides the {@link
SerializerBuilder#addBeanTypes()} setting and is
+ * provided to customize the behavior of specific serializers in a
{@link SerializerGroup}.
+ *
+ * @return This object.
+ */
+ @FluentSetter
+ public HtmlSerializerBuilder addBeanTypesHtml() {
+ return addBeanTypesHtml(true);
+ }
+
+ /**
+ * Same as {@link #addBeanTypesHtml()} but allows you to explicitly
specify the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public HtmlSerializerBuilder addBeanTypesHtml(boolean value) {
+ addBeanTypesHtml = value;
+ return this;
+ }
+
+ /**
* <i><l>HtmlSerializer</l> configuration property: </i> Add
key/value headers on bean/map tables.
*
* <p>
@@ -124,15 +175,23 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
* </tr>
* </table>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link
HtmlSerializer#HTML_addKeyValueTableHeaders}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public HtmlSerializerBuilder addKeyValueTableHeaders() {
- return set(HTML_addKeyValueTableHeaders);
+ return addKeyValueTableHeaders(true);
+ }
+
+ /**
+ * Same as {@link #addKeyValueTableHeaders()} but allows you to
explicitly specify the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public HtmlSerializerBuilder addKeyValueTableHeaders(boolean value) {
+ addKeyValueTableHeaders = value;
+ return this;
}
/**
@@ -140,7 +199,7 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
*
* <p>
* Disables the feature where if a string looks like a URL (i.e. starts
with <js>"http://"</js> or <js>"https://"</js>, then treat it like a URL
- * and make it into a hyperlink based on the rules specified by {@link
#HTML_uriAnchorText}.
+ * and make it into a hyperlink based on the rules specified by {@link
HtmlSerializerBuilder#uriAnchorText(AnchorText)}.
*
* <h5 class='section'>Example:</h5>
* <p class='bcode w800'>
@@ -190,15 +249,23 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
* </tr>
* </table>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link
HtmlSerializer#HTML_disableDetectLinksInStrings}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public HtmlSerializerBuilder disableDetectLinksInStrings() {
- return set(HTML_disableDetectLinksInStrings);
+ return disableDetectLinksInStrings(true);
+ }
+
+ /**
+ * Same as {@link #disableDetectLinksInStrings()} but allows you to
explicitly specify the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public HtmlSerializerBuilder disableDetectLinksInStrings(boolean value)
{
+ disableDetectLinksInStrings = value;
+ return this;
}
/**
@@ -207,10 +274,6 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
* <p>
* The parameter name to look for when resolving link labels}.
*
- * <ul class='seealso'>
- * <li class='jf'>{@link HtmlSerializer#HTML_labelParameter}
- * </ul>
- *
* @param value
* The new value for this property.
* <br>The default is <js>"label"</js>.
@@ -218,7 +281,8 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
*/
@FluentSetter
public HtmlSerializerBuilder labelParameter(String value) {
- return set(HTML_labelParameter, value);
+ labelParameter = value;
+ return this;
}
/**
@@ -228,7 +292,7 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
* Disables the feature where if the URL has a label parameter (e.g.
<js>"?label=foobar"</js>), then use that as the anchor text of the link.
*
* <p>
- * The parameter name can be changed via the {@link
#HTML_labelParameter} property.
+ * The parameter name can be changed via the {@link
#labelParameter(String)} property.
*
* <h5 class='section'>Example:</h5>
* <p class='bcode w800'>
@@ -279,15 +343,23 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
* </tr>
* </table>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link
HtmlSerializer#HTML_disableDetectLabelParameters}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public HtmlSerializerBuilder disableDetectLabelParameters() {
- return set(HTML_disableDetectLabelParameters);
+ return disableDetectLabelParameters(true);
+ }
+
+ /**
+ * Same as {@link #disableDetectLabelParameters()} but allows you to
explicitly specify the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public HtmlSerializerBuilder disableDetectLabelParameters(boolean
value) {
+ disableDetectLabelParameters = value;
+ return this;
}
/**
@@ -443,10 +515,6 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
* </ul>
* </ul>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link HtmlSerializer#HTML_uriAnchorText}
- * </ul>
- *
* @param value
* The new value for this property.
* <br>The default is {@link AnchorText#TO_STRING}.
@@ -454,7 +522,8 @@ public class HtmlSerializerBuilder extends
XmlSerializerBuilder {
*/
@FluentSetter
public HtmlSerializerBuilder uriAnchorText(AnchorText value) {
- return set(HTML_uriAnchorText, value);
+ uriAnchorText = value;
+ return this;
}
// <FluentSetters>
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
index 5bc1b66..d6b7370 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
@@ -793,7 +793,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
/**
* Configuration property: Add <js>"_type"</js> properties when needed.
*
- * @see HtmlSerializer#HTML_addBeanTypes
+ * @see HtmlSerializerBuilder#addBeanTypesHtml()
* @return
* <jk>true</jk> if <js>"_type"</js> properties will be added to
beans if their type cannot be inferred
* through reflection.
@@ -806,7 +806,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
/**
* Configuration property: Add key/value headers on bean/map tables.
*
- * @see HtmlSerializer#HTML_addKeyValueTableHeaders
+ * @see HtmlSerializerBuilder#addKeyValueTableHeaders()
* @return
* <jk>true</jk> if <bc>key</bc> and <bc>value</bc> column headers
are added to tables.
*/
@@ -817,7 +817,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
/**
* Configuration property: Look for link labels in URIs.
*
- * @see HtmlSerializer#HTML_disableDetectLabelParameters
+ * @see HtmlSerializerBuilder#disableDetectLabelParameters()
* @return
* <jk>true</jk> if we should ook for URL label parameters (e.g.
<js>"?label=foobar"</js>).
*/
@@ -828,7 +828,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
/**
* Configuration property: Look for URLs in {@link String Strings}.
*
- * @see HtmlSerializer#HTML_disableDetectLinksInStrings
+ * @see HtmlSerializerBuilder#disableDetectLinksInStrings()
* @return
* <jk>true</jk> if we should automatically convert strings to
URLs if they look like a URL.
*/
@@ -839,7 +839,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
/**
* Configuration property: Link label parameter name.
*
- * @see HtmlSerializer#HTML_labelParameter
+ * @see HtmlSerializerBuilder#labelParameter(String)
* @return
* The parameter name to look for when resolving link labels.
*/
@@ -850,7 +850,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
/**
* Configuration property: Anchor text source.
*
- * @see HtmlSerializer#HTML_uriAnchorText
+ * @see HtmlSerializerBuilder#uriAnchorText(AnchorText)
* @return
* When creating anchor tags (e.g. <code><xt><a</xt>
<xa>href</xa>=<xs>'...'</xs>
* <xt>></xt>text<xt></a></xt></code>) in HTML, this
setting defines what to set the inner text to.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
index 12a1f6d..2cb3e4c 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
@@ -35,18 +35,16 @@ import org.apache.juneau.serializer.*;
public class HtmlStrippedDocSerializer extends HtmlSerializer {
//-------------------------------------------------------------------------------------------------------------------
- // Predefined instances
+ // Static
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, all default settings. */
public static final HtmlStrippedDocSerializer DEFAULT = new
HtmlStrippedDocSerializer(create());
//-------------------------------------------------------------------------------------------------------------------
- // Configurable properties
+ // Instance
//-------------------------------------------------------------------------------------------------------------------
- static final String PREFIX = "HtmlStrippedDocSerializer";
-
/**
* Constructor.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
index 379149c..8570352 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
@@ -58,7 +58,7 @@ public @interface Html {
* </p>
*
* <p>
- * This overrides the behavior specified by {@link
HtmlSerializer#HTML_uriAnchorText}.
+ * This overrides the behavior specified by {@link
HtmlSerializerBuilder#uriAnchorText(AnchorText)}.
*/
String anchorText() default "";
@@ -100,7 +100,7 @@ public @interface Html {
* When <jk>true</jk>, don't add headers to tables.
*
* <ul class='seealso'>
- * <li class='jf'>{@link
HtmlSerializer#HTML_addKeyValueTableHeaders}
+ * <li class='jm'>{@link
HtmlSerializerBuilder#addKeyValueTableHeaders()}
* </ul>
*/
boolean noTableHeaders() default false;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfig.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfig.java
index e9ab19c..3f97495 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfig.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfig.java
@@ -31,7 +31,7 @@ import org.apache.juneau.serializer.*;
@Target({TYPE,METHOD})
@Retention(RUNTIME)
@Inherited
-@ContextApply(HtmlConfigAnnotation.Apply.class)
+@ContextApply(HtmlConfigAnnotation.ApplySerializer.class)
public @interface HtmlConfig {
/**
@@ -73,7 +73,7 @@ public @interface HtmlConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link HtmlSerializer#HTML_addBeanTypes}
+ * <li class='jm'>{@link HtmlSerializerBuilder#addBeanTypesHtml()}
* </ul>
*/
String addBeanTypes() default "";
@@ -121,7 +121,7 @@ public @interface HtmlConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link
HtmlSerializer#HTML_addKeyValueTableHeaders}
+ * <li class='jm'>{@link
HtmlSerializerBuilder#addKeyValueTableHeaders()}
* </ul>
*/
String addKeyValueTableHeaders() default "";
@@ -131,7 +131,7 @@ public @interface HtmlConfig {
*
* <p>
* Disables the feature where if a string looks like a URL (i.e. starts
with <js>"http://"</js> or <js>"https://"</js>, then treat it like a URL
- * and make it into a hyperlink based on the rules specified by {@link
HtmlSerializer#HTML_uriAnchorText}.
+ * and make it into a hyperlink based on the rules specified by {@link
HtmlSerializerBuilder#uriAnchorText(AnchorText)}.
*
* <p>
* The following shows the difference between the two generated outputs:
@@ -169,7 +169,7 @@ public @interface HtmlConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link
HtmlSerializer#HTML_disableDetectLinksInStrings}
+ * <li class='jm'>{@link
HtmlSerializerBuilder#disableDetectLinksInStrings()}
* </ul>
*/
String disableDetectLinksInStrings() default "";
@@ -188,7 +188,7 @@ public @interface HtmlConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link HtmlSerializer#HTML_labelParameter}
+ * <li class='jm'>{@link
HtmlSerializerBuilder#labelParameter(String)}
* </ul>
*/
String labelParameter() default "";
@@ -200,7 +200,7 @@ public @interface HtmlConfig {
* Disables the feature where if the URL has a label parameter (e.g.
<js>"?label=foobar"</js>), then use that as the anchor text of the link.
*
* <p>
- * The parameter name can be changed via the {@link
HtmlSerializer#HTML_labelParameter} property.
+ * The parameter name can be changed via the {@link
HtmlSerializerBuilder#labelParameter(String)} property.
*
* <p>
* The following shows the difference between the two generated outputs.
@@ -239,7 +239,7 @@ public @interface HtmlConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link
HtmlSerializer#HTML_disableDetectLabelParameters}
+ * <li class='jm'>{@link
HtmlSerializerBuilder#disableDetectLabelParameters()}
* </ul>
*/
String disableDetectLabelParameters() default "";
@@ -269,7 +269,7 @@ public @interface HtmlConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link HtmlSerializer#HTML_uriAnchorText}
+ * <li class='jm'>{@link
HtmlSerializerBuilder#uriAnchorText(AnchorText)}
* </ul>
*/
String uriAnchorText() default "";
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
index 6e9c48e..2aa0d7e 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
@@ -12,9 +12,8 @@
//
***************************************************************************************************************************
package org.apache.juneau.html.annotation;
-import static org.apache.juneau.html.HtmlSerializer.*;
-
import org.apache.juneau.*;
+import org.apache.juneau.html.*;
import org.apache.juneau.reflect.*;
import org.apache.juneau.svl.*;
@@ -24,29 +23,29 @@ import org.apache.juneau.svl.*;
public class HtmlConfigAnnotation {
/**
- * Applies {@link HtmlConfig} annotations to a {@link
ContextPropertiesBuilder}.
+ * Applies {@link HtmlConfig} annotations to a {@link
HtmlSerializerBuilder}.
*/
- public static class Apply extends
AnnotationApplier<HtmlConfig,ContextPropertiesBuilder> {
+ public static class ApplySerializer extends
AnnotationApplier<HtmlConfig,HtmlSerializerBuilder> {
/**
* Constructor.
*
* @param vr The resolver for resolving values in annotations.
*/
- public Apply(VarResolverSession vr) {
- super(HtmlConfig.class, ContextPropertiesBuilder.class,
vr);
+ public ApplySerializer(VarResolverSession vr) {
+ super(HtmlConfig.class, HtmlSerializerBuilder.class,
vr);
}
@Override
- public void apply(AnnotationInfo<HtmlConfig> ai,
ContextPropertiesBuilder b) {
+ public void apply(AnnotationInfo<HtmlConfig> ai,
HtmlSerializerBuilder b) {
HtmlConfig a = ai.getAnnotation();
- bool(a.addBeanTypes()).ifPresent(x ->
b.set(HTML_addBeanTypes, x));
- bool(a.addKeyValueTableHeaders()).ifPresent(x ->
b.set(HTML_addKeyValueTableHeaders, x));
- bool(a.disableDetectLabelParameters()).ifPresent(x ->
b.set(HTML_disableDetectLabelParameters, x));
- bool(a.disableDetectLinksInStrings()).ifPresent(x ->
b.set(HTML_disableDetectLinksInStrings, x));
- string(a.labelParameter()).ifPresent(x ->
b.set(HTML_labelParameter, x));
- string(a.uriAnchorText()).ifPresent(x ->
b.set(HTML_uriAnchorText, x));
+ bool(a.addBeanTypes()).ifPresent(x ->
b.addBeanTypesHtml(x));
+ bool(a.addKeyValueTableHeaders()).ifPresent(x ->
b.addKeyValueTableHeaders(x));
+ bool(a.disableDetectLabelParameters()).ifPresent(x ->
b.disableDetectLabelParameters(x));
+ bool(a.disableDetectLinksInStrings()).ifPresent(x ->
b.disableDetectLinksInStrings(x));
+ string(a.labelParameter()).ifPresent(x ->
b.labelParameter(x));
+
string(a.uriAnchorText()).map(AnchorText::valueOf).ifPresent(x ->
b.uriAnchorText(x));
}
}
}
\ No newline at end of file
diff --git a/juneau-utest/src/test/java/org/apache/juneau/html/Html_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/html/Html_Test.java
index 5654cce..9880a53 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/html/Html_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/html/Html_Test.java
@@ -178,7 +178,7 @@ public class Html_Test {
+"\n[fe]=http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL";
assertEquals(expected, r);
-
s.unset(HtmlSerializer.HTML_disableDetectLinksInStrings);
+ s.disableDetectLinksInStrings(false);
s.disableDetectLabelParameters();
r = strip(s.build().serialize(t));
expected = ""