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 ab3c5a4  Context API refactoring.
ab3c5a4 is described below

commit ab3c5a4534caa2eeffbb065051f74b70e636409f
Author: JamesBognar <[email protected]>
AuthorDate: Sun Sep 26 16:29:51 2021 -0400

    Context API refactoring.
---
 .../java/org/apache/juneau/json/JsonParser.java    |  47 +-------
 .../org/apache/juneau/json/JsonParserBuilder.java  |  25 +++--
 .../org/apache/juneau/json/JsonParserSession.java  |   2 +-
 .../org/apache/juneau/json/JsonSerializer.java     | 124 ++-------------------
 .../apache/juneau/json/JsonSerializerBuilder.java  |  85 +++++++++++---
 .../apache/juneau/json/JsonSerializerSession.java  |   6 +-
 .../apache/juneau/json/SimpleJsonSerializer.java   |   2 +-
 .../apache/juneau/json/annotation/JsonConfig.java  |  10 +-
 .../json/annotation/JsonConfigAnnotation.java      |  41 +++++--
 9 files changed, 145 insertions(+), 197 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
index 78c7825..afa51d3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
@@ -108,41 +108,7 @@ import org.apache.juneau.parser.*;
 public class JsonParser extends ReaderParser implements JsonMetaProvider, 
