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 3da267d30c FilteredMap/MapBuilder improvements
3da267d30c is described below

commit 3da267d30c4b08ed2182edcf2cfb4eaf0162d8c3
Author: James Bognar <[email protected]>
AuthorDate: Sun Dec 14 20:15:05 2025 -0500

    FilteredMap/MapBuilder improvements
---
 .../main/java/org/apache/juneau/config/Config.java | 16 +++++++
 .../apache/juneau/config/store/ConfigStore.java    |  6 +++
 .../org/apache/juneau/config/store/FileStore.java  | 12 +++--
 .../java/org/apache/juneau/jena/RdfParser.java     | 23 ++++-----
 .../java/org/apache/juneau/jena/RdfSerializer.java | 33 ++++++-------
 .../main/java/org/apache/juneau/BeanContext.java   | 55 ++++++++++------------
 .../java/org/apache/juneau/BeanContextable.java    |  8 ++--
 .../org/apache/juneau/BeanTraverseContext.java     | 13 +++--
 .../src/main/java/org/apache/juneau/Context.java   | 11 ++---
 .../org/apache/juneau/html/HtmlDocSerializer.java  | 37 +++++++--------
 .../apache/juneau/html/HtmlSchemaSerializer.java   | 11 ++---
 .../org/apache/juneau/html/HtmlSerializer.java     | 23 ++++-----
 .../apache/juneau/json/JsonSchemaSerializer.java   | 11 ++---
 .../org/apache/juneau/json/JsonSerializer.java     | 12 +++--
 .../juneau/jsonschema/JsonSchemaGenerator.java     | 24 +++++-----
 .../apache/juneau/msgpack/MsgPackSerializer.java   | 10 ++--
 .../apache/juneau/parser/InputStreamParser.java    | 10 ++--
 .../main/java/org/apache/juneau/parser/Parser.java | 22 ++++-----
 .../org/apache/juneau/parser/ReaderParser.java     | 11 +++--
 .../juneau/serializer/OutputStreamSerializer.java  | 10 ++--
 .../org/apache/juneau/serializer/Serializer.java   | 35 +++++++-------
 .../apache/juneau/serializer/WriterSerializer.java | 14 ++++--
 .../org/apache/juneau/soap/SoapXmlSerializer.java  | 11 ++---
 .../main/java/org/apache/juneau/uon/UonParser.java | 11 +++--
 .../java/org/apache/juneau/uon/UonSerializer.java  | 12 +++--
 .../juneau/urlencoding/UrlEncodingParser.java      | 10 ++--
 .../juneau/urlencoding/UrlEncodingSerializer.java  | 10 ++--
 .../main/java/org/apache/juneau/xml/XmlParser.java | 20 ++++----
 .../java/org/apache/juneau/xml/XmlSerializer.java  | 23 ++++-----
 .../org/apache/juneau/rest/client/RestClient.java  | 30 ++++++------
 .../java/org/apache/juneau/rest/RestContext.java   | 51 ++++++++++----------
 .../java/org/apache/juneau/rest/RestOpContext.java | 12 +++--
 .../client/RestClient_Config_RestClient_Test.java  |  2 +-
 33 files changed, 301 insertions(+), 298 deletions(-)

diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
index a7a6d13e29..23c25ab22c 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
@@ -31,6 +31,7 @@ import java.util.*;
 import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.config.event.*;
 import org.apache.juneau.config.internal.*;
@@ -1109,6 +1110,21 @@ public class Config extends Context implements 
ConfigEventListener {
                return configMap.asMap();
        }
 
