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 0b58856 Context API refactoring.
0b58856 is described below
commit 0b58856be24c75b23e6f4961758d37e9bbac2aa4
Author: JamesBognar <[email protected]>
AuthorDate: Tue Sep 28 11:45:39 2021 -0400
Context API refactoring.
---
.../main/java/org/apache/juneau/UriContext.java | 17 +
.../apache/juneau/html/annotation/HtmlConfig.java | 2 +-
.../apache/juneau/json/annotation/JsonConfig.java | 2 +-
.../juneau/msgpack/annotation/MsgPackConfig.java | 2 +-
.../org/apache/juneau/serializer/Serializer.java | 433 +++------------------
.../juneau/serializer/SerializerBuilder.java | 213 +++++++---
.../juneau/serializer/SerializerSession.java | 30 +-
.../juneau/serializer/SerializerSessionArgs.java | 7 +-
.../apache/juneau/serializer/SerializerWriter.java | 4 +-
.../serializer/annotation/SerializerConfig.java | 34 +-
.../annotation/SerializerConfigAnnotation.java | 35 +-
.../apache/juneau/uon/annotation/UonConfig.java | 2 +-
.../apache/juneau/xml/annotation/XmlConfig.java | 2 +-
.../juneau/rest/client/RestClientBuilder.java | 22 +-
.../org/apache/juneau/rest/RestContextBuilder.java | 5 +-
.../juneau/SerializerPropertiesComboTest.java | 23 +-
16 files changed, 307 insertions(+), 526 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriContext.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriContext.java
index c18d3a0..beb59ec 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriContext.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriContext.java
@@ -12,6 +12,7 @@
//
***************************************************************************************************************************
package org.apache.juneau;
+import static org.apache.juneau.internal.ExceptionUtils.*;
import static org.apache.juneau.internal.StringUtils.*;
import org.apache.juneau.annotation.*;
@@ -69,6 +70,22 @@ public class UriContext {
}
/**
+ * Static creator.
+ *
+ * @param s
+ * The input string.
+ * <br>Example:
<js>{authority:'http://localhost:10000',contextRoot:'/myContext',servletPath:'/myServlet',pathInfo:'/foo'}</js>
+ * @return A new {@link UriContext} object.
+ */
+ public static UriContext of(String s) {
+ try {
+ return new UriContext(s);
+ } catch (ParseException e) {
+ throw runtimeException(e);
+ }
+ }
+
+ /**
* Constructor.
*
* <p>
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 e2c69ec..709fdcd 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
@@ -58,7 +58,7 @@ public @interface HtmlConfig {
* through reflection.
*
* <p>
- * When present, this value overrides the {@link
Serializer#SERIALIZER_addBeanTypes} setting and is
+ * When present, this value overrides the {@link
SerializerBuilder#addBeanTypes()} setting and is
* provided to customize the behavior of specific serializers in a
{@link SerializerGroup}.
*
* <ul class='notes'>
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 0e1a93b..515f250 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
@@ -86,7 +86,7 @@ public @interface JsonConfig {
* through reflection.
*
* <p>
- * When present, this value overrides the {@link
Serializer#SERIALIZER_addBeanTypes} setting and is
+ * When present, this value overrides the {@link
SerializerBuilder#addBeanTypes()} setting and is
* provided to customize the behavior of specific serializers in a
{@link SerializerGroup}.
*
* <ul class='notes'>
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
index 04ef640..229aea5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
@@ -58,7 +58,7 @@ public @interface MsgPackConfig {
* through reflection.
*
* <p>
- * When present, this value overrides the {@link
Serializer#SERIALIZER_addBeanTypes} setting and is
+ * When present, this value overrides the {@link
SerializerBuilder#addBeanTypes()} setting and is
* provided to customize the behavior of specific serializers in a
{@link SerializerGroup}.
*
* <ul class='notes'>
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
index 3e1bef2..a42ffc0 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
@@ -12,6 +12,8 @@
//
***************************************************************************************************************************
package org.apache.juneau.serializer;
+import static java.util.Optional.*;
+
import java.io.*;
import org.apache.juneau.*;
import org.apache.juneau.annotation.*;
@@ -42,6 +44,10 @@ import org.apache.juneau.internal.*;
@ConfigurableContext
public abstract class Serializer extends BeanTraverseContext {
+
//-------------------------------------------------------------------------------------------------------------------
+ // Static
+
//-------------------------------------------------------------------------------------------------------------------
+
/**
* Represents no Serializer.
*/
@@ -66,349 +72,11 @@ public abstract class Serializer extends
BeanTraverseContext {
}
//-------------------------------------------------------------------------------------------------------------------
- // Configurable properties
-
//-------------------------------------------------------------------------------------------------------------------
-
- static final String PREFIX = "Serializer";
-
- /**
- * Configuration property: Add <js>"_type"</js> properties when needed.
- *
- * <p>
- * When enabled, then <js>"_type"</js> properties will be added to
beans if their type cannot be inferred
- * through reflection.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_addBeanTypes
SERIALIZER_addBeanTypes}
- * <li><b>Name:</b> <js>"Serializer.addBeanTypes.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b> <c>Serializer.addBeanTypes</c>
- * <li><b>Environment variable:</b> <c>SERIALIZER_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.serializer.annotation.SerializerConfig#addBeanTypes()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#addBeanTypes()}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_addBeanTypes = PREFIX +
".addBeanTypes.b";
-
- /**
- * Configuration property: Add type attribute to root nodes.
- *
- * <p>
- * When enabled, <js>"_type"</js> properties will be added to top-level
beans.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_addRootType
SERIALIZER_addRootType}
- * <li><b>Name:</b> <js>"Serializer.addRootType.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b> <c>Serializer.addRootType</c>
- * <li><b>Environment variable:</b> <c>SERIALIZER_ADDROOTTYPE</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.serializer.annotation.SerializerConfig#addRootType()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#addRootType()}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_addRootType = PREFIX +
".addRootType.b";
-
- /**
- * Configuration property: Serializer listener.
- *
- * <p>
- * Class used to listen for errors and warnings that occur during
serialization.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_listener SERIALIZER_listener}
- * <li><b>Name:</b> <js>"Serializer.listener.c"</js>
- * <li><b>Data type:</b> <c>Class<{@link
org.apache.juneau.serializer.SerializerListener}></c>
- * <li><b>Default:</b> <jk>null</jk>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.serializer.annotation.SerializerConfig#listener()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#listener(Class)}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_listener = PREFIX + ".listener.c";
-
- /**
- * Configuration property: Don't trim null bean property values.
- *
- * <p>
- * When enabled, null bean values will be serialized to the output.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_keepNullProperties
SERIALIZER_keepNullProperties}
- * <li><b>Name:</b> <js>"Serializer.keepNullProperties.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b>
<c>Serializer.keepNullProperties</c>
- * <li><b>Environment variable:</b>
<c>SERIALIZER_KEEPNULLPROPERTIES</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.serializer.annotation.SerializerConfig#keepNullProperties()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#keepNullProperties()}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_keepNullProperties = PREFIX +
".keepNullProperties.b";
-
- /**
- * Configuration property: Sort arrays and collections alphabetically.
- *
- * <p>
- * When enabled, copies and sorts the contents of arrays and
collections before serializing them.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_sortCollections
SERIALIZER_sortCollections}
- * <li><b>Name:</b> <js>"Serializer.sortCollections.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b> <c>Serializer.sortCollections</c>
- * <li><b>Environment variable:</b>
<c>SERIALIZER_SORTCOLLECTIONS</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.serializer.annotation.SerializerConfig#sortCollections()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#sortCollections()}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_sortCollections = PREFIX +
".sortCollections.b";
-
- /**
- * Configuration property: Sort maps alphabetically.
- *
- * <p>
- * When enabled, copies and sorts the contents of maps by their keys
before serializing them.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_sortMaps SERIALIZER_sortMaps}
- * <li><b>Name:</b> <js>"Serializer.sortMaps.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b> <c>Serializer.sortMaps</c>
- * <li><b>Environment variable:</b> <c>SERIALIZER_SORTMAPS</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.serializer.annotation.SerializerConfig#sortMaps()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#sortMaps()}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_sortMaps = PREFIX + ".sortMaps.b";
-
- /**
- * Configuration property: Trim empty lists and arrays.
- *
- * <p>
- * When enabled, empty lists and arrays will not be serialized.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_trimEmptyCollections
SERIALIZER_trimEmptyCollections}
- * <li><b>Name:</b> <js>"Serializer.trimEmptyCollections.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b>
<c>Serializer.trimEmptyCollections</c>
- * <li><b>Environment variable:</b>
<c>SERIALIZER_TRIMEMPTYCOLLECTIONS</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.serializer.annotation.SerializerConfig#trimEmptyCollections()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#trimEmptyCollections()}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_trimEmptyCollections = PREFIX +
".trimEmptyCollections.b";
-
- /**
- * Configuration property: Trim empty maps.
- *
- * <p>
- * When enabled, empty map values will not be serialized to the output.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_trimEmptyMaps
SERIALIZER_trimEmptyMaps}
- * <li><b>Name:</b> <js>"Serializer.trimEmptyMaps.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b> <c>Serializer.trimEmptyMaps</c>
- * <li><b>Environment variable:</b>
<c>SERIALIZER_TRIMEMPTYMAPS</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.serializer.annotation.SerializerConfig#trimEmptyMaps()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#trimEmptyMaps()}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_trimEmptyMaps = PREFIX +
".trimEmptyMaps.b";
-
- /**
- * Configuration property: Trim strings.
- *
- * <p>
- * When enabled, string values will be trimmed of whitespace using
{@link String#trim()} before being serialized.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_trimStrings
SERIALIZER_trimStrings}
- * <li><b>Name:</b> <js>"Serializer.trimStrings.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b> <c>Serializer.trimStrings</c>
- * <li><b>Environment variable:</b> <c>SERIALIZER_TRIMSTRINGS</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.serializer.annotation.SerializerConfig#trimStrings()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#trimStrings()}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_trimStrings = PREFIX +
".trimStrings.b";
-
- /**
- * Configuration property: URI context bean.
- *
- * <p>
- * Bean used for resolution of URIs to absolute or root-relative form.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_uriContext
SERIALIZER_uriContext}
- * <li><b>Name:</b> <js>"Serializer.uriContext.s"</js>
- * <li><b>Data type:</b> {@link org.apache.juneau.UriContext}
- * <li><b>System property:</b> <c>Serializer.uriContext</c>
- * <li><b>Environment variable:</b> <c>SERIALIZER_URICONTEXT</c>
- * <li><b>Default:</b> <js>"{}"</js>
- * <li><b>Session property:</b> <jk>true</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.serializer.annotation.SerializerConfig#uriContext()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#uriContext(UriContext)}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_uriContext = PREFIX +
".uriContext.s";
-
- /**
- * Configuration property: URI relativity.
- *
- * <p>
- * Defines what relative URIs are relative to when serializing any of
the following:
- * <ul>
- * <li>{@link java.net.URI}
- * <li>{@link java.net.URL}
- * <li>Properties and classes annotated with {@link Uri @Uri}
- * </ul>
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_uriRelativity
SERIALIZER_uriRelativity}
- * <li><b>Name:</b> <js>"Serializer.uriRelativity.s"</js>
- * <li><b>Data type:</b> {@link org.apache.juneau.UriRelativity}
- * <li><b>System property:</b> <c>Serializer.uriRelativity</c>
- * <li><b>Environment variable:</b>
<c>SERIALIZER_URIRELATIVITY</c>
- * <li><b>Default:</b> <js>"RESOURCE"</js>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.serializer.annotation.SerializerConfig#uriRelativity()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#uriRelativity(UriRelativity)}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_uriRelativity = PREFIX +
".uriRelativity.s";
-
- /**
- * Configuration property: URI resolution.
- *
- * <p>
- * Defines the resolution level for URIs when serializing any of the
following:
- * <ul>
- * <li>{@link java.net.URI}
- * <li>{@link java.net.URL}
- * <li>Properties and classes annotated with {@link Uri @Uri}
- * </ul>
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.Serializer#SERIALIZER_uriResolution
SERIALIZER_uriResolution}
- * <li><b>Name:</b> <js>"Serializer.uriResolution.s"</js>
- * <li><b>Data type:</b> {@link org.apache.juneau.UriResolution}
- * <li><b>System property:</b> <c>Serializer.uriResolution</c>
- * <li><b>Environment variable:</b>
<c>SERIALIZER_URIRESOLUTION</c>
- * <li><b>Default:</b> <js>"NONE"</js>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.serializer.annotation.SerializerConfig#uriResolution()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.SerializerBuilder#uriResolution(UriResolution)}
- * </ul>
- * </ul>
- */
- public static final String SERIALIZER_uriResolution = PREFIX +
".uriResolution.s";
-
-
//-------------------------------------------------------------------------------------------------------------------
// Instance
//-------------------------------------------------------------------------------------------------------------------
- private final boolean
+ final String produces, accept;
+ final boolean
addBeanTypes,
keepNullProperties,
trimEmptyCollections,
@@ -417,16 +85,14 @@ public abstract class Serializer extends
BeanTraverseContext {
sortCollections,
sortMaps,
addRootType;
- private final UriContext uriContext;
- private final UriResolution uriResolution;
- private final UriRelativity uriRelativity;
- private final Class<? extends SerializerListener> listener;
-
- private final MediaRanges accept;
- private final MediaType[] accepts;
- private final MediaType produces;
+ final UriContext uriContext;
+ final UriResolution uriResolution;
+ final UriRelativity uriRelativity;
+ final Class<? extends SerializerListener> listener;
- final String _produces, _accept;
+ private final MediaRanges acceptRanges;
+ private final MediaType[] acceptMediaTypes;
+ private final MediaType producesMediaType;
/**
* Constructor
@@ -436,25 +102,24 @@ public abstract class Serializer extends
BeanTraverseContext {
protected Serializer(SerializerBuilder builder) {
super(builder);
- _produces = builder.produces;
- _accept = builder.accept;
- ContextProperties cp = getContextProperties();
- addBeanTypes =
cp.getBoolean(SERIALIZER_addBeanTypes).orElse(false);
- keepNullProperties =
cp.getBoolean(SERIALIZER_keepNullProperties).orElse(false);
- trimEmptyCollections =
cp.getBoolean(SERIALIZER_trimEmptyCollections).orElse(false);
- trimEmptyMaps =
cp.getBoolean(SERIALIZER_trimEmptyMaps).orElse(false);
- trimStrings =
cp.getBoolean(SERIALIZER_trimStrings).orElse(false);
- sortCollections =
cp.getBoolean(SERIALIZER_sortCollections).orElse(false);
- sortMaps = cp.getBoolean(SERIALIZER_sortMaps).orElse(false);
- addRootType =
cp.getBoolean(SERIALIZER_addRootType).orElse(false);
- uriContext = cp.get(SERIALIZER_uriContext,
UriContext.class).orElse(UriContext.DEFAULT);
- uriResolution = cp.get(SERIALIZER_uriResolution,
UriResolution.class).orElse(UriResolution.NONE);
- uriRelativity = cp.get(SERIALIZER_uriRelativity,
UriRelativity.class).orElse(UriRelativity.RESOURCE);
- listener = cp.getClass(SERIALIZER_listener,
SerializerListener.class).orElse(null);
-
- this.produces = MediaType.of(builder.produces);
- this.accept = builder.accept == null ?
MediaRanges.of(builder.produces) : MediaRanges.of(builder.accept);
- this.accepts = builder.accept == null ? new MediaType[]
{this.produces} : MediaType.ofAll(StringUtils.split(builder.accept, ','));
+ produces = builder.produces;
+ accept = builder.accept;
+ addBeanTypes = builder.addBeanTypes;
+ keepNullProperties = builder.keepNullProperties;
+ trimEmptyCollections = builder.trimEmptyCollections;
+ trimEmptyMaps = builder.trimEmptyMaps;
+ trimStrings = builder.trimStrings;
+ sortCollections = builder.sortCollections;
+ sortMaps = builder.sortMaps;
+ addRootType = builder.addRootType;
+ uriContext = builder.uriContext;
+ uriResolution = builder.uriResolution;
+ uriRelativity = builder.uriRelativity;
+ listener = builder.listener;
+
+ this.producesMediaType = MediaType.of(produces);
+ this.acceptRanges =
ofNullable(accept).map(MediaRanges::of).orElseGet(()->MediaRanges.of(produces));
+ this.acceptMediaTypes = ofNullable(builder.accept).map(x ->
StringUtils.split(x, ',')).map(MediaType::ofAll).orElseGet(()->new MediaType[]
{this.producesMediaType});
}
@Override
@@ -573,7 +238,7 @@ public abstract class Serializer extends
BeanTraverseContext {
* @return The list of media types. Never <jk>null</jk>.
*/
public final MediaRanges getMediaTypeRanges() {
- return accept;
+ return acceptRanges;
}
/**
@@ -585,7 +250,7 @@ public abstract class Serializer extends
BeanTraverseContext {
* @return The media type. Never <jk>null</jk>.
*/
public final MediaType getPrimaryMediaType() {
- return accepts[0];
+ return acceptMediaTypes[0];
}
/**
@@ -597,7 +262,7 @@ public abstract class Serializer extends
BeanTraverseContext {
* @return The list of media types. Never <jk>null</jk>.
*/
public final MediaType[] getAcceptMediaTypes() {
- return accepts;
+ return acceptMediaTypes;
}
/**
@@ -617,7 +282,7 @@ public abstract class Serializer extends
BeanTraverseContext {
* @return The response content type. If <jk>null</jk>, then the
matched media type is used.
*/
public final MediaType getResponseContentType() {
- return produces;
+ return producesMediaType;
}
//-----------------------------------------------------------------------------------------------------------------
@@ -627,7 +292,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* Add <js>"_type"</js> properties when needed.
*
- * @see #SERIALIZER_addBeanTypes
+ * @see SerializerBuilder#addBeanTypes()
* @return
* <jk>true</jk> if <js>"_type"</js> properties added to beans if
their type cannot be inferred
* through reflection.
@@ -639,7 +304,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* Add type attribute to root nodes.
*
- * @see #SERIALIZER_addRootType
+ * @see SerializerBuilder#addRootType()
* @return
* <jk>true</jk> if type property should be added to root node.
*/
@@ -650,7 +315,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* Serializer listener.
*
- * @see #SERIALIZER_listener
+ * @see SerializerBuilder#listener(Class)
* @return
* Class used to listen for errors and warnings that occur during
serialization.
*/
@@ -661,7 +326,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* Sort arrays and collections alphabetically.
*
- * @see #SERIALIZER_sortCollections
+ * @see SerializerBuilder#sortCollections()
* @return
* <jk>true</jk> if arrays and collections are copied and sorted
before serialization.
*/
@@ -672,7 +337,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* Sort maps alphabetically.
*
- * @see #SERIALIZER_sortMaps
+ * @see SerializerBuilder#sortMaps()
* @return
* <jk>true</jk> if maps are copied and sorted before
serialization.
*/
@@ -683,7 +348,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* Trim empty lists and arrays.
*
- * @see #SERIALIZER_trimEmptyCollections
+ * @see SerializerBuilder#trimEmptyCollections()
* @return
* <jk>true</jk> if empty lists and arrays are not serialized to
the output.
*/
@@ -694,7 +359,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* Trim empty maps.
*
- * @see #SERIALIZER_trimEmptyMaps
+ * @see SerializerBuilder#trimEmptyMaps()
* @return
* <jk>true</jk> if empty map values are not serialized to the
output.
*/
@@ -705,7 +370,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* Don't trim null bean property values.
*
- * @see #SERIALIZER_keepNullProperties
+ * @see SerializerBuilder#keepNullProperties()
* @return
* <jk>true</jk> if null bean values are serialized to the output.
*/
@@ -716,7 +381,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* Trim strings.
*
- * @see #SERIALIZER_trimStrings
+ * @see SerializerBuilder#trimStrings()
* @return
* <jk>true</jk> if string values will be trimmed of whitespace
using {@link String#trim()} before being serialized.
*/
@@ -727,7 +392,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* URI context bean.
*
- * @see #SERIALIZER_uriContext
+ * @see SerializerBuilder#uriContext(UriContext)
* @return
* Bean used for resolution of URIs to absolute or root-relative
form.
*/
@@ -738,7 +403,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* URI relativity.
*
- * @see #SERIALIZER_uriRelativity
+ * @see SerializerBuilder#uriRelativity(UriRelativity)
* @return
* Defines what relative URIs are relative to when serializing any
of the following:
*/
@@ -749,7 +414,7 @@ public abstract class Serializer extends
BeanTraverseContext {
/**
* URI resolution.
*
- * @see #SERIALIZER_uriResolution
+ * @see SerializerBuilder#uriResolution(UriResolution)
* @return
* Defines the resolution level for URIs when serializing URIs.
*/
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
index a3cde89..80ca7f1 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
@@ -12,8 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.serializer;
-import static org.apache.juneau.serializer.Serializer.*;
-
import java.lang.annotation.*;
import java.lang.reflect.*;
import java.util.*;
@@ -30,13 +28,33 @@ import org.apache.juneau.internal.*;
@FluentSetters
public abstract class SerializerBuilder extends BeanTraverseBuilder {
+ boolean addBeanTypes, addRootType, keepNullProperties, sortCollections,
sortMaps, trimEmptyCollections,
+ trimEmptyMaps, trimStrings;
String produces, accept;
+ UriContext uriContext;
+ UriRelativity uriRelativity;
+ UriResolution uriResolution;
+ Class<? extends SerializerListener> listener;
/**
* Constructor, default settings.
*/
protected SerializerBuilder() {
super();
+ produces = null;
+ accept = null;
+ addBeanTypes = env("Serializer.addBeanTypes", false);
+ addRootType = env("Serializer.addRootType", false);
+ keepNullProperties = env("Serializer.keepNullProperties",
false);
+ sortCollections = env("Serializer.sortCollections", false);
+ sortMaps = env("Serializer.sortMaps", false);
+ trimEmptyCollections = env("Serializer.trimEmptyCollections",
false);
+ trimEmptyMaps = env("Serializer.trimEmptyMaps", false);
+ trimStrings = env("Serializer.trimStrings", false);
+ uriContext = UriContext.DEFAULT;
+ uriRelativity = UriRelativity.RESOURCE;
+ uriResolution = UriResolution.NONE;
+ listener = null;
}
/**
@@ -46,8 +64,20 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
*/
protected SerializerBuilder(Serializer copyFrom) {
super(copyFrom);
- produces = copyFrom._produces;
- accept = copyFrom._accept;
+ produces = copyFrom.produces;
+ accept = copyFrom.accept;
+ addBeanTypes = copyFrom.addBeanTypes;
+ addRootType = copyFrom.addRootType;
+ keepNullProperties = copyFrom.keepNullProperties;
+ sortCollections = copyFrom.sortCollections;
+ sortMaps = copyFrom.sortMaps;
+ trimEmptyCollections = copyFrom.trimEmptyCollections;
+ trimEmptyMaps = copyFrom.trimEmptyMaps;
+ trimStrings = copyFrom.trimStrings;
+ uriContext = copyFrom.uriContext;
+ uriRelativity = copyFrom.uriRelativity;
+ uriResolution = copyFrom.uriResolution;
+ listener = copyFrom.listener;
}
/**
@@ -59,6 +89,18 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
super(copyFrom);
produces = copyFrom.produces;
accept = copyFrom.accept;
+ addBeanTypes = copyFrom.addBeanTypes;
+ addRootType = copyFrom.addRootType;
+ keepNullProperties = copyFrom.keepNullProperties;
+ sortCollections = copyFrom.sortCollections;
+ sortMaps = copyFrom.sortMaps;
+ trimEmptyCollections = copyFrom.trimEmptyCollections;
+ trimEmptyMaps = copyFrom.trimEmptyMaps;
+ trimStrings = copyFrom.trimStrings;
+ uriContext = copyFrom.uriContext;
+ uriRelativity = copyFrom.uriRelativity;
+ uriResolution = copyFrom.uriResolution;
+ listener = copyFrom.listener;
}
@Override /* ContextBuilder */
@@ -170,15 +212,23 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* String <jv>json</jv> =
<jv>serializer</jv>.serialize(<jv>myMapp</jv>);
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_addBeanTypes}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public SerializerBuilder addBeanTypes() {
- return set(SERIALIZER_addBeanTypes);
+ return addBeanTypes(true);
+ }
+
+ /**
+ * Same as {@link #addBeanTypes()} but allows you to explicitly specify
the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public SerializerBuilder addBeanTypes(boolean value) {
+ addBeanTypes = value;
+ return this;
}
/**
@@ -220,15 +270,23 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* String <jv>json</jv> =
<jv>serializer</jv>.serialize(<jk>new</jk> MyBean());
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_addRootType}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public SerializerBuilder addRootType() {
- return set(SERIALIZER_addRootType);
+ return addRootType(true);
+ }
+
+ /**
+ * Same as {@link #addRootType()} but allows you to explicitly specify
the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public SerializerBuilder addRootType(boolean value) {
+ addRootType = value;
+ return this;
}
/**
@@ -258,15 +316,23 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* String <jv>json</jv> =
<jv>serializer</jv>.serialize(<jk>new</jk> MyBean());
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_keepNullProperties}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public SerializerBuilder keepNullProperties() {
- return set(SERIALIZER_keepNullProperties);
+ return keepNullProperties(true);
+ }
+
+ /**
+ * Same as {@link #keepNullProperties()} but allows you to explicitly
specify the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public SerializerBuilder keepNullProperties(boolean value) {
+ keepNullProperties = value;
+ return this;
}
/**
@@ -311,17 +377,14 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* }
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_listener}
- * </ul>
- *
* @param value
* The new value for this property.
* @return This object (for method chaining).
*/
@FluentSetter
public SerializerBuilder listener(Class<? extends SerializerListener>
value) {
- return set(SERIALIZER_listener, value);
+ listener = value;
+ return this;
}
/**
@@ -348,15 +411,23 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* String <jv>json</jv> =
<jv>serializer</jv>.serialize(<jv>myArray</jv>);
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_sortCollections}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public SerializerBuilder sortCollections() {
- return set(SERIALIZER_sortCollections);
+ return sortCollections(true);
+ }
+
+ /**
+ * Same as {@link #sortCollections()} but allows you to explicitly
specify the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public SerializerBuilder sortCollections(boolean value) {
+ sortCollections = value;
+ return this;
}
/**
@@ -383,15 +454,23 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* String <jv>json</jv> =
<jv>serializer</jv>.serialize(<jv>myMap</jv>);
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_sortMaps}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public SerializerBuilder sortMaps() {
- return set(SERIALIZER_sortMaps);
+ return sortMaps(true);
+ }
+
+ /**
+ * Same as {@link #sortMaps()} but allows you to explicitly specify the
value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public SerializerBuilder sortMaps(boolean value) {
+ sortMaps = value;
+ return this;
}
/**
@@ -426,15 +505,23 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* String <jv>json</jv> =
<jv>serializer</jv>.serialize(<jk>new</jk> MyBean());
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link
Serializer#SERIALIZER_trimEmptyCollections}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public SerializerBuilder trimEmptyCollections() {
- return set(SERIALIZER_trimEmptyCollections);
+ return trimEmptyCollections(true);
+ }
+
+ /**
+ * Same as {@link #trimEmptyCollections()} but allows you to explicitly
specify the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public SerializerBuilder trimEmptyCollections(boolean value) {
+ trimEmptyCollections = value;
+ return this;
}
/**
@@ -467,15 +554,23 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* String <jv>json</jv> =
<jv>serializer</jv>.serialize(<jk>new</jk> MyBean());
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyMaps}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public SerializerBuilder trimEmptyMaps() {
- return set(SERIALIZER_trimEmptyMaps);
+ return trimEmptyMaps(true);
+ }
+
+ /**
+ * Same as {@link #trimEmptyMaps()} but allows you to explicitly
specify the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public SerializerBuilder trimEmptyMaps(boolean value) {
+ trimEmptyMaps = value;
+ return this;
}
/**
@@ -499,15 +594,23 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* String <jv>json</jv> =
<jv>serializer</jv>.toString(<jv>myMap</jv>);
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_trimStrings}
- * </ul>
- *
* @return This object (for method chaining).
*/
@FluentSetter
public SerializerBuilder trimStrings() {
- return set(SERIALIZER_trimStrings);
+ return trimStrings(true);
+ }
+
+ /**
+ * Same as {@link #trimStrings()} but allows you to explicitly specify
the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public SerializerBuilder trimStrings(boolean value) {
+ trimStrings = value;
+ return this;
}
/**
@@ -543,7 +646,6 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_uriContext}
* <li class='link'>{@doc MarshallingUris}
* </ul>
*
@@ -552,7 +654,8 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
*/
@FluentSetter
public SerializerBuilder uriContext(UriContext value) {
- return set(SERIALIZER_uriContext, value);
+ uriContext = value;
+ return this;
}
/**
@@ -579,7 +682,6 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* See {@link #uriContext(UriContext)} for examples.
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_uriRelativity}
* <li class='link'>{@doc MarshallingUris}
* </ul>
*
@@ -590,7 +692,8 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
*/
@FluentSetter
public SerializerBuilder uriRelativity(UriRelativity value) {
- return set(SERIALIZER_uriRelativity, value);
+ uriRelativity = value;
+ return this;
}
/**
@@ -619,7 +722,6 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
* See {@link #uriContext(UriContext)} for examples.
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_uriResolution}
* <li class='link'>{@doc MarshallingUris}
* </ul>
*
@@ -630,7 +732,8 @@ public abstract class SerializerBuilder extends
BeanTraverseBuilder {
*/
@FluentSetter
public SerializerBuilder uriResolution(UriResolution value) {
- return set(SERIALIZER_uriResolution, value);
+ uriResolution = value;
+ return this;
}
// <FluentSetters>
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index 7e469db..62d224b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -14,7 +14,7 @@ package org.apache.juneau.serializer;
import static org.apache.juneau.internal.ClassUtils.*;
import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.serializer.Serializer.*;
+import static java.util.Optional.*;
import java.io.*;
import java.lang.reflect.*;
@@ -78,9 +78,9 @@ public abstract class SerializerSession extends
BeanTraverseSession {
super(ctx, args == null ? SerializerSessionArgs.DEFAULT : args);
this.ctx = ctx;
args = args == null ? SerializerSessionArgs.DEFAULT : args;
- SessionProperties sp = getSessionProperties();
this.javaMethod = args.javaMethod;
- this.uriResolver = UriResolver.of(ctx.getUriResolution(),
ctx.getUriRelativity(), sp.get(SERIALIZER_uriContext,
UriContext.class).orElse(ctx.getUriContext()));
+ UriContext uriContext =
ofNullable(args.uriContext).orElse(ctx.getUriContext());
+ this.uriResolver = UriResolver.of(ctx.getUriResolution(),
ctx.getUriRelativity(), uriContext);
this.listener = castOrCreate(SerializerListener.class,
ctx.getListener());
this.vrs = args.resolver;
}
@@ -607,7 +607,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
* Returns the parser-side expected type for the object.
*
* <p>
- * The return value depends on the {@link
Serializer#SERIALIZER_addRootType} setting.
+ * The return value depends on the {@link
SerializerBuilder#addRootType()} setting.
* When disabled, the parser already knows the Java POJO type being
parsed, so there is
* no reason to add <js>"_type"</js> attributes to the root-level
object.
*
@@ -707,7 +707,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: Add <js>"_type"</js> properties when needed.
*
- * @see Serializer#SERIALIZER_addBeanTypes
+ * @see SerializerBuilder#addBeanTypes()
* @return
* <jk>true</jk> if <js>"_type"</js> properties added to beans if
their type cannot be inferred
* through reflection.
@@ -719,7 +719,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: Add type attribute to root nodes.
*
- * @see Serializer#SERIALIZER_addRootType
+ * @see SerializerBuilder#addRootType()
* @return
* <jk>true</jk> if type property should be added to root node.
*/
@@ -739,7 +739,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: Sort arrays and collections alphabetically.
*
- * @see Serializer#SERIALIZER_sortCollections
+ * @see SerializerBuilder#sortCollections()
* @return
* <jk>true</jk> if arrays and collections are copied and sorted
before serialization.
*/
@@ -750,7 +750,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: Sort maps alphabetically.
*
- * @see Serializer#SERIALIZER_sortMaps
+ * @see SerializerBuilder#sortMaps()
* @return
* <jk>true</jk> if maps are copied and sorted before
serialization.
*/
@@ -761,7 +761,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: Trim empty lists and arrays.
*
- * @see Serializer#SERIALIZER_trimEmptyCollections
+ * @see SerializerBuilder#trimEmptyCollections()
* @return
* <jk>true</jk> if empty lists and arrays are not serialized to
the output.
*/
@@ -772,7 +772,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: Trim empty maps.
*
- * @see Serializer#SERIALIZER_trimEmptyMaps
+ * @see SerializerBuilder#trimEmptyMaps()
* @return
* <jk>true</jk> if empty map values are not serialized to the
output.
*/
@@ -783,7 +783,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: Don't trim null bean property values.
*
- * @see Serializer#SERIALIZER_keepNullProperties
+ * @see SerializerBuilder#keepNullProperties()
* @return
* <jk>true</jk> if null bean values are serialized to the output.
*/
@@ -794,7 +794,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: Trim strings.
*
- * @see Serializer#SERIALIZER_trimStrings
+ * @see SerializerBuilder#trimStrings()
* @return
* <jk>true</jk> if string values will be trimmed of whitespace
using {@link String#trim()} before being serialized.
*/
@@ -805,7 +805,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: URI context bean.
*
- * @see Serializer#SERIALIZER_uriContext
+ * @see SerializerBuilder#uriContext(UriContext)
* @return
* Bean used for resolution of URIs to absolute or root-relative
form.
*/
@@ -816,7 +816,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: URI relativity.
*
- * @see Serializer#SERIALIZER_uriRelativity
+ * @see SerializerBuilder#uriRelativity(UriRelativity)
* @return
* Defines what relative URIs are relative to when serializing any
of the following:
*/
@@ -827,7 +827,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
/**
* Configuration property: URI resolution.
*
- * @see Serializer#SERIALIZER_uriResolution
+ * @see SerializerBuilder#uriResolution(UriResolution)
* @return
* Defines the resolution level for URIs when serializing URIs.
*/
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSessionArgs.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSessionArgs.java
index a524bec..a87a955 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSessionArgs.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSessionArgs.java
@@ -12,8 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.serializer;
-import static org.apache.juneau.serializer.Serializer.*;
-
import java.lang.reflect.*;
import java.nio.charset.*;
import java.util.*;
@@ -43,6 +41,7 @@ public final class SerializerSessionArgs extends
BeanSessionArgs {
VarResolverSession resolver;
Boolean useWhitespace;
Charset fileCharset, streamCharset;
+ UriContext uriContext;
/**
* Static creator.
@@ -141,7 +140,7 @@ public final class SerializerSessionArgs extends
BeanSessionArgs {
* Bean used for resolution of URIs to absolute or root-relative form.
*
* <p>
- * If not specified, defaults to {@link
Serializer#SERIALIZER_uriContext}.
+ * If not specified, defaults to {@link
SerializerBuilder#uriContext(UriContext)}.
*
* @param value
* The new property value.
@@ -150,7 +149,7 @@ public final class SerializerSessionArgs extends
BeanSessionArgs {
*/
@FluentSetter
public SerializerSessionArgs uriContext(UriContext value) {
- property(SERIALIZER_uriContext, value);
+ uriContext = value;
return this;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
index f17748a..95ccac1 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerWriter.java
@@ -189,8 +189,8 @@ public class SerializerWriter extends Writer {
* {@link URI} objects, or any other type that returns a URI via it's
<c>toString()</c> method.
*
* <p>
- * The URI is resolved based on the {@link
Serializer#SERIALIZER_uriRelativity} and
- * {@link Serializer#SERIALIZER_uriResolution} settings and the {@link
UriContext} that's part of the
+ * The URI is resolved based on the {@link
SerializerBuilder#uriRelativity(UriRelativity)} and
+ * {@link SerializerBuilder#uriResolution(UriResolution)} settings and
the {@link UriContext} that's part of the
* session.
*
* @param uri The URI to serialize.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
index 9c43828..6c4bf08 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
@@ -33,7 +33,7 @@ import org.apache.juneau.serializer.*;
@Target({TYPE,METHOD})
@Retention(RUNTIME)
@Inherited
-@ContextApply({SerializerConfigAnnotation.Apply.class,SerializerConfigAnnotation.OutputStreamSerializerApply.class,SerializerConfigAnnotation.WriterSerializerApply.class})
+@ContextApply({SerializerConfigAnnotation.SerializerApply.class,SerializerConfigAnnotation.OutputStreamSerializerApply.class,SerializerConfigAnnotation.WriterSerializerApply.class})
public @interface SerializerConfig {
/**
@@ -92,8 +92,8 @@ public @interface SerializerConfig {
* <p>
* Note the differences between the following settings:
* <ul>
- * <li class='jf'>{@link Serializer#SERIALIZER_addRootType} -
Affects whether <js>'_type'</js> is added to root node.
- * <li class='jf'>{@link Serializer#SERIALIZER_addBeanTypes} -
Affects whether <js>'_type'</js> is added to any nodes.
+ * <li class='jm'>{@link SerializerBuilder#addRootType()} -
Affects whether <js>'_type'</js> is added to root node.
+ * <li class='jm'>{@link SerializerBuilder#addBeanTypes()} -
Affects whether <js>'_type'</js> is added to any nodes.
* </ul>
*
* <ul class='notes'>
@@ -108,7 +108,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_addBeanTypes}
+ * <li class='jm'>{@link SerializerBuilder#addBeanTypes()}
* </ul>
*/
String addBeanTypes() default "";
@@ -127,8 +127,8 @@ public @interface SerializerConfig {
* <p>
* Note the differences between the following settings:
* <ul>
- * <li class='jf'>{@link Serializer#SERIALIZER_addRootType} -
Affects whether <js>'_type'</js> is added to root node.
- * <li class='jf'>{@link Serializer#SERIALIZER_addBeanTypes} -
Affects whether <js>'_type'</js> is added to any nodes.
+ * <li class='jm'>{@link SerializerBuilder#addRootType()} -
Affects whether <js>'_type'</js> is added to root node.
+ * <li class='jm'>{@link SerializerBuilder#addBeanTypes()} -
Affects whether <js>'_type'</js> is added to any nodes.
* </ul>
*
* <ul class='notes'>
@@ -143,7 +143,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_addRootType}
+ * <li class='jm'>{@link SerializerBuilder#addRootType()}
* </ul>
*/
String addRootType() default "";
@@ -173,7 +173,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_keepNullProperties}
+ * <li class='jm'>{@link SerializerBuilder#keepNullProperties()}
* </ul>
*/
String keepNullProperties() default "";
@@ -185,7 +185,7 @@ public @interface SerializerConfig {
* Class used to listen for errors and warnings that occur during
serialization.
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_listener}
+ * <li class='jm'>{@link SerializerBuilder#listener(Class)}
* </ul>
*/
Class<? extends SerializerListener> listener() default
SerializerListener.Null.class;
@@ -211,7 +211,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_sortCollections}
+ * <li class='jm'>{@link SerializerBuilder#sortCollections()}
* </ul>
*/
String sortCollections() default "";
@@ -237,7 +237,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_sortMaps}
+ * <li class='jm'>{@link SerializerBuilder#sortMaps()}
* </ul>
*/
String sortMaps() default "";
@@ -269,7 +269,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link
Serializer#SERIALIZER_trimEmptyCollections}
+ * <li class='jm'>{@link SerializerBuilder#trimEmptyCollections()}
* </ul>
*/
String trimEmptyCollections() default "";
@@ -299,7 +299,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyMaps}
+ * <li class='jm'>{@link SerializerBuilder#trimEmptyMaps()}
* </ul>
*/
String trimEmptyMaps() default "";
@@ -322,7 +322,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_trimStrings}
+ * <li class='jm'>{@link SerializerBuilder#trimStrings()}
* </ul>
*/
String trimStrings() default "";
@@ -342,7 +342,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_uriContext}
+ * <li class='jm'>{@link SerializerBuilder#uriContext(UriContext)}
* </ul>
*/
String uriContext() default "";
@@ -370,7 +370,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_uriRelativity}
+ * <li class='jm'>{@link
SerializerBuilder#uriRelativity(UriRelativity)}
* <li class='link'>{@doc MarshallingUris}
* </ul>
*/
@@ -400,7 +400,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_uriResolution}
+ * <li class='jm'>{@link
SerializerBuilder#uriResolution(UriResolution)}
* <li class='link'>{@doc MarshallingUris}
* </ul>
*/
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
index 3ad79a4..b62ab47 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
@@ -13,7 +13,6 @@
package org.apache.juneau.serializer.annotation;
import static org.apache.juneau.BeanTraverseContext.*;
-import static org.apache.juneau.serializer.OutputStreamSerializer.*;
import org.apache.juneau.*;
import org.apache.juneau.reflect.*;
@@ -26,35 +25,35 @@ import org.apache.juneau.svl.*;
public class SerializerConfigAnnotation {
/**
- * Applies {@link SerializerConfig} annotations to a {@link
ContextPropertiesBuilder}.
+ * Applies {@link SerializerConfig} annotations to a {@link
SerializerBuilder}.
*/
- public static class Apply extends
AnnotationApplier<SerializerConfig,ContextPropertiesBuilder> {
+ public static class SerializerApply extends
AnnotationApplier<SerializerConfig,SerializerBuilder> {
/**
* Constructor.
*
* @param vr The resolver for resolving values in annotations.
*/
- public Apply(VarResolverSession vr) {
- super(SerializerConfig.class,
ContextPropertiesBuilder.class, vr);
+ public SerializerApply(VarResolverSession vr) {
+ super(SerializerConfig.class, SerializerBuilder.class,
vr);
}
@Override
- public void apply(AnnotationInfo<SerializerConfig> ai,
ContextPropertiesBuilder b) {
+ public void apply(AnnotationInfo<SerializerConfig> ai,
SerializerBuilder b) {
SerializerConfig a = ai.getAnnotation();
- bool(a.addBeanTypes()).ifPresent(x ->
b.set(SERIALIZER_addBeanTypes, x));
- bool(a.addRootType()).ifPresent(x ->
b.set(SERIALIZER_addRootType, x));
- bool(a.keepNullProperties()).ifPresent(x ->
b.set(SERIALIZER_keepNullProperties, x));
- type(a.listener()).ifPresent(x ->
b.set(SERIALIZER_listener, x));
- bool(a.sortCollections()).ifPresent(x ->
b.set(SERIALIZER_sortCollections, x));
- bool(a.sortMaps()).ifPresent(x ->
b.set(SERIALIZER_sortMaps, x));
- bool(a.trimEmptyCollections()).ifPresent(x ->
b.set(SERIALIZER_trimEmptyCollections, x));
- bool(a.trimEmptyMaps()).ifPresent(x ->
b.set(SERIALIZER_trimEmptyMaps, x));
- bool(a.trimStrings()).ifPresent(x ->
b.set(SERIALIZER_trimStrings, x));
- string(a.uriContext()).ifPresent(x ->
b.set(SERIALIZER_uriContext, x));
- string(a.uriRelativity()).ifPresent(x ->
b.set(SERIALIZER_uriRelativity, x));
- string(a.uriResolution()).ifPresent(x ->
b.set(SERIALIZER_uriResolution, x));
+ bool(a.addBeanTypes()).ifPresent(x ->
b.addBeanTypes(x));
+ bool(a.addRootType()).ifPresent(x -> b.addRootType(x));
+ bool(a.keepNullProperties()).ifPresent(x ->
b.keepNullProperties(x));
+ type(a.listener()).ifPresent(x -> b.listener(x));
+ bool(a.sortCollections()).ifPresent(x ->
b.sortCollections(x));
+ bool(a.sortMaps()).ifPresent(x -> b.sortMaps(x));
+ bool(a.trimEmptyCollections()).ifPresent(x ->
b.trimEmptyCollections(x));
+ bool(a.trimEmptyMaps()).ifPresent(x ->
b.trimEmptyMaps(x));
+ bool(a.trimStrings()).ifPresent(x -> b.trimStrings(x));
+ string(a.uriContext()).map(UriContext::of).ifPresent(x
-> b.uriContext(x));
+
string(a.uriRelativity()).map(UriRelativity::valueOf).ifPresent(x ->
b.uriRelativity(x));
+
string(a.uriResolution()).map(UriResolution::valueOf).ifPresent(x ->
b.uriResolution(x));
bool(a.detectRecursions()).ifPresent(x ->
b.set(BEANTRAVERSE_detectRecursions, x));
bool(a.ignoreRecursions()).ifPresent(x ->
b.set(BEANTRAVERSE_ignoreRecursions, x));
integer(a.initialDepth(), "initialDepth").ifPresent(x
-> b.set(BEANTRAVERSE_initialDepth, x));
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfig.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfig.java
index be6cfac..1632ffa 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfig.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfig.java
@@ -113,7 +113,7 @@ public @interface UonConfig {
* through reflection.
*
* <p>
- * When present, this value overrides the {@link
Serializer#SERIALIZER_addBeanTypes} setting and is
+ * When present, this value overrides the {@link
SerializerBuilder#addBeanTypes()} setting and is
* provided to customize the behavior of specific serializers in a
{@link SerializerGroup}.
*
* <ul class='notes'>
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java
index 3a78dcc..f077125 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java
@@ -157,7 +157,7 @@ public @interface XmlConfig {
* through reflection.
*
* <p>
- * When present, this value overrides the {@link
Serializer#SERIALIZER_addBeanTypes} setting and is
+ * When present, this value overrides the {@link
SerializerBuilder#addBeanTypes()} setting and is
* provided to customize the behavior of specific serializers in a
{@link SerializerGroup}.
*
* <ul class='notes'>
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index dbeb990..6e460d8 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -3703,7 +3703,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_addBeanTypes}
+ * <li class='jm'>{@link SerializerBuilder#addBeanTypes()}
* </ul>
*
* @return This object (for method chaining).
@@ -3757,7 +3757,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_addRootType}
+ * <li class='jm'>{@link SerializerBuilder#addRootType()}
* </ul>
*
* @return This object (for method chaining).
@@ -3799,7 +3799,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_keepNullProperties}
+ * <li class='jm'>{@link SerializerBuilder#keepNullProperties()}
* </ul>
*
* @return This object (for method chaining).
@@ -3838,7 +3838,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_sortCollections}
+ * <li class='jm'>{@link SerializerBuilder#sortCollections()}
* </ul>
*
* @return This object (for method chaining).
@@ -3877,7 +3877,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_sortMaps}
+ * <li class='jm'>{@link SerializerBuilder#sortMaps()}
* </ul>
*
* @return This object (for method chaining).
@@ -3923,7 +3923,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link
Serializer#SERIALIZER_trimEmptyCollections}
+ * <li class='jm'>{@link SerializerBuilder#trimEmptyCollections()}
* </ul>
*
* @return This object (for method chaining).
@@ -3968,7 +3968,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyMaps}
+ * <li class='jm'>{@link SerializerBuilder#trimEmptyMaps()}
* </ul>
*
* @return This object (for method chaining).
@@ -4004,7 +4004,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_trimStrings}
+ * <li class='jm'>{@link SerializerBuilder#trimStrings()}
* </ul>
*
* @return This object (for method chaining).
@@ -4051,7 +4051,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* </p>
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_uriContext}
+ * <li class='jm'>{@link SerializerBuilder#uriContext(UriContext)}
* <li class='link'>{@doc MarshallingUris}
* </ul>
*
@@ -4088,7 +4088,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* See {@link #uriContext(UriContext)} for examples.
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_uriRelativity}
+ * <li class='jm'>{@link
SerializerBuilder#uriRelativity(UriRelativity)}
* <li class='link'>{@doc MarshallingUris}
* </ul>
*
@@ -4129,7 +4129,7 @@ public class RestClientBuilder extends
BeanContextableBuilder {
* See {@link #uriContext(UriContext)} for examples.
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_uriResolution}
+ * <li class='jm'>{@link
SerializerBuilder#uriResolution(UriResolution)}
* <li class='link'>{@doc MarshallingUris}
* </ul>
*
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index ed438f2..4955720 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -19,7 +19,6 @@ import static org.apache.juneau.internal.ObjectUtils.*;
import static org.apache.juneau.internal.StringUtils.*;
import static org.apache.juneau.rest.HttpRuntimeException.*;
import static org.apache.juneau.rest.logging.RestLoggingDetail.*;
-import static org.apache.juneau.serializer.Serializer.*;
import static java.util.Arrays.*;
import static java.util.Optional.*;
import static java.util.logging.Level.*;
@@ -5687,7 +5686,7 @@ public class RestContextBuilder extends ContextBuilder
implements ServletConfig
* Specifies the serializer listener class to use for listening to
non-fatal serialization errors.
*
* <ul class='seealso'>
- * <li class='jf'>{@link Serializer#SERIALIZER_listener}
+ * <li class='jm'>{@link SerializerBuilder#listener(Class)}
* </ul>
*
* @param value The new value for this setting.
@@ -5696,7 +5695,7 @@ public class RestContextBuilder extends ContextBuilder
implements ServletConfig
@FluentSetter
public RestContextBuilder serializerListener(Class<? extends
SerializerListener> value) {
if (value != SerializerListener.Null.class)
- set(SERIALIZER_listener, value);
+ serializers.forEach(x -> x.listener(value));
return this;
}
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
b/juneau-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
index 90569fc..5bb27ef 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
@@ -12,7 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau;
-import static org.apache.juneau.serializer.Serializer.*;
import java.util.*;
import org.apache.juneau.annotation.*;
@@ -60,7 +59,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXmlT("<rdf:RDF>\n<rdf:Description>\n<jp:a
rdf:parseType='Resource'>\n<jp:t>BwT</jp:t>\n<jp:f>1</jp:f>\n</jp:a>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n <rdf:Description>\n
<jp:a rdf:parseType='Resource'>\n <jp:_type>BwT</jp:_type>\n
<jp:f>1</jp:f>\n </jp:a>\n </rdf:Description>\n</rdf:RDF>\n")
.beanContext(x -> x.beanDictionary(T0.class))
- .properties(OMap.of(SERIALIZER_addBeanTypes,
true))
+ .apply(SerializerBuilder.class, x ->
x.addBeanTypes())
},
{ /* 1 */
new ComboInput<>(
@@ -90,7 +89,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXmlT("<rdf:RDF>\n<rdf:Description>\n<jp:t>BwT</jp:t>\n<jp:f>1</jp:f>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n <rdf:Description>\n
<jp:_type>BwT</jp:_type>\n <jp:f>1</jp:f>\n
</rdf:Description>\n</rdf:RDF>\n")
.beanContext(x -> x.beanDictionary(T0.class))
- .properties(OMap.of(SERIALIZER_addRootType,
true))
+ .apply(SerializerBuilder.class, x ->
x.addRootType())
},
{ /* 2 */
new ComboInput<>(
@@ -119,7 +118,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXml("<rdf:RDF>\n<rdf:Seq>\n<rdf:li>a</rdf:li>\n<rdf:li>b</rdf:li>\n<rdf:li>c</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n")
.rdfXmlT("<rdf:RDF>\n<rdf:Seq>\n<rdf:li>a</rdf:li>\n<rdf:li>b</rdf:li>\n<rdf:li>c</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n <rdf:Seq>\n
<rdf:li>a</rdf:li>\n <rdf:li>b</rdf:li>\n <rdf:li>c</rdf:li>\n
</rdf:Seq>\n</rdf:RDF>\n")
- .properties(OMap.of(SERIALIZER_sortCollections,
true))
+ .apply(SerializerBuilder.class, x ->
x.sortCollections())
},
{ /* 3 */
new ComboInput<>(
@@ -148,7 +147,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXml("<rdf:RDF>\n<rdf:Seq>\n<rdf:li>a</rdf:li>\n<rdf:li>b</rdf:li>\n<rdf:li>c</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n")
.rdfXmlT("<rdf:RDF>\n<rdf:Seq>\n<rdf:li>a</rdf:li>\n<rdf:li>b</rdf:li>\n<rdf:li>c</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n <rdf:Seq>\n
<rdf:li>a</rdf:li>\n <rdf:li>b</rdf:li>\n <rdf:li>c</rdf:li>\n
</rdf:Seq>\n</rdf:RDF>\n")
- .properties(OMap.of(SERIALIZER_sortCollections,
true))
+ .apply(SerializerBuilder.class, x ->
x.sortCollections())
},
{ /* 4 */
new ComboInput<>(
@@ -177,7 +176,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXml("<rdf:RDF>\n<rdf:Description>\n<jp:a>1</jp:a>\n<jp:b>2</jp:b>\n<jp:c>3</jp:c>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlT("<rdf:RDF>\n<rdf:Description>\n<jp:a>1</jp:a>\n<jp:b>2</jp:b>\n<jp:c>3</jp:c>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n <rdf:Description>\n
<jp:a>1</jp:a>\n <jp:b>2</jp:b>\n <jp:c>3</jp:c>\n
</rdf:Description>\n</rdf:RDF>\n")
- .properties(OMap.of(SERIALIZER_sortMaps, true))
+ .apply(SerializerBuilder.class, x ->
x.sortMaps())
},
{ /* 5 */
new ComboInput<>(
@@ -206,7 +205,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXml("<rdf:RDF>\n</rdf:RDF>\n")
.rdfXmlT("<rdf:RDF>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n</rdf:RDF>\n")
-
.properties(OMap.of(SERIALIZER_trimEmptyCollections, true))
+ .apply(SerializerBuilder.class, x ->
x.trimEmptyCollections())
},
{ /* 6 */
new ComboInput<>(
@@ -235,7 +234,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXml("<rdf:RDF>\n</rdf:RDF>\n")
.rdfXmlT("<rdf:RDF>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n</rdf:RDF>\n")
- .properties(OMap.of(SERIALIZER_trimEmptyMaps,
true))
+ .apply(SerializerBuilder.class, x ->
x.trimEmptyMaps())
},
{ /* 7 */
new ComboInput<>(
@@ -264,7 +263,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXml("<rdf:RDF>\n<rdf:Description>\n<jp:f
rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlT("<rdf:RDF>\n<rdf:Description>\n<jp:f
rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n <rdf:Description>\n
<jp:f rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/>\n
</rdf:Description>\n</rdf:RDF>\n")
-
.properties(OMap.of(SERIALIZER_keepNullProperties, true))
+ .apply(SerializerBuilder.class, x ->
x.keepNullProperties())
},
{ /* 8 */
new ComboInput<>(
@@ -293,7 +292,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXml("<rdf:RDF>\n<rdf:Description>\n<jp:f>foo</jp:f>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlT("<rdf:RDF>\n<rdf:Description>\n<jp:f>foo</jp:f>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n <rdf:Description>\n
<jp:f>foo</jp:f>\n </rdf:Description>\n</rdf:RDF>\n")
- .properties(OMap.of(SERIALIZER_trimStrings,
true))
+ .apply(SerializerBuilder.class, x ->
x.trimStrings())
},
{ /* 9 */
new ComboInput<>(
@@ -322,7 +321,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXml("<rdf:RDF>\n<rdf:Description>\n<jp:f
rdf:resource='https://localhost:80/context/resource/foo'/>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlT("<rdf:RDF>\n<rdf:Description>\n<jp:f
rdf:resource='https://localhost:80/context/resource/foo'/>\n</rdf:Description>\n</rdf:RDF>\n")
.rdfXmlR("<rdf:RDF>\n <rdf:Description>\n
<jp:f rdf:resource='https://localhost:80/context/resource/foo'/>\n
</rdf:Description>\n</rdf:RDF>\n")
- .properties(OMap.of(SERIALIZER_uriContext,
UriContext.of("https://localhost:80", "/context", "/resource", "/path"),
SERIALIZER_uriRelativity, UriRelativity.PATH_INFO, SERIALIZER_uriResolution,
UriResolution.ABSOLUTE))
+ .apply(SerializerBuilder.class, x ->
x.uriContext(UriContext.of("https://localhost:80", "/context", "/resource",
"/path")).uriRelativity(UriRelativity.PATH_INFO).uriResolution(UriResolution.ABSOLUTE))
.convert(x -> new T9())
.skipTest(x -> x.contains("parseRdf") ||
x.contains("verifyRdf"))
},
@@ -384,7 +383,7 @@ public class SerializerPropertiesComboTest extends
ComboRoundTripTest {
.rdfXmlR("<rdf:RDF>\n <rdf:Description>\n
<jp:_type>T11</jp:_type>\n <jp:f>\n <rdf:Seq>\n <rdf:li
rdf:parseType='Resource'>\n <jp:f>\n <rdf:Seq>\n
<rdf:li>_x0020_foo_x0020_</rdf:li>\n </rdf:Seq>\n
</jp:f>\n </rdf:li>\n </rdf:Seq>\n </jp:f>\n
</rdf:Description>\n</rdf:RDF>\n")
.apply(XmlSerializerBuilder.class, x ->
x.addNamespaceUrisToRoot())
.apply(WriterSerializerBuilder.class, x ->
x.quoteCharOverride('|'))
- .properties(OMap.of(SERIALIZER_addBeanTypes,
true, SERIALIZER_addRootType, true))
+ .apply(SerializerBuilder.class, x ->
x.addBeanTypes().addRootType())
.skipTest(x -> x.startsWith("parse") ||
x.startsWith("verify"))
},
});