JsonCommon {
 
        
//-------------------------------------------------------------------------------------------------------------------
-       // Configurable properties
-       
//-------------------------------------------------------------------------------------------------------------------
-
-       static final String PREFIX = "JsonParser";
-
-       /**
-        * Configuration property:  Validate end.
-        *
-        * <p>
-        * If <jk>true</jk>, after parsing a POJO from the input, verifies that 
the remaining input in
-        * the stream consists of only comments or whitespace.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.json.JsonParser#JSON_validateEnd JSON_validateEnd}
-        *      <li><b>Name:</b>  <js>"JsonParser.validateEnd.b"</js>
-        *      <li><b>Data type:</b>  <jk>boolean</jk>
-        *      <li><b>System property:</b>  <c>JsonParser.validateEnd</c>
-        *      <li><b>Environment variable:</b>  <c>JSONPARSER_VALIDATEEND</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.json.annotation.JsonConfig#validateEnd()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.json.JsonParserBuilder#validateEnd()}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSON_validateEnd = PREFIX + ".validateEnd.b";
-
-       
//-------------------------------------------------------------------------------------------------------------------
-       // Predefined instances
+       // Static
        
//-------------------------------------------------------------------------------------------------------------------
 
        /** Default parser, all default settings.*/
@@ -153,7 +119,7 @@ public class JsonParser extends ReaderParser implements 
JsonMetaProvider, JsonCo
 
 
        
//-------------------------------------------------------------------------------------------------------------------
-       // Predefined subclasses
+       // Static subclasses
        
//-------------------------------------------------------------------------------------------------------------------
 
        /** Default parser, strict mode. */
@@ -173,7 +139,8 @@ public class JsonParser extends ReaderParser implements 
JsonMetaProvider, JsonCo
        // Instance
        
//-------------------------------------------------------------------------------------------------------------------
 
-       private final boolean validateEnd;
+       final boolean validateEnd;
+
        private final Map<ClassMeta<?>,JsonClassMeta> jsonClassMetas = new 
ConcurrentHashMap<>();
        private final Map<BeanPropertyMeta,JsonBeanPropertyMeta> 
jsonBeanPropertyMetas = new ConcurrentHashMap<>();
 
@@ -184,9 +151,7 @@ public class JsonParser extends ReaderParser implements 
JsonMetaProvider, JsonCo
         */
        protected JsonParser(JsonParserBuilder builder) {
                super(builder);
-
-               ContextProperties cp = getContextProperties();
-               validateEnd = cp.getBoolean(JSON_validateEnd).orElse(false);
+               validateEnd = builder.validateEnd;
        }
 
        @Override /* Context */
@@ -253,7 +218,7 @@ public class JsonParser extends ReaderParser implements 
JsonMetaProvider, JsonCo
        /**
         * Validate end.
         *
-        * @see #JSON_validateEnd
+        * @see JsonParserBuilder#validateEnd()
         * @return
         *      <jk>true</jk> if after parsing a POJO from the input, verifies 
that the remaining input in
         *      the stream consists of only comments or whitespace.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
index d015cc7..c504689 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.json;
 
-import static org.apache.juneau.json.JsonParser.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
@@ -31,6 +29,8 @@ import org.apache.juneau.parser.*;
 @FluentSetters
 public class JsonParserBuilder extends ReaderParserBuilder {
 
+       boolean validateEnd;
+
        /**
         * Constructor, default settings.
         */
@@ -38,6 +38,7 @@ public class JsonParserBuilder extends ReaderParserBuilder {
                super();
                consumes("application/json,text/json");
                type(JsonParser.class);
+               validateEnd = env("JsonParser.validateEnd", false);
        }
 
        /**
@@ -47,6 +48,7 @@ public class JsonParserBuilder extends ReaderParserBuilder {
         */
        protected JsonParserBuilder(JsonParser copyFrom) {
                super(copyFrom);
+               validateEnd = copyFrom.validateEnd;
        }
 
        /**
@@ -56,6 +58,7 @@ public class JsonParserBuilder extends ReaderParserBuilder {
         */
        protected JsonParserBuilder(JsonParserBuilder copyFrom) {
                super(copyFrom);
+               validateEnd = copyFrom.validateEnd;
        }
 
        @Override /* ContextBuilder */
@@ -92,15 +95,23 @@ public class JsonParserBuilder extends ReaderParserBuilder {
         *      MyBean <jv>myBean</jv> =<jv>parser</jv>.parse(<jv>json</jv>, 
MyBean.<jk>class</jk>);
         * </p>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link JsonParser#JSON_validateEnd}
-        * </ul>
-        *
         * @return This object (for method chaining).
         */
        @FluentSetter
        public JsonParserBuilder validateEnd() {
-               return set(JSON_validateEnd);
+               return validateEnd(true);
+       }
+
+       /**
+        * Same as {@link #validateEnd()} but allows you to explicitly specify 
the value.
+        *
+        * @param value The value for this setting.
+        * @return This object.
+        */
+       @FluentSetter
+       public JsonParserBuilder validateEnd(boolean value) {
+               validateEnd = value;
+               return this;
        }
 
        // <FluentSetters>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
index 9f3e3cb..f70cbb4 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
@@ -801,7 +801,7 @@ public final class JsonParserSession extends 
ReaderParserSession {
        /**
         * Configuration property:  Validate end.
         *
-        * @see JsonParser#JSON_validateEnd
+        * @see JsonParserBuilder#validateEnd()
         * @return
         *      <jk>true</jk> if after parsing a POJO from the input, verifies 
that the remaining input in
         *      the stream consists of only comments or whitespace.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
index 82ae1e6..aab6610 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -94,101 +94,7 @@ import org.apache.juneau.serializer.*;
 public class JsonSerializer extends WriterSerializer implements 
JsonMetaProvider, JsonCommon {
 
        
//-------------------------------------------------------------------------------------------------------------------
-       // Configurable properties
-       
//-------------------------------------------------------------------------------------------------------------------
-
-       static final String PREFIX = "JsonSerializer";
-
-       /**
-        * 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.json.JsonSerializer#JSON_addBeanTypes JSON_addBeanTypes}
-        *      <li><b>Name:</b>  <js>"JsonSerializer.addBeanTypes.b"</js>
-        *      <li><b>Data type:</b>  <jk>boolean</jk>
-        *      <li><b>System property:</b>  <c>JsonSerializer.addBeanTypes</c>
-        *      <li><b>Environment variable:</b>  
<c>JSONSERIALIZER_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.json.annotation.JsonConfig#addBeanTypes()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.json.JsonSerializerBuilder#addBeanTypes()}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSON_addBeanTypes = PREFIX + 
".addBeanTypes.b";
-
-       /**
-        * Configuration property:  Prefix solidus <js>'/'</js> characters with 
escapes.
-        *
-        * <p>
-        * If <jk>true</jk>, solidus (e.g. slash) characters should be escaped.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.json.JsonSerializer#JSON_escapeSolidus JSON_escapeSolidus}
-        *      <li><b>Name:</b>  <js>"JsonSerializer.escapeSolidus.b"</js>
-        *      <li><b>Data type:</b>  <jk>boolean</jk>
-        *      <li><b>System property:</b>  <c>JsonSerializer.escapeSolidus</c>
-        *      <li><b>Environment variable:</b>  
<c>JSONSERIALIZER_ESCAPESOLIDUS</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.json.annotation.JsonConfig#escapeSolidus()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.json.JsonSerializerBuilder#escapeSolidus()}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSON_escapeSolidus = PREFIX + 
".escapeSolidus.b";
-
-       /**
-        * Configuration property:  Simple JSON mode.
-        *
-        * <p>
-        * If <jk>true</jk>, JSON attribute names will only be quoted when 
necessary.
-        * <br>Otherwise, they are always quoted.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.json.JsonSerializer#JSON_simpleMode JSON_simpleMode}
-        *      <li><b>Name:</b>  <js>"JsonSerializer.simpleMode.b"</js>
-        *      <li><b>Data type:</b>  <jk>boolean</jk>
-        *      <li><b>System property:</b>  <c>JsonSerializer.simpleMode</c>
-        *      <li><b>Environment variable:</b>  
<c>JSONSERIALIZER_SIMPLEMODE</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.json.annotation.JsonConfig#simpleMode()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.json.JsonSerializerBuilder#simpleMode()}
-        *                      <li class='jm'>{@link 
org.apache.juneau.json.JsonSerializerBuilder#ssq()}
-        *              </ul>
-        * </ul>
-        */
-       public static final String JSON_simpleMode = PREFIX + ".simpleMode.b";
-
-       
//-------------------------------------------------------------------------------------------------------------------
-       // Predefined instances
+       // Static
        
//-------------------------------------------------------------------------------------------------------------------
 
        /** Default serializer, all default settings.*/
@@ -197,9 +103,8 @@ public class JsonSerializer extends WriterSerializer 
implements JsonMetaProvider
        /** Default serializer, all default settings.*/
        public static final JsonSerializer DEFAULT_READABLE = new 
Readable(create());
 
-
        
//-------------------------------------------------------------------------------------------------------------------
-       // Predefined subclasses
+       // Static subclasses
        
//-------------------------------------------------------------------------------------------------------------------
 
        /** Default serializer, with whitespace. */
@@ -231,15 +136,12 @@ public class JsonSerializer extends WriterSerializer 
implements JsonMetaProvider
                }
        }
 
-
        
//-------------------------------------------------------------------------------------------------------------------
        // Instance
        
//-------------------------------------------------------------------------------------------------------------------
 
-       private final boolean
-               simpleMode,
-               escapeSolidus,
-               addBeanTypes;
+       final boolean addBeanTypesJson, escapeSolidus, simpleMode;
+
        private final Map<ClassMeta<?>,JsonClassMeta> jsonClassMetas = new 
ConcurrentHashMap<>();
        private final Map<BeanPropertyMeta,JsonBeanPropertyMeta> 
jsonBeanPropertyMetas = new ConcurrentHashMap<>();
 
@@ -252,11 +154,9 @@ public class JsonSerializer extends WriterSerializer 
implements JsonMetaProvider
         */
        protected JsonSerializer(JsonSerializerBuilder builder) {
                super(builder);
-
-               ContextProperties cp = getContextProperties();
-               simpleMode = cp.getBoolean(JSON_simpleMode).orElse(false);
-               escapeSolidus = cp.getBoolean(JSON_escapeSolidus).orElse(false);
-               addBeanTypes = cp.getFirstBoolean(JSON_addBeanTypes, 
SERIALIZER_addBeanTypes).orElse(false);
+               addBeanTypesJson = builder.addBeanTypesJson;
+               simpleMode = builder.simpleMode;
+               escapeSolidus = builder.escapeSolidus;
        }
 
        @Override /* Context */
@@ -338,20 +238,20 @@ public class JsonSerializer extends WriterSerializer 
implements JsonMetaProvider
        /**
         * Add <js>"_type"</js> properties when needed.
         *
-        * @see #JSON_addBeanTypes
+        * @see JsonSerializerBuilder#addBeanTypesJson()
         * @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 addBeanTypesJson || super.isAddBeanTypes();
        }
 
        /**
         * Prefix solidus <js>'/'</js> characters with escapes.
         *
-        * @see #JSON_escapeSolidus
+        * @see JsonSerializerBuilder#escapeSolidus()
         * @return
         *      <jk>true</jk> if solidus (e.g. slash) characters should be 
escaped.
         */
@@ -362,7 +262,7 @@ public class JsonSerializer extends WriterSerializer 
implements JsonMetaProvider
        /**
         * Simple JSON mode.
         *
-        * @see #JSON_simpleMode
+        * @see JsonSerializerBuilder#simpleMode()
         * @return
         *      <jk>true</jk> if JSON attribute names will only be quoted when 
necessary.
         *      <br>Otherwise, they are always quoted.
@@ -385,7 +285,7 @@ public class JsonSerializer extends WriterSerializer 
implements JsonMetaProvider
                                        .filtered()
                                        .a("simpleMode", simpleMode)
                                        .a("escapeSolidus", escapeSolidus)
-                                       .a("addBeanTypes", addBeanTypes)
+                                       .a("addBeanTypesJson", addBeanTypesJson)
                        );
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
index 78b3663..17ff6a2 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.json;
 
-import static org.apache.juneau.json.JsonSerializer.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
@@ -31,6 +29,8 @@ import org.apache.juneau.serializer.*;
 @FluentSetters
 public class JsonSerializerBuilder extends WriterSerializerBuilder {
 
+       boolean addBeanTypesJson, escapeSolidus, simpleMode;
+
        /**
         * Constructor, default settings.
         */
@@ -39,6 +39,9 @@ public class JsonSerializerBuilder extends 
WriterSerializerBuilder {
                produces("application/json");
                accept("application/json,text/json");
                type(JsonSerializer.class);
+               addBeanTypesJson = env("JsonSerializer.addBeanTypes", false);
+               escapeSolidus = env("JsonSerializer.escapeSolidus", false);
+               simpleMode = env("JsonSerializer.simpleMode", false);
        }
 
        /**
@@ -48,6 +51,9 @@ public class JsonSerializerBuilder extends 
WriterSerializerBuilder {
         */
        protected JsonSerializerBuilder(JsonSerializer copyFrom) {
                super(copyFrom);
+               addBeanTypesJson = copyFrom.addBeanTypesJson;
+               escapeSolidus = copyFrom.escapeSolidus;
+               simpleMode = copyFrom.simpleMode;
        }
 
        /**
@@ -57,6 +63,9 @@ public class JsonSerializerBuilder extends 
WriterSerializerBuilder {
         */
        protected JsonSerializerBuilder(JsonSerializerBuilder copyFrom) {
                super(copyFrom);
+               addBeanTypesJson = copyFrom.addBeanTypesJson;
+               escapeSolidus = copyFrom.escapeSolidus;
+               simpleMode = copyFrom.simpleMode;
        }
 
        @Override /* ContextBuilder */
@@ -73,6 +82,35 @@ public class JsonSerializerBuilder extends 
WriterSerializerBuilder {
        // Properties
        
//-----------------------------------------------------------------------------------------------------------------
 
+       /**
+        * 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 JsonSerializerBuilder addBeanTypesJson() {
+               return addBeanTypesJson(true);
+       }
+
+       /**
+        * Same as {@link #addBeanTypesJson()} but allows you to explicitly 
specify the value.
+        *
+        * @param value The value for this setting.
+        * @return This object.
+        */
+       @FluentSetter
+       public JsonSerializerBuilder addBeanTypesJson(boolean value) {
+               addBeanTypesJson = value;
+               return this;
+       }
 
        /**
         * Prefix solidus <js>'/'</js> characters with escapes.
@@ -98,15 +136,23 @@ public class JsonSerializerBuilder extends 
WriterSerializerBuilder {
         *      String <jv>json</jv> = 
<jv>serializer</jv>.serialize(OMap.<jsm>of</jsm>(<js>"foo"</js>, 
<js>"&lt;/bar&gt;"</js>);
         * </p>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link JsonSerializer#JSON_escapeSolidus}
-        * </ul>
-        *
-        * @return This object (for method chaining).
+        * @return This object.
         */
        @FluentSetter
        public JsonSerializerBuilder escapeSolidus() {
-               return set(JSON_escapeSolidus);
+               return escapeSolidus(true);
+       }
+
+       /**
+        * Same as {@link #escapeSolidus()} but allows you to explicitly 
specify the value.
+        *
+        * @param value The value for this setting.
+        * @return This object.
+        */
+       @FluentSetter
+       public JsonSerializerBuilder escapeSolidus(boolean value) {
+               escapeSolidus = value;
+               return this;
        }
 
        /**
@@ -176,15 +222,23 @@ public class JsonSerializerBuilder extends 
WriterSerializerBuilder {
         *      String <jv>json2<jv> = 
<jv>serializer2<jv>.serialize(<jv>myMap<jv>);
         * </p>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link JsonSerializer#JSON_simpleMode}
-        * </ul>
-        *
-        * @return This object (for method chaining).
+        * @return This object.
         */
        @FluentSetter
        public JsonSerializerBuilder simpleMode() {
-               return set(JSON_simpleMode);
+               return simpleMode(true);
+       }
+
+       /**
+        * Same as {@link #simpleMode()} but allows you to explicitly specify 
the value.
+        *
+        * @param value The value for this setting.
+        * @return This object.
+        */
+       @FluentSetter
+       public JsonSerializerBuilder simpleMode(boolean value) {
+               simpleMode = value;
+               return this;
        }
 
        /**
@@ -194,11 +248,10 @@ public class JsonSerializerBuilder extends 
WriterSerializerBuilder {
         * Shortcut for calling <c>simple().sq()</c>.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link JsonSerializer#JSON_simpleMode}
         *      <li class='jf'>{@link JsonSerializer#WSERIALIZER_quoteChar}
         * </ul>
         *
-        * @return This object (for method chaining).
+        * @return This object.
         */
        @FluentSetter
        public JsonSerializerBuilder ssq() {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
index 379ed5f..4b0b743 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
@@ -278,7 +278,7 @@ public class JsonSerializerSession extends 
WriterSerializerSession {
        /**
         * Configuration property:  Add <js>"_type"</js> properties when needed.
         *
-        * @see JsonSerializer#JSON_addBeanTypes
+        * @see JsonSerializerBuilder#addBeanTypesJson()
         * @return
         *      <jk>true</jk> if <js>"_type"</js> properties will be added to 
beans if their type cannot be inferred
         *      through reflection.
@@ -291,7 +291,7 @@ public class JsonSerializerSession extends 
WriterSerializerSession {
        /**
         * Configuration property:  Prefix solidus <js>'/'</js> characters with 
escapes.
         *
-        * @see JsonSerializer#JSON_escapeSolidus
+        * @see JsonSerializerBuilder#escapeSolidus()
         * @return
         *      <jk>true</jk> if solidus (e.g. slash) characters should be 
escaped.
         */
@@ -302,7 +302,7 @@ public class JsonSerializerSession extends 
WriterSerializerSession {
        /**
         * Configuration property:  Simple JSON mode.
         *
-        * @see JsonSerializer#JSON_simpleMode
+        * @see JsonSerializerBuilder#simpleMode()
         * @return
         *      <jk>true</jk> if JSON attribute names will only be quoted when 
necessary.
         *      <br>Otherwise, they are always quoted.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
index 277238b..8df84cf 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
@@ -39,7 +39,7 @@ public class SimpleJsonSerializer extends JsonSerializer {
        // Predefined instances
        
//-------------------------------------------------------------------------------------------------------------------
 
-       /** Default serializer, single quotes, {@link #JSON_simpleMode simple 
mode}. */
+       /** Default serializer, single quotes, {@link 
JsonSerializerBuilder#simpleMode() simple mode}. */
        public static final SimpleJsonSerializer DEFAULT = new 
SimpleJsonSerializer(create());
 
        /** Default serializer, single quotes, simple mode, with whitespace. */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfig.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfig.java
index f1f3f1a..0aba309 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfig.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfig.java
@@ -31,7 +31,7 @@ import org.apache.juneau.serializer.*;
 @Target({TYPE,METHOD})
 @Retention(RUNTIME)
 @Inherited
-@ContextApply(JsonConfigAnnotation.Apply.class)
+@ContextApply({JsonConfigAnnotation.ApplySerializer.class,JsonConfigAnnotation.ApplyParser.class})
 public @interface JsonConfig {
 
        /**
@@ -69,7 +69,7 @@ public @interface JsonConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link JsonParser#JSON_validateEnd}
+        *      <li class='jm'>{@link JsonParserBuilder#validateEnd()}
         * </ul>
         */
        String validateEnd() default "";
@@ -101,7 +101,7 @@ public @interface JsonConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link JsonSerializer#JSON_addBeanTypes}
+        *      <li class='jm'>{@link JsonSerializerBuilder#addBeanTypesJson()}
         * </ul>
         */
        String addBeanTypes() default "";
@@ -127,7 +127,7 @@ public @interface JsonConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link JsonSerializer#JSON_escapeSolidus}
+        *      <li class='jm'>{@link JsonSerializerBuilder#escapeSolidus()}
         * </ul>
         */
        String escapeSolidus() default "";
@@ -166,7 +166,7 @@ public @interface JsonConfig {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link JsonSerializer#JSON_simpleMode}
+        *      <li class='jm'>{@link JsonSerializerBuilder#simpleMode()}
         * </ul>
         */
        String simpleMode() default "";
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
index 847b5c6..464189b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
@@ -12,10 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.json.annotation;
 
-import static org.apache.juneau.json.JsonParser.*;
-import static org.apache.juneau.json.JsonSerializer.*;
-
 import org.apache.juneau.*;
+import org.apache.juneau.json.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.svl.*;
 
@@ -27,25 +25,46 @@ public class JsonConfigAnnotation {
        /**
         * Applies {@link JsonConfig} annotations to a {@link 
ContextPropertiesBuilder}.
         */
-       public static class Apply extends 
AnnotationApplier<JsonConfig,ContextPropertiesBuilder> {
+       public static class ApplySerializer extends 
AnnotationApplier<JsonConfig,JsonSerializerBuilder> {
+
+               /**
+                * Constructor.
+                *
+                * @param vr The resolver for resolving values in annotations.
+                */
+               public ApplySerializer(VarResolverSession vr) {
+                       super(JsonConfig.class, JsonSerializerBuilder.class, 
vr);
+               }
+
+               @Override
+               public void apply(AnnotationInfo<JsonConfig> ai, 
JsonSerializerBuilder b) {
+                       JsonConfig a = ai.getAnnotation();
+
+                       bool(a.addBeanTypes()).ifPresent(x -> 
b.addBeanTypesJson(x));
+                       bool(a.escapeSolidus()).ifPresent(x -> 
b.escapeSolidus(x));
+                       bool(a.simpleMode()).ifPresent(x -> b.simpleMode(x));
+               }
+       }
+
+       /**
+        * Applies {@link JsonConfig} annotations to a {@link 
ContextPropertiesBuilder}.
+        */
+       public static class ApplyParser extends 
AnnotationApplier<JsonConfig,JsonParserBuilder> {
 
                /**
                 * Constructor.
                 *
                 * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(VarResolverSession vr) {
-                       super(JsonConfig.class, ContextPropertiesBuilder.class, 
vr);
+               public ApplyParser(VarResolverSession vr) {
+                       super(JsonConfig.class, JsonParserBuilder.class, vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<JsonConfig> ai, 
ContextPropertiesBuilder b) {
+               public void apply(AnnotationInfo<JsonConfig> ai, 
JsonParserBuilder b) {
                        JsonConfig a = ai.getAnnotation();
 
-                       bool(a.addBeanTypes()).ifPresent(x -> 
b.set(JSON_addBeanTypes, x));
-                       bool(a.escapeSolidus()).ifPresent(x -> 
b.set(JSON_escapeSolidus, x));
-                       bool(a.simpleMode()).ifPresent(x -> 
b.set(JSON_simpleMode, x));
-                       bool(a.validateEnd()).ifPresent(x -> 
b.set(JSON_validateEnd, x));
+                       bool(a.validateEnd()).ifPresent(x -> b.validateEnd(x));
                }
        }
 }
\ No newline at end of file

Reply via email to