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>&lt;a</xt> 
<xa>href</xa>=<xs>'...'</xs>
-        * <xt>&gt;</xt>text<xt>&lt;/a&gt;</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>&lt;a</xt> 
<xa>href</xa>=<xs>'...'</xs>
         *      <xt>&gt;</xt>text<xt>&lt;/a&gt;</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:&emsp;</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>&lt;a</xt> 
<xa>href</xa>=<xs>'...'</xs>
         *      <xt>&gt;</xt>text<xt>&lt;/a&gt;</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&amp;label2=MY_LABEL";;
                        assertEquals(expected, r);
 
-                       
s.unset(HtmlSerializer.HTML_disableDetectLinksInStrings);
+                       s.disableDetectLinksInStrings(false);
                        s.disableDetectLabelParameters();
                        r = strip(s.build().serialize(t));
                        expected = ""

Reply via email to