+       @Override /* Overridden from Context */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("name", name)
+                       .a("store", store)
+                       .a("serializer", serializer)
+                       .a("parser", parser)
+                       .a("mods", mods)
+                       .a("varResolver", varResolver)
+                       .a("binaryLineLength", binaryLineLength)
+                       .a("binaryFormat", binaryFormat)
+                       .a("multiLineValuesOnSeparateLines", 
multiLineValuesOnSeparateLines)
+                       .a("readOnly", readOnly);
+       }
+
        @Override /* Overridden from Object */
        public String toString() {
                return configMap.toString();
diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
index e7b2ef3d1a..a41f1e73c9 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
@@ -27,6 +27,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.config.internal.*;
 import org.apache.juneau.utils.*;
 
@@ -274,4 +275,9 @@ public abstract class ConfigStore extends Context 
implements Closeable {
        protected String resolveName(String name) {
                return name;
        }
+
+       @Override /* Overridden from Context */
+       protected FluentMap<String,Object> properties() {
+               return super.properties();
+       }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/FileStore.java
 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/FileStore.java
index 1f479afb5c..d8edf7f108 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/FileStore.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/FileStore.java
@@ -18,7 +18,6 @@ package org.apache.juneau.config.store;
 
 import static java.nio.file.StandardOpenOption.*;
 import static java.nio.file.StandardWatchEventKinds.*;
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.FileUtils.*;
 import static org.apache.juneau.commons.utils.StringUtils.*;
@@ -34,8 +33,8 @@ import java.nio.file.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.utils.*;
 
 /**
@@ -581,9 +580,12 @@ public class FileStore extends ConfigStore {
                }
        }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("charset", charset, "extensions", 
extensions, "updateOnWrite", updateOnWrite);
+       @Override /* Overridden from ConfigStore */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("charset", charset)
+                       .a("extensions", extensions)
+                       .a("updateOnWrite", updateOnWrite);
        }
 
        @Override
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
index 90bdc00962..ead9d6b4d4 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.jena;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
@@ -25,8 +24,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.jena.annotation.*;
@@ -1597,16 +1596,14 @@ public class RdfParser extends ReaderParser implements 
RdfMetaProvider {
         */
        protected final boolean isTrimWhitespace() { return trimWhitespace; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("collectionFormat", collectionFormat)
-                       .append("juneauBpNs", juneauBpNs)
-                       .append("juneauNs", juneauNs)
-                       .append("language", language)
-                       .append("looseCollections", looseCollections)
-                       .append("trimWhitespace", trimWhitespace);
-               // @formatter:on
+       @Override /* Overridden from ReaderParser */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("collectionFormat", collectionFormat)
+                       .a("juneauBpNs", juneauBpNs)
+                       .a("juneauNs", juneauNs)
+                       .a("language", language)
+                       .a("looseCollections", looseCollections)
+                       .a("trimWhitespace", trimWhitespace);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index 7d907789af..e07bfe5f15 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.jena;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
@@ -26,8 +25,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.jena.annotation.*;
@@ -2036,21 +2035,19 @@ public class RdfSerializer extends WriterSerializer 
implements RdfMetaProvider {
         */
        protected final boolean isUseXmlNamespaces() { return useXmlNamespaces; 
}
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("addLiteralTypes", addLiteralTypes)
-                       .append("addRootProperty", addRootProperty)
-                       .append("useXmlNamespaces", useXmlNamespaces)
-                       .append("looseCollections", looseCollections)
-                       .append("autoDetectNamespaces", autoDetectNamespaces)
-                       .append("language", language)
-                       .append("juneauNs", juneauNs)
-                       .append("juneauBpNs", juneauBpNs)
-                       .append("collectionFormat", collectionFormat)
-                       .append("namespaces", namespaces)
-                       .append("addBeanTypes", addBeanTypes);
-               // @formatter:on
+       @Override /* Overridden from WriterSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("addLiteralTypes", addLiteralTypes)
+                       .a("addRootProperty", addRootProperty)
+                       .a("useXmlNamespaces", useXmlNamespaces)
+                       .a("looseCollections", looseCollections)
+                       .a("autoDetectNamespaces", autoDetectNamespaces)
+                       .a("language", language)
+                       .a("juneauNs", juneauNs)
+                       .a("juneauBpNs", juneauBpNs)
+                       .a("collectionFormat", collectionFormat)
+                       .a("namespaces", namespaces)
+                       .a("addBeanTypes", addBeanTypes);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 664fb21c94..2574d7f160 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.reflect.ReflectionUtils.*;
 import static org.apache.juneau.commons.reflect.Visibility.*;
 import static org.apache.juneau.commons.utils.ClassUtils.*;
@@ -33,8 +32,8 @@ import java.util.concurrent.*;
 import java.util.stream.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.commons.reflect.Visibility;
@@ -4171,33 +4170,31 @@ public class BeanContext extends Context {
        }
 
        @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("id", System.identityHashCode(this))
-                       .append("beanClassVisibility", beanClassVisibility)
-                       .append("beanConstructorVisibility", 
beanConstructorVisibility)
-                       .append("beanDictionary", beanDictionary)
-                       .append("beanFieldVisibility", beanFieldVisibility)
-                       .append("beanMethodVisibility", beanMethodVisibility)
-                       .append("beansRequireDefaultConstructor", 
beansRequireDefaultConstructor)
-                       .append("beansRequireSerializable", 
beansRequireSerializable)
-                       .append("beansRequireSettersForGetters", 
beansRequireSettersForGetters)
-                       .append("beansRequireSomeProperties", 
beansRequireSomeProperties)
-                       .append("ignoreTransientFields", ignoreTransientFields)
-                       .append("ignoreInvocationExceptionsOnGetters", 
ignoreInvocationExceptionsOnGetters)
-                       .append("ignoreInvocationExceptionsOnSetters", 
ignoreInvocationExceptionsOnSetters)
-                       .append("ignoreUnknownBeanProperties", 
ignoreUnknownBeanProperties)
-                       .append("ignoreUnknownNullBeanProperties", 
ignoreUnknownNullBeanProperties)
-                       .append("notBeanClasses", notBeanClasses)
-                       .append("notBeanPackageNames", notBeanPackageNames)
-                       .append("notBeanPackagePrefixes", 
notBeanPackagePrefixes)
-                       .append("swaps", swaps)
-                       .append("sortProperties", sortProperties)
-                       .append("useEnumNames", useEnumNames)
-                       .append("useInterfaceProxies", useInterfaceProxies)
-                       .append("useJavaBeanIntrospector", 
useJavaBeanIntrospector);
-               // @formatter:on
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("id", System.identityHashCode(this))
+                       .a("beanClassVisibility", beanClassVisibility)
+                       .a("beanConstructorVisibility", 
beanConstructorVisibility)
+                       .a("beanDictionary", beanDictionary)
+                       .a("beanFieldVisibility", beanFieldVisibility)
+                       .a("beanMethodVisibility", beanMethodVisibility)
+                       .a("beansRequireDefaultConstructor", 
beansRequireDefaultConstructor)
+                       .a("beansRequireSerializable", beansRequireSerializable)
+                       .a("beansRequireSettersForGetters", 
beansRequireSettersForGetters)
+                       .a("beansRequireSomeProperties", 
beansRequireSomeProperties)
+                       .a("ignoreTransientFields", ignoreTransientFields)
+                       .a("ignoreInvocationExceptionsOnGetters", 
ignoreInvocationExceptionsOnGetters)
+                       .a("ignoreInvocationExceptionsOnSetters", 
ignoreInvocationExceptionsOnSetters)
+                       .a("ignoreUnknownBeanProperties", 
ignoreUnknownBeanProperties)
+                       .a("ignoreUnknownNullBeanProperties", 
ignoreUnknownNullBeanProperties)
+                       .a("notBeanClasses", notBeanClasses)
+                       .a("notBeanPackageNames", notBeanPackageNames)
+                       .a("notBeanPackagePrefixes", notBeanPackagePrefixes)
+                       .a("swaps", swaps)
+                       .a("sortProperties", sortProperties)
+                       .a("useEnumNames", useEnumNames)
+                       .a("useInterfaceProxies", useInterfaceProxies)
+                       .a("useJavaBeanIntrospector", useJavaBeanIntrospector);
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextable.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextable.java
index 99a1535ec5..0360bd2935 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextable.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextable.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.beans.*;
@@ -27,8 +26,8 @@ import java.util.*;
 import java.util.function.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.commons.reflect.Visibility;
@@ -2975,7 +2974,8 @@ public abstract class BeanContextable extends Context {
        public BeanContext getBeanContext() { return beanContext; }
 
        @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("beanContext", beanContext.properties());
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("beanContext", beanContext.properties());
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
index 14c7029bb0..84973c441c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
@@ -16,14 +16,13 @@
  */
 package org.apache.juneau;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
 import java.util.*;
 
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.utils.*;
@@ -758,8 +757,12 @@ public abstract class BeanTraverseContext extends 
BeanContextable {
         */
        public final boolean isIgnoreRecursions() { return ignoreRecursions; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("detectRecursions", detectRecursions, 
"maxDepth", maxDepth, "ignoreRecursions", ignoreRecursions, "initialDepth", 
initialDepth);
+       @Override /* Overridden from BeanContextable */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("detectRecursions", detectRecursions)
+                       .a("maxDepth", maxDepth)
+                       .a("ignoreRecursions", ignoreRecursions)
+                       .a("initialDepth", initialDepth);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
index fe8cea5341..a1979c161d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.reflect.ReflectionUtils.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.ThrowableUtils.*;
@@ -27,13 +26,11 @@ import java.lang.reflect.*;
 import java.util.*;
 import java.util.function.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.commons.utils.*;
 import org.apache.juneau.csv.annotation.*;
 import org.apache.juneau.html.annotation.*;
-import org.apache.juneau.internal.*;
 import org.apache.juneau.json.annotation.*;
 import org.apache.juneau.jsonschema.annotation.*;
 import org.apache.juneau.msgpack.annotation.*;
@@ -892,7 +889,7 @@ public abstract class Context {
 
        @Override /* Overridden from Object */
        public String toString() {
-               return Utils2.toPropertyMap(this).asReadableString();
+               return r(properties());
        }
 
        /**
@@ -910,7 +907,9 @@ public abstract class Context {
         *
         * @return The properties on this bean as a map for debugging.
         */
-       protected JsonMap properties() {
-               return filteredMap("annotations", annotations, "debug", debug);
+       protected FluentMap<String,Object> properties() {
+               return mapb().filtered().sorted().buildFluent()
+                       .a("annotations", annotations)
+                       .a("debug", debug);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
index a174954ed3..3d66197ee4 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.html;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.ThrowableUtils.*;
 import static org.apache.juneau.commons.utils.Utils.*;
@@ -28,8 +27,8 @@ import java.util.function.*;
 import java.util.regex.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.svl.*;
@@ -1842,23 +1841,21 @@ public class HtmlDocSerializer extends 
HtmlStrippedDocSerializer {
         */
        protected final boolean isNowrap() { return nowrap; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("header", header)
-                       .append("nav", nav)
-                       .append("navlinks", navlinks)
-                       .append("aside", aside)
-                       .append("asideFloat", asideFloat)
-                       .append("footer", footer)
-                       .append("style", style)
-                       .append("head", head)
-                       .append("stylesheet", stylesheet)
-                       .append("nowrap", nowrap)
-                       .append("template", template)
-                       .append("noResultsMessage", noResultsMessage)
-                       .append("widgets", widgets);
-               // @formatter:on
+       @Override /* Overridden from HtmlSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("header", header)
+                       .a("nav", nav)
+                       .a("navlinks", navlinks)
+                       .a("aside", aside)
+                       .a("asideFloat", asideFloat)
+                       .a("footer", footer)
+                       .a("style", style)
+                       .a("head", head)
+                       .a("stylesheet", stylesheet)
+                       .a("nowrap", nowrap)
+                       .a("template", template)
+                       .a("noResultsMessage", noResultsMessage)
+                       .a("widgets", widgets);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
index 08f9928763..53f9f34abc 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
@@ -16,16 +16,14 @@
  */
 package org.apache.juneau.html;
 
-import static org.apache.juneau.collections.JsonMap.*;
-
 import java.lang.annotation.*;
 import java.nio.charset.*;
 import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.json.*;
@@ -1101,9 +1099,10 @@ public class HtmlSchemaSerializer extends HtmlSerializer 
{
        @Override /* Overridden from Context */
        public HtmlSchemaSerializerSession getSession() { return 
createSession().build(); }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("generator", generator);
+       @Override /* Overridden from HtmlSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("generator", generator);
        }
 
        JsonSchemaGenerator getGenerator() { return generator; }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index b8b6d1b24a..0604c851a8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.html;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
@@ -25,8 +24,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.html.annotation.*;
@@ -1550,16 +1549,14 @@ public class HtmlSerializer extends XmlSerializer 
implements HtmlMetaProvider {
         */
        protected final boolean isDetectLinksInStrings() { return 
detectLinksInStrings; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("addBeanTypesHtml", addBeanTypesHtml)
-                       .append("addKeyValueTableHeaders", 
addKeyValueTableHeaders)
-                       .append("detectLabelParameters", detectLabelParameters)
-                       .append("detectLinksInStrings", detectLinksInStrings)
-                       .append("labelParameter", labelParameter)
-                       .append("uriAnchorText", uriAnchorText);
-               // @formatter:on
+       @Override /* Overridden from XmlSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("addBeanTypesHtml", addBeanTypesHtml)
+                       .a("addKeyValueTableHeaders", addKeyValueTableHeaders)
+                       .a("detectLabelParameters", detectLabelParameters)
+                       .a("detectLinksInStrings", detectLinksInStrings)
+                       .a("labelParameter", labelParameter)
+                       .a("uriAnchorText", uriAnchorText);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
index 3ce532750e..20270287a9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
@@ -16,8 +16,6 @@
  */
 package org.apache.juneau.json;
 
-import static org.apache.juneau.collections.JsonMap.*;
-
 import java.lang.annotation.*;
 import java.nio.charset.*;
 import java.util.*;
@@ -25,8 +23,8 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.jsonschema.*;
@@ -1027,9 +1025,10 @@ public class JsonSchemaSerializer extends JsonSerializer 
implements JsonSchemaMe
        @Override /* Overridden from Context */
        public JsonSchemaSerializerSession getSession() { return 
createSession().build(); }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("generator", generator);
+       @Override /* Overridden from JsonSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("generator", generator);
        }
 
        JsonSchemaGenerator getGenerator() { return generator; }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
index 2f33bb9fd9..10a127c363 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.json;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
@@ -25,8 +24,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.serializer.*;
@@ -1137,8 +1136,11 @@ public class JsonSerializer extends WriterSerializer 
implements JsonMetaProvider
         */
        protected final boolean isSimpleAttrs() { return simpleAttrs; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("simpleAttrs", simpleAttrs, "escapeSolidus", 
escapeSolidus, "addBeanTypesJson", addBeanTypesJson);
+       @Override /* Overridden from WriterSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("simpleAttrs", simpleAttrs)
+                       .a("escapeSolidus", escapeSolidus)
+                       .a("addBeanTypesJson", addBeanTypesJson);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
index bd0a5ea426..b0ab080c9a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.jsonschema;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.StringUtils.*;
 import static org.apache.juneau.commons.utils.ThrowableUtils.*;
@@ -31,6 +30,7 @@ import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.json.*;
@@ -981,18 +981,16 @@ public class JsonSchemaGenerator extends 
BeanTraverseContext implements JsonSche
         */
        protected final boolean isUseBeanDefs() { return useBeanDefs; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("useBeanDefs", useBeanDefs)
-                       .append("allowNestedExamples", allowNestedExamples)
-                       .append("allowNestedDescriptions", 
allowNestedDescriptions)
-                       .append("beanDefMapper", beanDefMapper)
-                       .append("addExamplesTo", addExamplesTo)
-                       .append("addDescriptionsTo", addDescriptionsTo)
-                       .append("ignoreTypes", ignoreTypes);
-               // @formatter:on
+       @Override /* Overridden from BeanTraverseContext */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("useBeanDefs", useBeanDefs)
+                       .a("allowNestedExamples", allowNestedExamples)
+                       .a("allowNestedDescriptions", allowNestedDescriptions)
+                       .a("beanDefMapper", beanDefMapper)
+                       .a("addExamplesTo", addExamplesTo)
+                       .a("addDescriptionsTo", addDescriptionsTo)
+                       .a("ignoreTypes", ignoreTypes);
        }
 
        JsonParser getJsonParser() { return jsonParser; }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index c6b6e355ba..a48237fd2e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.msgpack;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
@@ -24,8 +23,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.serializer.*;
@@ -819,8 +818,9 @@ public class MsgPackSerializer extends 
OutputStreamSerializer implements MsgPack
        @Override
        protected final boolean isAddBeanTypes() { return addBeanTypesMsgPack 
|| super.isAddBeanTypes(); }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("addBeanTypesMsgPack", addBeanTypesMsgPack);
+       @Override /* Overridden from OutputStreamSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("addBeanTypesMsgPack", addBeanTypesMsgPack);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
index 1c8dc1bc41..692defe9de 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
@@ -16,15 +16,14 @@
  */
 package org.apache.juneau.parser;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
 import java.util.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.utils.*;
@@ -657,8 +656,9 @@ public class InputStreamParser extends Parser {
         */
        protected final BinaryFormat getBinaryFormat() { return binaryFormat; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("binaryFormat", binaryFormat);
+       @Override /* Overridden from Parser */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("binaryFormat", binaryFormat);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
index 0753397e9e..0122d3c71c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.parser;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.StringUtils.*;
 import static org.apache.juneau.commons.utils.ThrowableUtils.*;
@@ -31,6 +30,7 @@ import java.util.*;
 import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.html.*;
@@ -1409,16 +1409,14 @@ public class Parser extends BeanContextable {
         */
        protected final boolean isUnbuffered() { return unbuffered; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("autoCloseStreams", autoCloseStreams)
-                       .append("debugOutputLines", debugOutputLines)
-                       .append("listener", listener)
-                       .append("strict", strict)
-                       .append("trimStrings", trimStrings)
-                       .append("unbuffered", unbuffered);
-               // @formatter:on
+       @Override /* Overridden from BeanContextable */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("autoCloseStreams", autoCloseStreams)
+                       .a("debugOutputLines", debugOutputLines)
+                       .a("listener", listener)
+                       .a("strict", strict)
+                       .a("trimStrings", trimStrings)
+                       .a("unbuffered", unbuffered);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
index 2b81f66b68..c55ddeadbf 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.parser;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.IoUtils.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
@@ -25,8 +24,8 @@ import java.nio.charset.*;
 import java.util.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.utils.*;
@@ -709,8 +708,10 @@ public class ReaderParser extends Parser {
         */
        protected final Charset getStreamCharset() { return streamCharset; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("fileCharset", fileCharset, "streamCharset", 
streamCharset);
+       @Override /* Overridden from Parser */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("fileCharset", fileCharset)
+                       .a("streamCharset", streamCharset);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
index ba7966da1f..174e4316cb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
@@ -16,15 +16,14 @@
  */
 package org.apache.juneau.serializer;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
 import java.util.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.utils.*;
@@ -767,8 +766,9 @@ public class OutputStreamSerializer extends Serializer {
         */
        protected final BinaryFormat getBinaryFormat() { return binaryFormat; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("binaryFormat", binaryFormat);
+       @Override /* Overridden from Serializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("binaryFormat", binaryFormat);
        }
 }
\ No newline at end of file
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 395808aee3..af3572e2d5 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
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.serializer;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.StringUtils.*;
 import static org.apache.juneau.commons.utils.ThrowableUtils.*;
@@ -29,8 +28,8 @@ import java.util.function.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.soap.*;
@@ -1573,22 +1572,20 @@ public class Serializer extends BeanTraverseContext {
         */
        protected final boolean isTrimStrings() { return trimStrings; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("addBeanTypes", addBeanTypes)
-                       .append("keepNullProperties", keepNullProperties)
-                       .append("trimEmptyCollections", trimEmptyCollections)
-                       .append("trimEmptyMaps", trimEmptyMaps)
-                       .append("trimStrings", trimStrings)
-                       .append("sortCollections", sortCollections)
-                       .append("sortMaps", sortMaps)
-                       .append("addRootType", addRootType)
-                       .append("uriContext", uriContext)
-                       .append("uriResolution", uriResolution)
-                       .append("uriRelativity", uriRelativity)
-                       .append("listener", listener);
-               // @formatter:on
+       @Override /* Overridden from BeanTraverseContext */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("addBeanTypes", addBeanTypes)
+                       .a("keepNullProperties", keepNullProperties)
+                       .a("trimEmptyCollections", trimEmptyCollections)
+                       .a("trimEmptyMaps", trimEmptyMaps)
+                       .a("trimStrings", trimStrings)
+                       .a("sortCollections", sortCollections)
+                       .a("sortMaps", sortMaps)
+                       .a("addRootType", addRootType)
+                       .a("uriContext", uriContext)
+                       .a("uriResolution", uriResolution)
+                       .a("uriRelativity", uriRelativity)
+                       .a("listener", listener);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
index 31d53d012d..d1a705a262 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.serializer;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.IoUtils.*;
 import static org.apache.juneau.commons.utils.ThrowableUtils.*;
 import static org.apache.juneau.commons.utils.Utils.*;
@@ -26,8 +25,8 @@ import java.nio.charset.*;
 import java.util.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.json.*;
@@ -1098,9 +1097,14 @@ public class WriterSerializer extends Serializer {
         */
        protected final boolean isUseWhitespace() { return useWhitespace; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("fileCharset", fileCharset, "maxIndent", 
maxIndent, "quoteChar", quoteChar, "streamCharset", streamCharset, 
"useWhitespace", useWhitespace);
+       @Override /* Overridden from Serializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("fileCharset", fileCharset)
+                       .a("maxIndent", maxIndent)
+                       .a("quoteChar", quoteChar)
+                       .a("streamCharset", streamCharset)
+                       .a("useWhitespace", useWhitespace);
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
index 77a0b34645..73e6edd370 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializer.java
@@ -16,16 +16,14 @@
  */
 package org.apache.juneau.soap;
 
-import static org.apache.juneau.collections.JsonMap.*;
-
 import java.lang.annotation.*;
 import java.nio.charset.*;
 import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.utils.*;
@@ -898,8 +896,9 @@ public class SoapXmlSerializer extends XmlSerializer 
implements SoapXmlMetaProvi
                return m;
        }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("soapAction", soapAction);
+       @Override /* Overridden from XmlSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("soapAction", soapAction);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
index 01efd36acf..61b12c1721 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.uon;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
@@ -26,8 +25,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.httppart.*;
@@ -857,8 +856,10 @@ public class UonParser extends ReaderParser implements 
HttpPartParser, UonMetaPr
         */
        protected final boolean isValidateEnd() { return validateEnd; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("decoding", decoding, "validateEnd", 
validateEnd);
+       @Override /* Overridden from ReaderParser */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("decoding", decoding)
+                       .a("validateEnd", validateEnd);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
index e581fe8850..2410322afe 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.uon;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
@@ -25,8 +24,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.httppart.*;
@@ -1192,8 +1191,11 @@ public class UonSerializer extends WriterSerializer 
implements HttpPartSerialize
         */
        protected final boolean isEncoding() { return encoding; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("encoding", encoding, "addBeanTypes", 
addBeanTypes, "paramFormat", paramFormat);
+       @Override /* Overridden from WriterSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("encoding", encoding)
+                       .a("addBeanTypes", addBeanTypes)
+                       .a("paramFormat", paramFormat);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
index ca08161963..05164fa6bd 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.urlencoding;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
@@ -25,8 +24,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.uon.*;
@@ -763,8 +762,9 @@ public class UrlEncodingParser extends UonParser implements 
UrlEncodingMetaProvi
         */
        protected final boolean isExpandedParams() { return expandedParams; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("expandedParams", expandedParams);
+       @Override /* Overridden from UonParser */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("expandedParams", expandedParams);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
index d52cbd5ab9..e1fc0f3907 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.urlencoding;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
 import java.lang.annotation.*;
@@ -25,8 +24,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.uon.*;
@@ -1051,8 +1050,9 @@ public class UrlEncodingSerializer extends UonSerializer 
implements UrlEncodingM
         */
        protected final boolean isExpandedParams() { return expandedParams; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap("expandedParams", expandedParams);
+       @Override /* Overridden from UonSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("expandedParams", expandedParams);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
index 35366bbd46..c5a5c215f0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.xml;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.ThrowableUtils.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
@@ -31,6 +30,7 @@ import javax.xml.stream.util.*;
 import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.parser.*;
@@ -887,15 +887,13 @@ public class XmlParser extends ReaderParser implements 
XmlMetaProvider {
         */
        protected final boolean isValidating() { return validating; }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("validating", validating)
-                       .append("preserveRootElement", preserveRootElement)
-                       .append("reporter", reporter)
-                       .append("resolver", resolver)
-                       .append("eventAllocator", eventAllocator);
-               // @formatter:on
+       @Override /* Overridden from ReaderParser */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("validating", validating)
+                       .a("preserveRootElement", preserveRootElement)
+                       .a("reporter", reporter)
+                       .a("resolver", resolver)
+                       .a("eventAllocator", eventAllocator);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index 1201722175..1639b5edd1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.xml;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
@@ -26,8 +25,8 @@ import java.util.*;
 import java.util.concurrent.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.json.*;
@@ -1331,16 +1330,14 @@ public class XmlSerializer extends WriterSerializer 
implements XmlMetaProvider {
         */
        protected final boolean isEnableNamespaces() { return enableNamespaces; 
}
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("autoDetectNamespaces", autoDetectNamespaces)
-                       .append("enableNamespaces", enableNamespaces)
-                       .append("addNamespaceUrlsToRoot", 
addNamespaceUrlsToRoot)
-                       .append("defaultNamespace", defaultNamespace)
-                       .append("namespaces", namespaces)
-                       .append("addBeanTypes", addBeanTypes);
-               // @formatter:on
+       @Override /* Overridden from WriterSerializer */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("autoDetectNamespaces", autoDetectNamespaces)
+                       .a("enableNamespaces", enableNamespaces)
+                       .a("addNamespaceUrlsToRoot", addNamespaceUrlsToRoot)
+                       .a("defaultNamespace", defaultNamespace)
+                       .a("namespaces", namespaces)
+                       .a("addBeanTypes", addBeanTypes);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 45aaf04716..f0270c4da2 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -18,7 +18,6 @@ package org.apache.juneau.rest.client;
 
 import static java.lang.Character.isWhitespace;
 import static java.util.logging.Level.*;
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.utils.AssertionUtils.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.StateEnum.*;
@@ -69,6 +68,7 @@ import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.function.*;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.cp.*;
@@ -7783,21 +7783,19 @@ public class RestClient extends BeanContextable 
implements HttpClient, Closeable
                }
        }
 
-       @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("errorCodes", errorCodes)
-                       .append("executorService", executorService)
-                       .append("executorServiceShutdownOnClose", 
executorServiceShutdownOnClose)
-                       .append("headerData", headerData)
-                       .append("interceptors", interceptors)
-                       .append("keepHttpClientOpen", keepHttpClientOpen)
-                       .append("partParser", partParser)
-                       .append("partSerializer", partSerializer)
-                       .append("queryData", queryData)
-                       .append("rootUrl", rootUrl);
-               // @formatter:on
+       @Override /* Overridden from BeanContextable */
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("errorCodes", errorCodes)
+                       .a("executorService", executorService)
+                       .a("executorServiceShutdownOnClose", 
executorServiceShutdownOnClose)
+                       .a("headerData", headerData)
+                       .a("interceptors", interceptors)
+                       .a("keepHttpClientOpen", keepHttpClientOpen)
+                       .a("partParser", partParser)
+                       .a("partSerializer", partSerializer)
+                       .a("queryData", queryData)
+                       .a("rootUrl", rootUrl);
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 98e44a9a4d..75fec94396 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -18,7 +18,6 @@ package org.apache.juneau.rest;
 
 import static jakarta.servlet.http.HttpServletResponse.*;
 import static java.util.Collections.*;
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.reflect.ReflectionUtils.*;
 import static org.apache.juneau.commons.utils.ClassUtils.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
@@ -45,8 +44,8 @@ import java.util.stream.*;
 import org.apache.http.Header;
 import org.apache.juneau.*;
 import org.apache.juneau.bean.swagger.Swagger;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.commons.utils.*;
 import org.apache.juneau.config.*;
@@ -6105,31 +6104,29 @@ public class RestContext extends Context {
        }
 
        @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               // @formatter:off
-               return filteredMap()
-                       .append("allowContentParam", allowContentParam)
-                       .append("allowedMethodHeader", allowedMethodHeaders)
-                       .append("allowedMethodParams", allowedMethodParams)
-                       .append("allowedHeaderParams", allowedHeaderParams)
-                       .append("beanStore", beanStore)
-                       .append("clientVersionHeader", clientVersionHeader)
-                       .append("consumes", consumes)
-                       .append("defaultRequestHeaders", defaultRequestHeaders)
-                       .append("defaultResponseHeaders", 
defaultResponseHeaders)
-                       .append("restOpArgs", restOpArgs)
-                       .append("partParser", partParser)
-                       .append("partSerializer", partSerializer)
-                       .append("produces", produces)
-                       .append("renderResponseStackTraces", 
renderResponseStackTraces)
-                       .append("responseProcessors", responseProcessors)
-                       .append("staticFiles", staticFiles)
-                       .append("swaggerProvider", swaggerProvider)
-                       .append("uriAuthority", uriAuthority)
-                       .append("uriContext", uriContext)
-                       .append("uriRelativity", uriRelativity)
-                       .append("uriResolution", uriResolution);
-               // @formatter:on
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("allowContentParam", allowContentParam)
+                       .a("allowedMethodHeader", allowedMethodHeaders)
+                       .a("allowedMethodParams", allowedMethodParams)
+                       .a("allowedHeaderParams", allowedHeaderParams)
+                       .a("beanStore", beanStore)
+                       .a("clientVersionHeader", clientVersionHeader)
+                       .a("consumes", consumes)
+                       .a("defaultRequestHeaders", defaultRequestHeaders)
+                       .a("defaultResponseHeaders", defaultResponseHeaders)
+                       .a("restOpArgs", restOpArgs)
+                       .a("partParser", partParser)
+                       .a("partSerializer", partSerializer)
+                       .a("produces", produces)
+                       .a("renderResponseStackTraces", 
renderResponseStackTraces)
+                       .a("responseProcessors", responseProcessors)
+                       .a("staticFiles", staticFiles)
+                       .a("swaggerProvider", swaggerProvider)
+                       .a("uriAuthority", uriAuthority)
+                       .a("uriContext", uriContext)
+                       .a("uriRelativity", uriRelativity)
+                       .a("uriResolution", uriResolution);
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
index 78219c1c19..db5f027101 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
@@ -16,7 +16,6 @@
  */
 package org.apache.juneau.rest;
 
-import static org.apache.juneau.collections.JsonMap.*;
 import static org.apache.juneau.commons.reflect.AnnotationTraversal.*;
 import static org.apache.juneau.commons.utils.CollectionUtils.*;
 import static org.apache.juneau.commons.utils.StringUtils.*;
@@ -36,8 +35,8 @@ import java.util.function.*;
 import org.apache.http.*;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.collections.*;
 import org.apache.juneau.commons.collections.*;
+import org.apache.juneau.commons.collections.FluentMap;
 import org.apache.juneau.commons.reflect.*;
 import org.apache.juneau.commons.utils.*;
 import org.apache.juneau.cp.*;
@@ -2551,9 +2550,12 @@ public class RestOpContext extends Context implements 
Comparable<RestOpContext>
        }
 
        @Override /* Overridden from Context */
-       protected JsonMap properties() {
-               return filteredMap().append("defaultRequestFormData", 
defaultRequestFormData).append("defaultRequestHeaders", 
defaultRequestHeaders).append("defaultRequestQueryData", 
defaultRequestQueryData)
-                       .append("httpMethod", httpMethod);
+       protected FluentMap<String,Object> properties() {
+               return super.properties()
+                       .a("defaultRequestFormData", defaultRequestFormData)
+                       .a("defaultRequestHeaders", defaultRequestHeaders)
+                       .a("defaultRequestQueryData", defaultRequestQueryData)
+                       .a("httpMethod", httpMethod);
        }
 
        RestConverter[] getConverters() { return converters; }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
index 0e684df436..9bb1304e0a 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
@@ -450,7 +450,7 @@ class RestClient_Config_RestClient_Test extends TestBase {
 
        @Test void a13_toString() {
                var s = client().rootUrl("https://foo";).build().toString();
-               assertTrue(s.contains("rootUrl: 'https://foo'"));
+               assertTrue(s.contains("rootUrl=https://foo";));
        }
 
        @Test void a14_request_target() throws Exception {

Reply via email to