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 92d656d  Code cleanup.
92d656d is described below

commit 92d656d07929585f5b6a75dee2d81e6452af50d4
Author: JamesBognar <james.bog...@salesforce.com>
AuthorDate: Fri Jan 15 19:24:17 2021 -0500

    Code cleanup.
---
 .../jena/annotation/RdfConfigAnnotation.java       | 104 ++++++-----------
 .../main/java/org/apache/juneau/ConfigApply.java   |  17 +--
 .../juneau/annotation/BeanConfigAnnotation.java    | 127 ++++++++-------------
 .../html/annotation/HtmlConfigAnnotation.java      |  19 ++-
 .../html/annotation/HtmlDocConfigAnnotation.java   |  49 +++-----
 .../json/annotation/JsonConfigAnnotation.java      |  12 +-
 .../annotation/JsonSchemaConfigAnnotation.java     |  22 ++--
 .../annotation/MsgPackConfigAnnotation.java        |   3 +-
 .../oapi/annotation/OpenApiConfigAnnotation.java   |   6 +-
 .../parser/annotation/ParserConfigAnnotation.java  |  28 ++---
 .../annotation/SerializerConfigAnnotation.java     |  59 ++++------
 .../soap/annotation/SoapXmlConfigAnnotation.java   |   3 +-
 .../juneau/uon/annotation/UonConfigAnnotation.java |  15 +--
 .../juneau/xml/annotation/XmlConfigAnnotation.java |  33 ++----
 .../juneau/rest/annotation/RestAnnotation.java     |  46 +-------
 .../rest/annotation/RestMethodAnnotation.java      |  40 ++-----
 16 files changed, 183 insertions(+), 400 deletions(-)

diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
index 8b3e888..ecd802a 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigAnnotation.java
@@ -43,76 +43,40 @@ public class RdfConfigAnnotation {
                @Override
                public void apply(AnnotationInfo<RdfConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        RdfConfig a = ai.getAnnotation();
-                       if (! a.language().isEmpty())
-                               psb.set(RDF_language, string(a.language()));
-                       if (! a.juneauNs().isEmpty())
-                               psb.set(RDF_juneauNs, string(a.juneauNs()));
-                       if (! a.juneauBpNs().isEmpty())
-                               psb.set(RDF_juneauBpNs, string(a.juneauBpNs()));
-                       if (! a.disableUseXmlNamespaces().isEmpty())
-                               psb.set(RDF_disableUseXmlNamespaces, 
bool(a.disableUseXmlNamespaces()));
-                       if (! a.arp_iriRules().isEmpty())
-                               psb.set(RDF_arp_iriRules, 
string(a.arp_iriRules()));
-                       if (! a.arp_errorMode().isEmpty())
-                               psb.set(RDF_arp_errorMode, 
string(a.arp_errorMode()));
-                       if (! a.arp_embedding().isEmpty())
-                               psb.set(RDF_arp_embedding, 
bool(a.arp_embedding()));
-                       if (! a.rdfxml_xmlBase().isEmpty())
-                               psb.set(RDF_rdfxml_xmlBase, 
string(a.rdfxml_xmlBase()));
-                       if (! a.rdfxml_longId().isEmpty())
-                               psb.set(RDF_rdfxml_longId, 
bool(a.rdfxml_longId()));
-                       if (! a.rdfxml_allowBadUris().isEmpty())
-                               psb.set(RDF_rdfxml_allowBadUris, 
bool(a.rdfxml_allowBadUris()));
-                       if (! a.rdfxml_relativeUris().isEmpty())
-                               psb.set(RDF_rdfxml_relativeUris, 
string(a.rdfxml_relativeUris()));
-                       if (! a.rdfxml_showXmlDeclaration().isEmpty())
-                               psb.set(RDF_rdfxml_showXmlDeclaration, 
string(a.rdfxml_showXmlDeclaration()));
-                       if (! 
a.rdfxml_disableShowDoctypeDeclaration().isEmpty())
-                               
psb.set(RDF_rdfxml_disableShowDoctypeDeclaration, 
bool(a.rdfxml_disableShowDoctypeDeclaration()));
-                       if (! a.rdfxml_tab().isEmpty())
-                               psb.set(RDF_rdfxml_tab, integer(a.rdfxml_tab(), 
"rdfxml_tab"));
-                       if (! a.rdfxml_attributeQuoteChar().isEmpty())
-                               psb.set(RDF_rdfxml_attributeQuoteChar, 
string(a.rdfxml_attributeQuoteChar()));
-                       if (! a.rdfxml_blockRules().isEmpty())
-                               psb.set(RDF_rdfxml_blockRules, 
string(a.rdfxml_blockRules()));
-                       if (! a.n3_minGap().isEmpty())
-                               psb.set(RDF_n3_minGap, integer(a.n3_minGap(), 
"n3_minGap"));
-                       if (! a.n3_disableObjectLists().isEmpty())
-                               psb.set(RDF_n3_disableObjectLists, 
bool(a.n3_disableObjectLists()));
-                       if (! a.n3_subjectColumn().isEmpty())
-                               psb.set(RDF_n3_subjectColumn, 
integer(a.n3_subjectColumn(), "n3_subjectColumn"));
-                       if (! a.n3_propertyColumn().isEmpty())
-                               psb.set(RDF_n3_propertyColumn, 
integer(a.n3_propertyColumn(), "n3_propertyColumn"));
-                       if (! a.n3_indentProperty().isEmpty())
-                               psb.set(RDF_n3_indentProperty, 
integer(a.n3_indentProperty(), "n3_indentProperty"));
-                       if (! a.n3_widePropertyLen().isEmpty())
-                               psb.set(RDF_n3_widePropertyLen, 
integer(a.n3_widePropertyLen(), "n3_widePropertyLen"));
-                       if (! a.n3_disableAbbrevBaseUri().isEmpty())
-                               psb.set(RDF_n3_disableAbbrevBaseUri, 
bool(a.n3_disableAbbrevBaseUri()));
-                       if (! a.n3_disableUsePropertySymbols().isEmpty())
-                               psb.set(RDF_n3_disableUsePropertySymbols, 
bool(a.n3_disableUsePropertySymbols()));
-                       if (! a.n3_disableUseTripleQuotedStrings().isEmpty())
-                               psb.set(RDF_n3_disableUseTripleQuotedStrings, 
bool(a.n3_disableUseTripleQuotedStrings()));
-                       if (! a.n3_disableUseDoubles().isEmpty())
-                               psb.set(RDF_n3_disableUseDoubles, 
bool(a.n3_disableUseDoubles()));
-                       if (! a.collectionFormat().isEmpty())
-                               psb.set(RDF_collectionFormat, 
string(a.collectionFormat()));
-                       if (! a.looseCollections().isEmpty())
-                               psb.set(RDF_looseCollections, 
bool(a.looseCollections()));
-
-                       if (! a.addBeanTypes().isEmpty())
-                               psb.set(RDF_addBeanTypes, 
bool(a.addBeanTypes()));
-                       if (! a.addLiteralTypes().isEmpty())
-                               psb.set(RDF_addLiteralTypes, 
bool(a.addLiteralTypes()));
-                       if (! a.addRootProperty().isEmpty())
-                               psb.set(RDF_addRootProperty, 
bool(a.addRootProperty()));
-                       if (! a.disableAutoDetectNamespaces().isEmpty())
-                               psb.set(RDF_disableAutoDetectNamespaces, 
bool(a.disableAutoDetectNamespaces()));
-                       if (a.namespaces().length > 0)
-                               psb.set(RDF_namespaces, 
stringList(a.namespaces()));
-
-                       if (! a.trimWhitespace().isEmpty())
-                               psb.set(RDF_trimWhitespace, 
bool(a.trimWhitespace()));
+                       psb.setIfNotEmpty(RDF_language, string(a.language()));
+                       psb.setIfNotEmpty(RDF_juneauNs, string(a.juneauNs()));
+                       psb.setIfNotEmpty(RDF_juneauBpNs, 
string(a.juneauBpNs()));
+                       psb.setIfNotEmpty(RDF_disableUseXmlNamespaces, 
bool(a.disableUseXmlNamespaces()));
+                       psb.setIfNotEmpty(RDF_arp_iriRules, 
string(a.arp_iriRules()));
+                       psb.setIfNotEmpty(RDF_arp_errorMode, 
string(a.arp_errorMode()));
+                       psb.setIfNotEmpty(RDF_arp_embedding, 
bool(a.arp_embedding()));
+                       psb.setIfNotEmpty(RDF_rdfxml_xmlBase, 
string(a.rdfxml_xmlBase()));
+                       psb.setIfNotEmpty(RDF_rdfxml_longId, 
bool(a.rdfxml_longId()));
+                       psb.setIfNotEmpty(RDF_rdfxml_allowBadUris, 
bool(a.rdfxml_allowBadUris()));
+                       psb.setIfNotEmpty(RDF_rdfxml_relativeUris, 
string(a.rdfxml_relativeUris()));
+                       psb.setIfNotEmpty(RDF_rdfxml_showXmlDeclaration, 
string(a.rdfxml_showXmlDeclaration()));
+                       
psb.setIfNotEmpty(RDF_rdfxml_disableShowDoctypeDeclaration, 
bool(a.rdfxml_disableShowDoctypeDeclaration()));
+                       psb.setIfNotEmpty(RDF_rdfxml_tab, 
integer(a.rdfxml_tab(), "rdfxml_tab"));
+                       psb.setIfNotEmpty(RDF_rdfxml_attributeQuoteChar, 
string(a.rdfxml_attributeQuoteChar()));
+                       psb.setIfNotEmpty(RDF_rdfxml_blockRules, 
string(a.rdfxml_blockRules()));
+                       psb.setIfNotEmpty(RDF_n3_minGap, integer(a.n3_minGap(), 
"n3_minGap"));
+                       psb.setIfNotEmpty(RDF_n3_disableObjectLists, 
bool(a.n3_disableObjectLists()));
+                       psb.setIfNotEmpty(RDF_n3_subjectColumn, 
integer(a.n3_subjectColumn(), "n3_subjectColumn"));
+                       psb.setIfNotEmpty(RDF_n3_propertyColumn, 
integer(a.n3_propertyColumn(), "n3_propertyColumn"));
+                       psb.setIfNotEmpty(RDF_n3_indentProperty, 
integer(a.n3_indentProperty(), "n3_indentProperty"));
+                       psb.setIfNotEmpty(RDF_n3_widePropertyLen, 
integer(a.n3_widePropertyLen(), "n3_widePropertyLen"));
+                       psb.setIfNotEmpty(RDF_n3_disableAbbrevBaseUri, 
bool(a.n3_disableAbbrevBaseUri()));
+                       psb.setIfNotEmpty(RDF_n3_disableUsePropertySymbols, 
bool(a.n3_disableUsePropertySymbols()));
+                       psb.setIfNotEmpty(RDF_n3_disableUseTripleQuotedStrings, 
bool(a.n3_disableUseTripleQuotedStrings()));
+                       psb.setIfNotEmpty(RDF_n3_disableUseDoubles, 
bool(a.n3_disableUseDoubles()));
+                       psb.setIfNotEmpty(RDF_collectionFormat, 
string(a.collectionFormat()));
+                       psb.setIfNotEmpty(RDF_looseCollections, 
bool(a.looseCollections()));
+                       psb.setIfNotEmpty(RDF_addBeanTypes, 
bool(a.addBeanTypes()));
+                       psb.setIfNotEmpty(RDF_addLiteralTypes, 
bool(a.addLiteralTypes()));
+                       psb.setIfNotEmpty(RDF_addRootProperty, 
bool(a.addRootProperty()));
+                       psb.setIfNotEmpty(RDF_disableAutoDetectNamespaces, 
bool(a.disableAutoDetectNamespaces()));
+                       psb.setIfNotEmpty(RDF_namespaces, 
stringList(a.namespaces()));
+                       psb.setIfNotEmpty(RDF_trimWhitespace, 
bool(a.trimWhitespace()));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
index 4badf6c..ea395e9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
@@ -62,7 +62,8 @@ public abstract class ConfigApply<T extends Annotation> {
         * @return The resolved string.
         */
        protected String string(String in) {
-               return vr.resolve(in);
+               in = vr.resolve(in);
+               return isEmpty(in) ? null : in;
        }
 
        /**
@@ -132,10 +133,8 @@ public abstract class ConfigApply<T extends Annotation> {
         * @return The resolved boolean.
         */
        public Boolean bool(String in) {
-               in = vr.resolve(in);
-               if (isEmpty(in))
-                       return null;
-               return Boolean.parseBoolean(in);
+               in = string(in);
+               return in == null ? null : Boolean.parseBoolean(in);
        }
 
        /**
@@ -145,9 +144,10 @@ public abstract class ConfigApply<T extends Annotation> {
         * @param loc The annotation field name.
         * @return The resolved int.
         */
-       protected int integer(String in, String loc) {
+       protected Integer integer(String in, String loc) {
                try {
-                       return Integer.parseInt(vr.resolve(in));
+                       in = string(in);
+                       return in == null ? null : Integer.parseInt(in);
                } catch (NumberFormatException e) {
                        throw new ConfigException("Invalid syntax for integer 
on annotation @{0}({1}): {2}", c.getSimpleName(), loc, in);
                }
@@ -162,7 +162,8 @@ public abstract class ConfigApply<T extends Annotation> {
         */
        protected Visibility visibility(String in, String loc) {
                try {
-                       return Visibility.valueOf(vr.resolve(in));
+                       in = string(in);
+                       return in == null ? null : Visibility.valueOf(in);
                } catch (IllegalArgumentException e) {
                        throw new ConfigException("Invalid syntax for 
visibility on annotation @{0}({1}): {2}", c.getSimpleName(), loc, in);
                }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
index 01b9a63..cdb2d27 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
@@ -14,6 +14,7 @@ package org.apache.juneau.annotation;
 
 import static org.apache.juneau.BeanContext.*;
 import static org.apache.juneau.BeanTraverseContext.*;
+import static java.util.Arrays.*;
 
 import java.util.*;
 
@@ -46,96 +47,60 @@ public class BeanConfigAnnotation {
                public void apply(AnnotationInfo<BeanConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        BeanConfig a = ai.getAnnotation();
 
-                       if (! a.beanClassVisibility().isEmpty())
-                               psb.set(BEAN_beanClassVisibility, 
visibility(a.beanClassVisibility(), "beanClassVisibility"));
-                       if (! a.beanConstructorVisibility().isEmpty())
-                               psb.set(BEAN_beanConstructorVisibility, 
visibility(a.beanConstructorVisibility(), "beanConstructorVisibility"));
-                       if (a.dictionary().length != 0)
-                               psb.prependTo(BEAN_beanDictionary, 
a.dictionary());
-                       if (a.dictionary_replace().length != 0)
-                               psb.set(BEAN_beanDictionary, 
a.dictionary_replace());
-                       if (! a.beanFieldVisibility().isEmpty())
-                               psb.set(BEAN_beanFieldVisibility, 
visibility(a.beanFieldVisibility(), "beanFieldVisibility"));
-                       if (! a.beanMapPutReturnsOldValue().isEmpty())
-                               psb.set(BEAN_beanMapPutReturnsOldValue, 
bool(a.beanMapPutReturnsOldValue()));
-                       if (! a.beanMethodVisibility().isEmpty())
-                               psb.set(BEAN_beanMethodVisibility, 
visibility(a.beanMethodVisibility(), "beanMethodVisibility"));
-                       if (! a.beansRequireDefaultConstructor().isEmpty())
-                               psb.set(BEAN_beansRequireDefaultConstructor, 
bool(a.beansRequireDefaultConstructor()));
-                       if (! a.beansRequireSerializable().isEmpty())
-                               psb.set(BEAN_beansRequireSerializable, 
bool(a.beansRequireSerializable()));
-                       if (! a.beansRequireSettersForGetters().isEmpty())
-                               psb.set(BEAN_beansRequireSettersForGetters, 
bool(a.beansRequireSettersForGetters()));
-                       if (! a.disableBeansRequireSomeProperties().isEmpty())
-                               psb.set(BEAN_disableBeansRequireSomeProperties, 
bool(a.disableBeansRequireSomeProperties()));
-                       if (! a.typePropertyName().isEmpty())
-                               psb.set(BEAN_typePropertyName, 
string(a.typePropertyName()));
-                       if (! a.debug().isEmpty())
-                               psb.set(CONTEXT_debug, bool(a.debug()));
-                       if (! a.findFluentSetters().isEmpty())
-                               psb.set(BEAN_findFluentSetters, 
bool(a.findFluentSetters()));
-                       if (! a.ignoreInvocationExceptionsOnGetters().isEmpty())
-                               
psb.set(BEAN_ignoreInvocationExceptionsOnGetters, 
bool(a.ignoreInvocationExceptionsOnGetters()));
-                       if (! a.ignoreInvocationExceptionsOnSetters().isEmpty())
-                               
psb.set(BEAN_ignoreInvocationExceptionsOnSetters, 
bool(a.ignoreInvocationExceptionsOnSetters()));
-                       if (! a.disableIgnoreMissingSetters().isEmpty())
-                               psb.set(BEAN_disableIgnoreMissingSetters, 
bool(a.disableIgnoreMissingSetters()));
-                       if (! a.disableIgnoreTransientFields().isEmpty())
-                               psb.set(BEAN_disableIgnoreTransientFields, 
bool(a.disableIgnoreTransientFields()));
-                       if (! a.ignoreUnknownBeanProperties().isEmpty())
-                               psb.set(BEAN_ignoreUnknownBeanProperties, 
bool(a.ignoreUnknownBeanProperties()));
-                       if (! 
a.disableIgnoreUnknownNullBeanProperties().isEmpty())
-                               
psb.set(BEAN_disableIgnoreUnknownNullBeanProperties, 
bool(a.disableIgnoreUnknownNullBeanProperties()));
-                       for (Class<?> c : a.interfaces())
-                               psb.prependTo(BEAN_annotations, 
BeanAnnotation.create(c).interfaceClass(c).build());
-                       if (! a.locale().isEmpty())
-                               psb.set(CONTEXT_locale, locale(a.locale()));
-                       if (! a.mediaType().isEmpty())
-                               psb.set(CONTEXT_mediaType, 
mediaType(a.mediaType()));
-                       if (a.notBeanClasses().length != 0)
-                               psb.addTo(BEAN_notBeanClasses, 
a.notBeanClasses());
-                       if (a.notBeanClasses_replace().length != 0)
-                               psb.set(BEAN_notBeanClasses, 
a.notBeanClasses_replace());
-                       if (a.notBeanPackages().length != 0)
-                               psb.addTo(BEAN_notBeanPackages, 
stringList(a.notBeanPackages()));
-                       if (a.notBeanPackages_replace().length != 0)
-                               psb.set(BEAN_notBeanPackages, 
stringList(a.notBeanPackages_replace()));
-                       if (a.propertyNamer() != PropertyNamer.Null.class)
-                               psb.set(BEAN_propertyNamer, a.propertyNamer());
-                       if (! a.sortProperties().isEmpty())
-                               psb.set(BEAN_sortProperties, 
bool(a.sortProperties()));
-                       if (a.swaps().length != 0)
-                               psb.prependTo(BEAN_swaps, a.swaps());
-                       if (a.swaps_replace().length != 0)
-                               psb.set(BEAN_swaps, a.swaps_replace());
-                       if (! a.timeZone().isEmpty())
-                               psb.set(CONTEXT_timeZone, 
timeZone(a.timeZone()));
-                       if (! a.useEnumNames().isEmpty())
-                               psb.set(BEAN_useEnumNames, 
bool(a.useEnumNames()));
-                       if (! a.disableInterfaceProxies().isEmpty())
-                               psb.set(BEAN_disableInterfaceProxies, 
bool(a.disableInterfaceProxies()));
-                       if (! a.useJavaBeanIntrospector().isEmpty())
-                               psb.set(BEAN_useJavaBeanIntrospector, 
bool(a.useJavaBeanIntrospector()));
-                       if (! a.detectRecursions().isEmpty())
-                               psb.set(BEANTRAVERSE_detectRecursions, 
bool(a.detectRecursions()));
-                       if (! a.ignoreRecursions().isEmpty())
-                               psb.set(BEANTRAVERSE_ignoreRecursions, 
bool(a.ignoreRecursions()));
-                       if (! a.initialDepth().isEmpty())
-                               psb.set(BEANTRAVERSE_initialDepth, 
integer(a.initialDepth(), "initialDepth"));
-                       if (! a.maxDepth().isEmpty())
-                               psb.set(BEANTRAVERSE_maxDepth, 
integer(a.maxDepth(), "maxDepth"));
+                       psb.setIfNotEmpty(BEAN_beanClassVisibility, 
visibility(a.beanClassVisibility(), "beanClassVisibility"));
+                       psb.setIfNotEmpty(BEAN_beanConstructorVisibility, 
visibility(a.beanConstructorVisibility(), "beanConstructorVisibility"));
+                       psb.prependTo(BEAN_beanDictionary, a.dictionary());
+                       psb.setIfNotEmpty(BEAN_beanDictionary, 
a.dictionary_replace());
+                       psb.setIfNotEmpty(BEAN_beanFieldVisibility, 
visibility(a.beanFieldVisibility(), "beanFieldVisibility"));
+                       psb.setIfNotEmpty(BEAN_beanMapPutReturnsOldValue, 
bool(a.beanMapPutReturnsOldValue()));
+                       psb.setIfNotEmpty(BEAN_beanMethodVisibility, 
visibility(a.beanMethodVisibility(), "beanMethodVisibility"));
+                       psb.setIfNotEmpty(BEAN_beansRequireDefaultConstructor, 
bool(a.beansRequireDefaultConstructor()));
+                       psb.setIfNotEmpty(BEAN_beansRequireSerializable, 
bool(a.beansRequireSerializable()));
+                       psb.setIfNotEmpty(BEAN_beansRequireSettersForGetters, 
bool(a.beansRequireSettersForGetters()));
+                       
psb.setIfNotEmpty(BEAN_disableBeansRequireSomeProperties, 
bool(a.disableBeansRequireSomeProperties()));
+                       psb.setIfNotEmpty(BEAN_typePropertyName, 
string(a.typePropertyName()));
+                       psb.setIfNotEmpty(CONTEXT_debug, bool(a.debug()));
+                       psb.setIfNotEmpty(BEAN_findFluentSetters, 
bool(a.findFluentSetters()));
+                       
psb.setIfNotEmpty(BEAN_ignoreInvocationExceptionsOnGetters, 
bool(a.ignoreInvocationExceptionsOnGetters()));
+                       
psb.setIfNotEmpty(BEAN_ignoreInvocationExceptionsOnSetters, 
bool(a.ignoreInvocationExceptionsOnSetters()));
+                       psb.setIfNotEmpty(BEAN_disableIgnoreMissingSetters, 
bool(a.disableIgnoreMissingSetters()));
+                       psb.setIfNotEmpty(BEAN_disableIgnoreTransientFields, 
bool(a.disableIgnoreTransientFields()));
+                       psb.setIfNotEmpty(BEAN_ignoreUnknownBeanProperties, 
bool(a.ignoreUnknownBeanProperties()));
+                       
psb.setIfNotEmpty(BEAN_disableIgnoreUnknownNullBeanProperties, 
bool(a.disableIgnoreUnknownNullBeanProperties()));
+                       asList(a.interfaces()).stream().map(x -> 
BeanAnnotation.create(x).interfaceClass(x).build()).forEach(x -> 
psb.prependTo(BEAN_annotations, x));
+                       psb.setIfNotEmpty(CONTEXT_locale, locale(a.locale()));
+                       psb.setIfNotEmpty(CONTEXT_mediaType, 
mediaType(a.mediaType()));
+                       psb.setIfNotEmpty(BEAN_notBeanClasses, 
a.notBeanClasses());
+                       psb.setIfNotEmpty(BEAN_notBeanClasses, 
a.notBeanClasses_replace());
+                       psb.addTo(BEAN_notBeanPackages, 
stringList(a.notBeanPackages()));
+                       psb.setIfNotEmpty(BEAN_notBeanPackages, 
stringList(a.notBeanPackages_replace()));
+                       psb.setIf(a.propertyNamer() != 
PropertyNamer.Null.class, BEAN_propertyNamer, a.propertyNamer());
+                       psb.setIfNotEmpty(BEAN_sortProperties, 
bool(a.sortProperties()));
+                       psb.prependTo(BEAN_swaps, a.swaps());
+                       psb.setIfNotEmpty(BEAN_swaps, a.swaps_replace());
+                       psb.setIfNotEmpty(CONTEXT_timeZone, 
timeZone(a.timeZone()));
+                       psb.setIfNotEmpty(BEAN_useEnumNames, 
bool(a.useEnumNames()));
+                       psb.setIfNotEmpty(BEAN_disableInterfaceProxies, 
bool(a.disableInterfaceProxies()));
+                       psb.setIfNotEmpty(BEAN_useJavaBeanIntrospector, 
bool(a.useJavaBeanIntrospector()));
+                       psb.setIfNotEmpty(BEANTRAVERSE_detectRecursions, 
bool(a.detectRecursions()));
+                       psb.setIfNotEmpty(BEANTRAVERSE_ignoreRecursions, 
bool(a.ignoreRecursions()));
+                       psb.setIfNotEmpty(BEANTRAVERSE_initialDepth, 
integer(a.initialDepth(), "initialDepth"));
+                       psb.setIfNotEmpty(BEANTRAVERSE_maxDepth, 
integer(a.maxDepth(), "maxDepth"));
                }
 
                private Locale locale(String in) {
-                       return Locale.forLanguageTag(string(in));
+                       in = string(in);
+                       return in == null ? null : Locale.forLanguageTag(in);
                }
 
                private MediaType mediaType(String in) {
-                       return MediaType.of(string(in));
+                       in = string(in);
+                       return in == null ? null : MediaType.of(in);
                }
 
                private TimeZone timeZone(String in) {
-                       return TimeZone.getTimeZone(string(in));
+                       in = string(in);
+                       return in == null ? null : TimeZone.getTimeZone(in);
                }
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
index 0e22bd1..ed7f0f8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigAnnotation.java
@@ -41,18 +41,13 @@ public class HtmlConfigAnnotation {
                @Override
                public void apply(AnnotationInfo<HtmlConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        HtmlConfig a = ai.getAnnotation();
-                       if (! a.addBeanTypes().isEmpty())
-                               psb.set(HTML_addBeanTypes, 
bool(a.addBeanTypes()));
-                       if (! a.addKeyValueTableHeaders().isEmpty())
-                               psb.set(HTML_addKeyValueTableHeaders, 
bool(a.addKeyValueTableHeaders()));
-                       if (! a.disableDetectLabelParameters().isEmpty())
-                               psb.set(HTML_disableDetectLabelParameters, 
bool(a.disableDetectLabelParameters()));
-                       if (! a.disableDetectLinksInStrings().isEmpty())
-                               psb.set(HTML_disableDetectLinksInStrings, 
bool(a.disableDetectLinksInStrings()));
-                       if (! a.labelParameter().isEmpty())
-                               psb.set(HTML_labelParameter, 
string(a.labelParameter()));
-                       if (! a.uriAnchorText().isEmpty())
-                               psb.set(HTML_uriAnchorText, 
string(a.uriAnchorText()));
+
+                       psb.setIfNotEmpty(HTML_addBeanTypes, 
bool(a.addBeanTypes()));
+                       psb.setIfNotEmpty(HTML_addKeyValueTableHeaders, 
bool(a.addKeyValueTableHeaders()));
+                       psb.setIfNotEmpty(HTML_disableDetectLabelParameters, 
bool(a.disableDetectLabelParameters()));
+                       psb.setIfNotEmpty(HTML_disableDetectLinksInStrings, 
bool(a.disableDetectLinksInStrings()));
+                       psb.setIfNotEmpty(HTML_labelParameter, 
string(a.labelParameter()));
+                       psb.setIfNotEmpty(HTML_uriAnchorText, 
string(a.uriAnchorText()));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
index 5e09173..fabf0a4 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfigAnnotation.java
@@ -14,6 +14,7 @@ package org.apache.juneau.html.annotation;
 
 import static org.apache.juneau.html.HtmlDocSerializer.*;
 import static org.apache.juneau.internal.StringUtils.*;
+import static java.util.Arrays.*;
 
 import java.util.regex.*;
 
@@ -46,39 +47,21 @@ public class HtmlDocConfigAnnotation {
                @Override
                public void apply(AnnotationInfo<HtmlDocConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        HtmlDocConfig a = ai.getAnnotation();
-                       if (a.aside().length > 0)
-                               psb.set(HTMLDOC_aside, resolveList(a.aside(), 
psb.peek(String[].class, HTMLDOC_aside)));
-                       if (! "DEFAULT".equalsIgnoreCase(a.asideFloat()))
-                               psb.set(HTMLDOC_asideFloat, 
a.asideFloat().toUpperCase());
-                       if (a.footer().length > 0)
-                               psb.set(HTMLDOC_footer, resolveList(a.footer(), 
psb.peek(String[].class, HTMLDOC_footer)));
-                       if (a.head().length > 0)
-                               psb.set(HTMLDOC_head, resolveList(a.head(), 
psb.peek(String[].class, HTMLDOC_head)));
-                       if (a.header().length > 0)
-                               psb.set(HTMLDOC_header, resolveList(a.header(), 
psb.peek(String[].class, HTMLDOC_header)));
-                       if (a.nav().length > 0)
-                               psb.set(HTMLDOC_nav, resolveList(a.nav(), 
psb.peek(String[].class, HTMLDOC_nav)));
-                       if (a.navlinks().length > 0)
-                               psb.set(HTMLDOC_navlinks, 
resolveLinks(a.navlinks(), psb.peek(String[].class, HTMLDOC_navlinks)));
-                       if (! a.noResultsMessage().isEmpty())
-                               psb.set(HTMLDOC_noResultsMessage, 
string(a.noResultsMessage()));
-                       if (! a.nowrap().isEmpty())
-                               psb.set(HTMLDOC_nowrap, bool(a.nowrap()));
-                       if (a.script().length > 0)
-                               psb.set(HTMLDOC_script, resolveList(a.script(), 
psb.peek(String[].class, HTMLDOC_script)));
-                       if (a.style().length > 0)
-                               psb.set(HTMLDOC_style, resolveList(a.style(), 
psb.peek(String[].class, HTMLDOC_style)));
-                       if (a.stylesheet().length > 0)
-                               psb.set(HTMLDOC_stylesheet, 
resolveList(a.stylesheet(), psb.peek(String[].class, HTMLDOC_stylesheet)));
-                       if (a.template() != HtmlDocTemplate.Null.class)
-                               psb.set(HTMLDOC_template, a.template());
-                       for (Class<? extends HtmlWidget> w : a.widgets()) {
-                               try {
-                                       psb.prependTo(HTMLDOC_widgets, 
w.newInstance());
-                               } catch (Exception e) {
-                                       e.printStackTrace();
-                               }
-                       }
+
+                       psb.setIf(a.aside().length > 0, HTMLDOC_aside, 
resolveList(a.aside(), psb.peek(String[].class, HTMLDOC_aside)));
+                       psb.setIf(! "DEFAULT".equalsIgnoreCase(a.asideFloat()), 
HTMLDOC_asideFloat, a.asideFloat().toUpperCase());
+                       psb.setIf(a.footer().length > 0, HTMLDOC_footer, 
resolveList(a.footer(), psb.peek(String[].class, HTMLDOC_footer)));
+                       psb.setIf(a.head().length > 0, HTMLDOC_head, 
resolveList(a.head(), psb.peek(String[].class, HTMLDOC_head)));
+                       psb.setIf(a.header().length > 0, HTMLDOC_header, 
resolveList(a.header(), psb.peek(String[].class, HTMLDOC_header)));
+                       psb.setIf(a.nav().length > 0, HTMLDOC_nav, 
resolveList(a.nav(), psb.peek(String[].class, HTMLDOC_nav)));
+                       psb.setIf(a.navlinks().length > 0, HTMLDOC_navlinks, 
resolveLinks(a.navlinks(), psb.peek(String[].class, HTMLDOC_navlinks)));
+                       psb.setIfNotEmpty(HTMLDOC_noResultsMessage, 
string(a.noResultsMessage()));
+                       psb.setIfNotEmpty(HTMLDOC_nowrap, bool(a.nowrap()));
+                       psb.setIf(a.script().length > 0, HTMLDOC_script, 
resolveList(a.script(), psb.peek(String[].class, HTMLDOC_script)));
+                       psb.setIf(a.style().length > 0, HTMLDOC_style, 
resolveList(a.style(), psb.peek(String[].class, HTMLDOC_style)));
+                       psb.setIf(a.stylesheet().length > 0, 
HTMLDOC_stylesheet, resolveList(a.stylesheet(), psb.peek(String[].class, 
HTMLDOC_stylesheet)));
+                       psb.setIf(a.template() != HtmlDocTemplate.Null.class, 
HTMLDOC_template, a.template());
+                       asList(a.widgets()).stream().forEach(x -> 
psb.prependTo(HTMLDOC_widgets, x));
                }
 
                private static final Pattern INDEXED_LINK_PATTERN = 
Pattern.compile("(?s)(\\S*)\\[(\\d+)\\]\\:(.*)");
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
index 11aa5d7..2823ab2 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigAnnotation.java
@@ -42,15 +42,11 @@ public class JsonConfigAnnotation {
                @Override
                public void apply(AnnotationInfo<JsonConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        JsonConfig a = ai.getAnnotation();
-                       if (! a.addBeanTypes().isEmpty())
-                               psb.set(JSON_addBeanTypes, 
bool(a.addBeanTypes()));
-                       if (! a.escapeSolidus().isEmpty())
-                               psb.set(JSON_escapeSolidus, 
bool(a.escapeSolidus()));
-                       if (! a.simpleMode().isEmpty())
-                               psb.set(JSON_simpleMode, bool(a.simpleMode()));
 
-                       if (! a.validateEnd().isEmpty())
-                               psb.set(JSON_validateEnd, 
bool(a.validateEnd()));
+                       psb.setIfNotEmpty(JSON_addBeanTypes, 
bool(a.addBeanTypes()));
+                       psb.setIfNotEmpty(JSON_escapeSolidus, 
bool(a.escapeSolidus()));
+                       psb.setIfNotEmpty(JSON_simpleMode, 
bool(a.simpleMode()));
+                       psb.setIfNotEmpty(JSON_validateEnd, 
bool(a.validateEnd()));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
index bfc51e6..ba88948 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigAnnotation.java
@@ -42,20 +42,14 @@ public class JsonSchemaConfigAnnotation {
                @Override
                public void apply(AnnotationInfo<JsonSchemaConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        JsonSchemaConfig a = ai.getAnnotation();
-                       if (! a.addDescriptionsTo().isEmpty())
-                               psb.set(JSONSCHEMA_addDescriptionsTo, 
string(a.addDescriptionsTo()));
-                       if (! a.addExamplesTo().isEmpty())
-                               psb.set(JSONSCHEMA_addExamplesTo, 
string(a.addExamplesTo()));
-                       if (! a.allowNestedDescriptions().isEmpty())
-                               psb.set(JSONSCHEMA_allowNestedDescriptions, 
bool(a.allowNestedDescriptions()));
-                       if (! a.allowNestedExamples().isEmpty())
-                               psb.set(JSONSCHEMA_allowNestedExamples, 
bool(a.allowNestedExamples()));
-                       if (a.beanDefMapper() != BeanDefMapper.Null.class)
-                               psb.set(JSONSCHEMA_beanDefMapper, 
a.beanDefMapper());
-                       if (! a.ignoreTypes().isEmpty())
-                               psb.set(JSONSCHEMA_ignoreTypes, 
string(a.ignoreTypes()));
-                       if (! a.useBeanDefs().isEmpty())
-                               psb.set(JSONSCHEMA_useBeanDefs, 
bool(a.useBeanDefs()));
+
+                       psb.setIfNotEmpty(JSONSCHEMA_addDescriptionsTo, 
string(a.addDescriptionsTo()));
+                       psb.setIfNotEmpty(JSONSCHEMA_addExamplesTo, 
string(a.addExamplesTo()));
+                       psb.setIfNotEmpty(JSONSCHEMA_allowNestedDescriptions, 
bool(a.allowNestedDescriptions()));
+                       psb.setIfNotEmpty(JSONSCHEMA_allowNestedExamples, 
bool(a.allowNestedExamples()));
+                       psb.setIf(a.beanDefMapper() != 
BeanDefMapper.Null.class, JSONSCHEMA_beanDefMapper, a.beanDefMapper());
+                       psb.setIfNotEmpty(JSONSCHEMA_ignoreTypes, 
string(a.ignoreTypes()));
+                       psb.setIfNotEmpty(JSONSCHEMA_useBeanDefs, 
bool(a.useBeanDefs()));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
index bc54d3c..fb6e9aa 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
@@ -42,8 +42,7 @@ public class MsgPackConfigAnnotation {
                public void apply(AnnotationInfo<MsgPackConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        MsgPackConfig a = ai.getAnnotation();
 
-                       if (! a.addBeanTypes().isEmpty())
-                               psb.set(MSGPACK_addBeanTypes, 
bool(a.addBeanTypes()));
+                       psb.setIfNotEmpty(MSGPACK_addBeanTypes, 
bool(a.addBeanTypes()));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
index bf51a95..c39b5bf 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
@@ -42,10 +42,8 @@ public class OpenApiConfigAnnotation {
                public void apply(AnnotationInfo<OpenApiConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        OpenApiConfig a = ai.getAnnotation();
 
-                       if (! a.format().isEmpty())
-                               psb.set(OAPI_format, string(a.format()));
-                       if (! a.collectionFormat().isEmpty())
-                               psb.set(OAPI_collectionFormat, 
string(a.collectionFormat()));
+                       psb.setIfNotEmpty(OAPI_format, string(a.format()));
+                       psb.setIfNotEmpty(OAPI_collectionFormat, 
string(a.collectionFormat()));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
index b538ac8..0718413 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/annotation/ParserConfigAnnotation.java
@@ -45,26 +45,16 @@ public class ParserConfigAnnotation {
                @Override
                public void apply(AnnotationInfo<ParserConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        ParserConfig a = ai.getAnnotation();
-                       if (! a.autoCloseStreams().isEmpty())
-                               psb.set(PARSER_autoCloseStreams, 
bool(a.autoCloseStreams()));
-                       if (! a.debugOutputLines().isEmpty())
-                               psb.set(PARSER_debugOutputLines, 
integer(a.debugOutputLines(), "debugOutputLines"));
-                       if (a.listener() != ParserListener.Null.class)
-                               psb.set(PARSER_listener, a.listener());
-                       if (! a.strict().isEmpty())
-                               psb.set(PARSER_strict, bool(a.strict()));
-                       if (! a.trimStrings().isEmpty())
-                               psb.set(PARSER_trimStrings, 
bool(a.trimStrings()));
-                       if (! a.unbuffered().isEmpty())
-                               psb.set(PARSER_unbuffered, 
bool(a.unbuffered()));
 
-                       if (! a.binaryFormat().isEmpty())
-                               psb.set(ISPARSER_binaryFormat, 
string(a.binaryFormat()));
-
-                       if (! a.fileCharset().isEmpty())
-                               psb.set(RPARSER_fileCharset, 
charset(a.fileCharset()));
-                       if (! a.streamCharset().isEmpty())
-                               psb.set(RPARSER_streamCharset, 
charset(a.streamCharset()));
+                       psb.setIfNotEmpty(PARSER_autoCloseStreams, 
bool(a.autoCloseStreams()));
+                       psb.setIfNotEmpty(PARSER_debugOutputLines, 
integer(a.debugOutputLines(), "debugOutputLines"));
+                       psb.setIf(a.listener() != ParserListener.Null.class, 
PARSER_listener, a.listener());
+                       psb.setIfNotEmpty(PARSER_strict, bool(a.strict()));
+                       psb.setIfNotEmpty(PARSER_trimStrings, 
bool(a.trimStrings()));
+                       psb.setIfNotEmpty(PARSER_unbuffered, 
bool(a.unbuffered()));
+                       psb.setIfNotEmpty(ISPARSER_binaryFormat, 
string(a.binaryFormat()));
+                       psb.setIfNotEmpty(RPARSER_fileCharset, 
charset(a.fileCharset()));
+                       psb.setIfNotEmpty(RPARSER_streamCharset, 
charset(a.streamCharset()));
                }
 
                private Object charset(String in) {
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 e07961b..b4f2e23 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
@@ -45,44 +45,25 @@ public class SerializerConfigAnnotation {
                @Override
                public void apply(AnnotationInfo<SerializerConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        SerializerConfig a = ai.getAnnotation();
-                       if (! a.addBeanTypes().isEmpty())
-                               psb.set(SERIALIZER_addBeanTypes, 
bool(a.addBeanTypes()));
-                       if (! a.addRootType().isEmpty())
-                               psb.set(SERIALIZER_addRootType, 
bool(a.addRootType()));
-                       if (! a.keepNullProperties().isEmpty())
-                               psb.set(SERIALIZER_keepNullProperties, 
bool(a.keepNullProperties()));
-                       if (a.listener() != SerializerListener.Null.class)
-                               psb.set(SERIALIZER_listener, a.listener());
-                       if (! a.sortCollections().isEmpty())
-                               psb.set(SERIALIZER_sortCollections, 
bool(a.sortCollections()));
-                       if (! a.sortMaps().isEmpty())
-                               psb.set(SERIALIZER_sortMaps, 
bool(a.sortMaps()));
-                       if (! a.trimEmptyCollections().isEmpty())
-                               psb.set(SERIALIZER_trimEmptyCollections, 
bool(a.trimEmptyCollections()));
-                       if (! a.trimEmptyMaps().isEmpty())
-                               psb.set(SERIALIZER_trimEmptyMaps, 
bool(a.trimEmptyMaps()));
-                       if (! a.trimStrings().isEmpty())
-                               psb.set(SERIALIZER_trimStrings, 
bool(a.trimStrings()));
-                       if (! a.uriContext().isEmpty())
-                               psb.set(SERIALIZER_uriContext, 
string(a.uriContext()));
-                       if (! a.uriRelativity().isEmpty())
-                               psb.set(SERIALIZER_uriRelativity, 
string(a.uriRelativity()));
-                       if (! a.uriResolution().isEmpty())
-                               psb.set(SERIALIZER_uriResolution, 
string(a.uriResolution()));
 
-                       if (! a.binaryFormat().isEmpty())
-                               psb.set(OSSERIALIZER_binaryFormat, 
string(a.binaryFormat()));
-
-                       if (! a.fileCharset().isEmpty())
-                               psb.set(WSERIALIZER_fileCharset, 
charset(a.fileCharset()));
-                       if (! a.maxIndent().isEmpty())
-                               psb.set(WSERIALIZER_maxIndent, 
integer(a.maxIndent(), "maxIndent"));
-                       if (! a.quoteChar().isEmpty())
-                               psb.set(WSERIALIZER_quoteChar, 
character(a.quoteChar(), "quoteChar"));
-                       if (! a.streamCharset().isEmpty())
-                               psb.set(WSERIALIZER_streamCharset, 
charset(a.streamCharset()));
-                       if (! a.useWhitespace().isEmpty())
-                               psb.set(WSERIALIZER_useWhitespace, 
bool(a.useWhitespace()));
+                       psb.setIfNotEmpty(SERIALIZER_addBeanTypes, 
bool(a.addBeanTypes()));
+                       psb.setIfNotEmpty(SERIALIZER_addRootType, 
bool(a.addRootType()));
+                       psb.setIfNotEmpty(SERIALIZER_keepNullProperties, 
bool(a.keepNullProperties()));
+                       psb.setIf(a.listener() != 
SerializerListener.Null.class, SERIALIZER_listener, a.listener());
+                       psb.setIfNotEmpty(SERIALIZER_sortCollections, 
bool(a.sortCollections()));
+                       psb.setIfNotEmpty(SERIALIZER_sortMaps, 
bool(a.sortMaps()));
+                       psb.setIfNotEmpty(SERIALIZER_trimEmptyCollections, 
bool(a.trimEmptyCollections()));
+                       psb.setIfNotEmpty(SERIALIZER_trimEmptyMaps, 
bool(a.trimEmptyMaps()));
+                       psb.setIfNotEmpty(SERIALIZER_trimStrings, 
bool(a.trimStrings()));
+                       psb.setIfNotEmpty(SERIALIZER_uriContext, 
string(a.uriContext()));
+                       psb.setIfNotEmpty(SERIALIZER_uriRelativity, 
string(a.uriRelativity()));
+                       psb.setIfNotEmpty(SERIALIZER_uriResolution, 
string(a.uriResolution()));
+                       psb.setIfNotEmpty(OSSERIALIZER_binaryFormat, 
string(a.binaryFormat()));
+                       psb.setIfNotEmpty(WSERIALIZER_fileCharset, 
charset(a.fileCharset()));
+                       psb.setIfNotEmpty(WSERIALIZER_maxIndent, 
integer(a.maxIndent(), "maxIndent"));
+                       psb.setIfNotEmpty(WSERIALIZER_quoteChar, 
character(a.quoteChar(), "quoteChar"));
+                       psb.setIfNotEmpty(WSERIALIZER_streamCharset, 
charset(a.streamCharset()));
+                       psb.setIfNotEmpty(WSERIALIZER_useWhitespace, 
bool(a.useWhitespace()));
                }
 
                private Object charset(String in) {
@@ -92,8 +73,10 @@ public class SerializerConfigAnnotation {
                        return s;
                }
 
-               private char character(String in, String loc) {
+               private Character character(String in, String loc) {
                        String s = string(in);
+                       if (s == null)
+                               return null;
                        if (s.length() != 1)
                                throw new ConfigException("Invalid syntax for 
character on annotation @{0}({1}): {2}", "SerializerConfig", loc, in);
                        return s.charAt(0);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
index d440cec..90473f1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigAnnotation.java
@@ -42,8 +42,7 @@ public class SoapXmlConfigAnnotation {
                public void apply(AnnotationInfo<SoapXmlConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        SoapXmlConfig a = ai.getAnnotation();
 
-                       if (! a.soapAction().isEmpty())
-                               psb.set(SOAPXML_SOAPAction, 
string(a.soapAction()));
+                       psb.setIfNotEmpty(SOAPXML_SOAPAction, 
string(a.soapAction()));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
index 2aaa7d1..f0c0c10 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigAnnotation.java
@@ -42,17 +42,12 @@ public class UonConfigAnnotation {
                @Override
                public void apply(AnnotationInfo<UonConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        UonConfig a = ai.getAnnotation();
-                       if (! a.addBeanTypes().isEmpty())
-                               psb.set(UON_addBeanTypes, 
bool(a.addBeanTypes()));
-                       if (! a.encoding().isEmpty())
-                               psb.set(UON_encoding, bool(a.encoding()));
-                       if (! a.paramFormat().isEmpty())
-                               psb.set(UON_paramFormat, 
string(a.paramFormat()));
 
-                       if (! a.decoding().isEmpty())
-                               psb.set(UON_decoding, bool(a.decoding()));
-                       if (! a.validateEnd().isEmpty())
-                               psb.set(UON_validateEnd, bool(a.validateEnd()));
+                       psb.setIfNotEmpty(UON_addBeanTypes, 
bool(a.addBeanTypes()));
+                       psb.setIfNotEmpty(UON_encoding, bool(a.encoding()));
+                       psb.setIfNotEmpty(UON_paramFormat, 
string(a.paramFormat()));
+                       psb.setIfNotEmpty(UON_decoding, bool(a.decoding()));
+                       psb.setIfNotEmpty(UON_validateEnd, 
bool(a.validateEnd()));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
index 3509d25..e194459 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigAnnotation.java
@@ -43,29 +43,18 @@ public class XmlConfigAnnotation {
                @Override
                public void apply(AnnotationInfo<XmlConfig> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        XmlConfig a = ai.getAnnotation();
-                       if (! a.addBeanTypes().isEmpty())
-                               psb.set(XML_addBeanTypes, 
bool(a.addBeanTypes()));
-                       if (! a.addNamespaceUrisToRoot().isEmpty())
-                               psb.set(XML_addNamespaceUrisToRoot, 
bool(a.addNamespaceUrisToRoot()));
-                       if (! a.disableAutoDetectNamespaces().isEmpty())
-                               psb.set(XML_disableAutoDetectNamespaces, 
bool(a.disableAutoDetectNamespaces()));
-                       if (! a.defaultNamespace().isEmpty())
-                               psb.set(XML_defaultNamespace, 
string(a.defaultNamespace()));
-                       if (! a.enableNamespaces().isEmpty())
-                               psb.set(XML_enableNamespaces, 
bool(a.enableNamespaces()));
-                       if (a.namespaces().length > 0)
-                               psb.set(XML_namespaces, 
Namespace.createArray(stringList(a.namespaces())));
 
-                       if (a.eventAllocator() != XmlEventAllocator.Null.class)
-                               psb.set(XML_eventAllocator, a.eventAllocator());
-                       if (! a.preserveRootElement().isEmpty())
-                               psb.set(XML_preserveRootElement, 
bool(a.preserveRootElement()));
-                       if (a.reporter() != XmlReporter.Null.class)
-                               psb.set(XML_reporter, a.reporter());
-                       if (a.resolver() != XmlResolver.Null.class)
-                               psb.set(XML_resolver, a.resolver());
-                       if (! a.validating().isEmpty())
-                               psb.set(XML_validating, bool(a.validating()));
+                       psb.setIfNotEmpty(XML_addBeanTypes, 
bool(a.addBeanTypes()));
+                       psb.setIfNotEmpty(XML_addNamespaceUrisToRoot, 
bool(a.addNamespaceUrisToRoot()));
+                       psb.setIfNotEmpty(XML_disableAutoDetectNamespaces, 
bool(a.disableAutoDetectNamespaces()));
+                       psb.setIfNotEmpty(XML_defaultNamespace, 
string(a.defaultNamespace()));
+                       psb.setIfNotEmpty(XML_enableNamespaces, 
bool(a.enableNamespaces()));
+                       psb.setIf(a.namespaces().length > 0, XML_namespaces, 
Namespace.createArray(stringList(a.namespaces())));
+                       psb.setIf(a.eventAllocator() != 
XmlEventAllocator.Null.class, XML_eventAllocator, a.eventAllocator());
+                       psb.setIfNotEmpty(XML_preserveRootElement, 
bool(a.preserveRootElement()));
+                       psb.setIf(a.reporter() != XmlReporter.Null.class, 
XML_reporter, a.reporter());
+                       psb.setIf(a.resolver() != XmlResolver.Null.class, 
XML_resolver, a.resolver());
+                       psb.setIfNotEmpty(XML_validating, bool(a.validating()));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
index e12383c..7a1a8d0 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
@@ -968,88 +968,46 @@ public class RestAnnotation {
                        Rest a = ai.getAnnotation();
                        ClassInfo c = ai.getClassOn();
 
-                       if (a.serializers().length > 0)
-                               psb.set(REST_serializers, 
merge(ConverterUtils.toType(psb.peek(REST_serializers), Object[].class), 
a.serializers()));
-
-                       if (a.parsers().length > 0)
-                               psb.set(REST_parsers, 
merge(ConverterUtils.toType(psb.peek(REST_parsers), Object[].class), 
a.parsers()));
-
+                       psb.set(REST_serializers, 
merge(ConverterUtils.toType(psb.peek(REST_serializers), Object[].class), 
a.serializers()));
+                       psb.set(REST_parsers, 
merge(ConverterUtils.toType(psb.peek(REST_parsers), Object[].class), 
a.parsers()));
                        psb.setIf(a.partSerializer() != 
HttpPartSerializer.Null.class, REST_partSerializer, a.partSerializer());
-
                        psb.setIf(a.partParser() != HttpPartParser.Null.class, 
REST_partParser, a.partParser());
-
                        psb.prependTo(REST_encoders, a.encoders());
-
                        psb.setIfNotEmpty(REST_produces, 
stringList(a.produces()));
-
                        psb.setIfNotEmpty(REST_consumes, 
stringList(a.consumes()));
-
                        stringStream(a.defaultRequestAttributes()).map(x -> 
BasicNamedAttribute.ofPair(x)).forEach(x -> 
psb.appendTo(REST_defaultRequestAttributes, x));
-
                        stringStream(a.defaultRequestHeaders()).map(x -> 
BasicHeader.ofPair(x)).forEach(x -> psb.appendTo(REST_defaultRequestHeaders, 
x));
-
                        stringStream(a.defaultResponseHeaders()).map(x -> 
BasicHeader.ofPair(x)).forEach(x -> psb.appendTo(REST_defaultResponseHeaders, 
x));
-
                        psb.appendToIfNotEmpty(REST_defaultRequestHeaders, 
Accept.of(string(a.defaultAccept())));
-
                        psb.appendToIfNotEmpty(REST_defaultRequestHeaders, 
ContentType.of(string(a.defaultContentType())));
-
                        psb.prependTo(REST_responseHandlers, 
a.responseHandlers());
-
                        psb.prependTo(REST_converters, a.converters());
-
                        psb.prependTo(REST_guards, reverse(a.guards()));
-
                        psb.prependTo(REST_children, a.children());
-
                        psb.prependTo(REST_paramResolvers, a.paramResolvers());
-
                        psb.setIf(a.context() != RestContext.Null.class, 
REST_context, a.context());
-
                        psb.setIfNotEmpty(REST_uriContext, 
string(a.uriContext()));
-
                        psb.setIfNotEmpty(REST_uriAuthority, 
string(a.uriAuthority()));
-
                        psb.setIfNotEmpty(REST_uriRelativity, 
string(a.uriRelativity()));
-
                        psb.setIfNotEmpty(REST_uriResolution, 
string(a.uriResolution()));
-
                        psb.prependTo(REST_messages, Tuple2.of(c.inner(), 
string(a.messages())));
-
                        psb.setIf(a.fileFinder() != FileFinder.Null.class, 
REST_fileFinder, a.fileFinder());
-
                        psb.setIf(a.staticFiles() != StaticFiles.Null.class, 
REST_staticFiles, a.staticFiles());
-
                        psb.setIfNotEmpty(REST_path, 
trimLeadingSlash(string(a.path())));
-
                        psb.setIfNotEmpty(REST_clientVersionHeader, 
string(a.clientVersionHeader()));
-
                        psb.setIf(a.beanFactory() != BeanFactory.Null.class, 
REST_beanFactory, a.beanFactory());
-
                        psb.setIf(a.callLogger() != RestLogger.Null.class, 
REST_callLogger, a.callLogger());
-
                        psb.setIf(a.infoProvider() != 
RestInfoProvider.Null.class, REST_infoProvider, a.infoProvider());
-
                        psb.setIfNotEmpty(REST_disableAllowBodyParam, 
bool(a.disableAllowBodyParam()));
-
                        psb.setIfNotEmpty(REST_allowedHeaderParams, 
string(a.allowedHeaderParams()));
-
                        psb.setIfNotEmpty(REST_allowedMethodHeaders, 
string(a.allowedMethodHeaders()));
-
                        psb.setIfNotEmpty(REST_allowedMethodParams, 
string(a.allowedMethodParams()));
-
                        psb.setIfNotEmpty(REST_renderResponseStackTraces, 
bool(a.renderResponseStackTraces()));
-
                        psb.setIfNotEmpty(REST_defaultCharset, 
string(a.defaultCharset()));
-
                        psb.setIfNotEmpty(REST_maxInput, string(a.maxInput()));
-
                        psb.setIfNotEmpty(REST_debug, string(a.debug()));
-
                        psb.setIfNotEmpty(REST_debugOn, string(a.debugOn()));
-
                        cdStream(a.rolesDeclared()).forEach(x -> 
psb.addTo(REST_rolesDeclared, x));
-
                        psb.addToIfNotEmpty(REST_roleGuard, 
string(a.roleGuard()));
                }
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
index bfd9034..e7f899f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestMethodAnnotation.java
@@ -612,55 +612,33 @@ public class RestMethodAnnotation {
                public void apply(AnnotationInfo<RestMethod> ai, 
PropertyStoreBuilder psb, VarResolverSession vr) {
                        RestMethod a = ai.getAnnotation();
 
-                       if (a.serializers().length > 0)
-                               psb.set(REST_serializers, 
merge(ConverterUtils.toType(psb.peek(REST_serializers), Object[].class), 
a.serializers()));
-
-                       if (a.parsers().length > 0)
-                               psb.set(REST_parsers, 
merge(ConverterUtils.toType(psb.peek(REST_parsers), Object[].class), 
a.parsers()));
-
-                       if (a.encoders().length > 0)
-                               psb.set(REST_encoders, 
merge(ConverterUtils.toType(psb.peek(REST_encoders), Object[].class), 
a.encoders()));
-
+                       psb.set(REST_serializers, 
merge(ConverterUtils.toType(psb.peek(REST_serializers), Object[].class), 
a.serializers()));
+                       psb.set(REST_parsers, 
merge(ConverterUtils.toType(psb.peek(REST_parsers), Object[].class), 
a.parsers()));
+                       psb.set(REST_encoders, 
merge(ConverterUtils.toType(psb.peek(REST_encoders), Object[].class), 
a.encoders()));
                        psb.setIfNotEmpty(REST_produces, 
stringList(a.produces()));
-
                        psb.setIfNotEmpty(REST_consumes, 
stringList(a.consumes()));
-
                        stringStream(a.defaultRequestHeaders()).map(x -> 
BasicHeader.ofPair(x)).forEach(x -> 
psb.appendTo(RESTMETHOD_defaultRequestHeaders, x));
-
                        stringStream(a.defaultResponseHeaders()).map(x -> 
BasicHeader.ofPair(x)).forEach(x -> 
psb.appendTo(RESTMETHOD_defaultResponseHeaders, x));
-
                        stringStream(a.defaultRequestAttributes()).map(x -> 
BasicNamedAttribute.ofPair(x)).forEach(x -> 
psb.appendTo(RESTMETHOD_defaultRequestAttributes, x));
-
                        stringStream(a.defaultQuery()).map(x -> 
BasicNameValuePair.ofPair(x)).forEach(x -> 
psb.appendTo(RESTMETHOD_defaultQuery, x));
-
                        stringStream(a.defaultFormData()).map(x -> 
BasicNameValuePair.ofPair(x)).forEach(x -> 
psb.appendTo(RESTMETHOD_defaultFormData, x));
-
                        psb.appendToIfNotEmpty(REST_defaultRequestHeaders, 
Accept.of(string(a.defaultAccept())));
-
                        psb.appendToIfNotEmpty(REST_defaultRequestHeaders, 
ContentType.of(string(a.defaultContentType())));
-
                        psb.prependTo(REST_converters, a.converters());
-
                        psb.prependTo(REST_guards, reverse(a.guards()));
-
                        psb.prependTo(RESTMETHOD_matchers, a.matchers());
-
                        psb.setIfNotEmpty(RESTMETHOD_clientVersion, 
a.clientVersion());
-
                        psb.setIfNotEmpty(REST_defaultCharset, 
string(a.defaultCharset()));
-
                        psb.setIfNotEmpty(REST_maxInput, string(a.maxInput()));
-
                        stringStream(a.path()).forEach(x -> 
psb.prependTo(RESTMETHOD_path, x));
-
                        cdStream(a.rolesDeclared()).forEach(x -> 
psb.addTo(REST_rolesDeclared, x));
-
                        psb.addToIfNotEmpty(REST_roleGuard, 
string(a.roleGuard()));
-
                        psb.setIfNotEmpty(RESTMETHOD_httpMethod, 
string(a.method()));
+                       psb.setIf(a.priority() != 0, RESTMETHOD_priority, 
a.priority());
+                       psb.setIfNotEmpty(RESTMETHOD_debug, string(a.debug()));
 
-                       if (! a.value().isEmpty()) {
-                               String v = string(a.value()).trim();
+                       String v = StringUtils.trim(string(a.value()));
+                       if (v != null) {
                                int i = v.indexOf(' ');
                                if (i == -1) {
                                        psb.set(RESTMETHOD_httpMethod, v);
@@ -669,10 +647,6 @@ public class RestMethodAnnotation {
                                        psb.prependTo(RESTMETHOD_path,  
v.substring(i).trim());
                                }
                        }
-
-                       psb.setIf(a.priority() != 0, RESTMETHOD_priority, 
a.priority());
-
-                       psb.setIfNotEmpty(RESTMETHOD_debug, string(a.debug()));
                }
        }
 

Reply via email to