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>"</bar>"</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