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 <james.bog...@salesforce.com> 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")) }, });