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 c79a118  Context API refactoring.
c79a118 is described below

commit c79a1182854cc21e36fc6e195e0509eee16a2037
Author: JamesBognar <james.bog...@salesforce.com>
AuthorDate: Sat Sep 25 15:37:22 2021 -0400

    Context API refactoring.
---
 .../org/apache/juneau/jena/RdfParserBuilder.java   |  4 +-
 .../apache/juneau/jena/RdfSerializerBuilder.java   |  4 +-
 .../main/java/org/apache/juneau/BeanContext.java   | 44 +++-------------
 .../java/org/apache/juneau/BeanContextBuilder.java | 58 +++++++++++++---------
 .../org/apache/juneau/BeanContextableBuilder.java  | 38 +++-----------
 .../java/org/apache/juneau/BeanFilterBuilder.java  |  2 +-
 .../java/org/apache/juneau/BeanPropertyMeta.java   |  2 +-
 .../main/java/org/apache/juneau/BeanRegistry.java  |  2 +-
 .../main/java/org/apache/juneau/BeanSession.java   |  9 ++--
 .../org/apache/juneau/BeanTraverseBuilder.java     |  4 +-
 .../java/org/apache/juneau/annotation/Bean.java    |  6 +--
 .../org/apache/juneau/annotation/BeanConfig.java   |  8 +--
 .../juneau/annotation/BeanConfigAnnotation.java    |  4 +-
 .../java/org/apache/juneau/annotation/Beanp.java   |  4 +-
 .../org/apache/juneau/csv/CsvParserBuilder.java    |  4 +-
 .../apache/juneau/csv/CsvSerializerBuilder.java    |  4 +-
 .../juneau/html/HtmlDocSerializerBuilder.java      |  4 +-
 .../org/apache/juneau/html/HtmlParserBuilder.java  |  4 +-
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |  4 +-
 .../apache/juneau/html/HtmlSerializerBuilder.java  |  4 +-
 .../html/HtmlStrippedDocSerializerBuilder.java     |  4 +-
 .../org/apache/juneau/jso/JsoParserBuilder.java    |  4 +-
 .../apache/juneau/jso/JsoSerializerBuilder.java    |  4 +-
 .../org/apache/juneau/json/JsonParserBuilder.java  |  4 +-
 .../juneau/json/JsonSchemaSerializerBuilder.java   |  4 +-
 .../apache/juneau/json/JsonSerializerBuilder.java  |  4 +-
 .../jsonschema/JsonSchemaGeneratorBuilder.java     |  4 +-
 .../juneau/msgpack/MsgPackParserBuilder.java       |  4 +-
 .../juneau/msgpack/MsgPackSerializerBuilder.java   |  4 +-
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |  4 +-
 .../juneau/oapi/OpenApiSerializerBuilder.java      |  4 +-
 .../juneau/parser/InputStreamParserBuilder.java    |  4 +-
 .../org/apache/juneau/parser/ParserBuilder.java    |  4 +-
 .../apache/juneau/parser/ReaderParserBuilder.java  |  4 +-
 .../juneau/plaintext/PlainTextParserBuilder.java   |  4 +-
 .../plaintext/PlainTextSerializerBuilder.java      |  4 +-
 .../serializer/OutputStreamSerializerBuilder.java  |  4 +-
 .../juneau/serializer/SerializerBuilder.java       |  4 +-
 .../juneau/serializer/WriterSerializerBuilder.java |  4 +-
 .../juneau/soap/SoapXmlSerializerBuilder.java      |  4 +-
 .../org/apache/juneau/uon/UonParserBuilder.java    |  4 +-
 .../apache/juneau/uon/UonSerializerBuilder.java    |  4 +-
 .../urlencoding/UrlEncodingParserBuilder.java      |  4 +-
 .../urlencoding/UrlEncodingSerializerBuilder.java  |  4 +-
 .../main/java/org/apache/juneau/utils/HashKey.java | 10 ++--
 .../org/apache/juneau/xml/XmlParserBuilder.java    |  4 +-
 .../apache/juneau/xml/XmlSerializerBuilder.java    |  4 +-
 .../juneau/rest/client/RestClientBuilder.java      |  4 +-
 .../juneau/rest/mock/MockRestClientBuilder.java    |  4 +-
 .../test/java/org/apache/juneau/BeanMapTest.java   |  8 +--
 .../test/java/org/apache/juneau/ComboInput.java    |  6 +++
 .../java/org/apache/juneau/ComboRoundTripTest.java | 19 +++++--
 .../juneau/SerializerPropertiesComboTest.java      |  7 +--
 .../org/apache/juneau/a/rttests/RoundTripTest.java | 10 ++--
 .../annotation/BeanConfigAnnotation_Test.java      |  6 +--
 .../org/apache/juneau/html/CommonParser_Test.java  |  2 +-
 .../org/apache/juneau/json/CommonParserTest.java   |  4 +-
 .../client/RestClient_Config_BeanContext_Test.java |  4 +-
 .../apache/juneau/uon/CommonParser_UonTest.java    |  2 +-
 .../urlencoding/CommonParser_UrlEncodingTest.java  |  2 +-
 .../java/org/apache/juneau/utils/PojoRestTest.java |  2 +-
 61 files changed, 186 insertions(+), 221 deletions(-)

diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
index 4afa7de..9a798c7 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
@@ -1059,8 +1059,8 @@ public class RdfParserBuilder extends ReaderParserBuilder 
{
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public RdfParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public RdfParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
index 1bc161d..c7c32eb 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
@@ -1158,8 +1158,8 @@ public class RdfSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public RdfSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public RdfSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
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 2ec0d9c..b7a250e 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
@@ -15,6 +15,7 @@ package org.apache.juneau;
 import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.CollectionUtils.*;
 import static org.apache.juneau.internal.ExceptionUtils.*;
+import static java.util.Optional.*;
 
 import java.io.*;
 import java.lang.reflect.*;
@@ -155,35 +156,6 @@ public class BeanContext extends Context {
        static final String PREFIX = "BeanContext";
 
        /**
-        * Configuration property:  Bean dictionary.
-        *
-        * <p>
-        * The list of classes that make up the bean dictionary in this bean 
context.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.BeanContext#BEAN_beanDictionary BEAN_beanDictionary}
-        *      <li><b>Name:</b>  <js>"BeanContext.beanDictionary.lc"</js>
-        *      <li><b>Data type:</b>  <c>List&lt;Class&gt;</c>
-        *      <li><b>Default:</b>  empty list
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#dictionary()}
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.Beanp#dictionary()}
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary()}
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary(Object...)}
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary_replace(Object...)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String BEAN_beanDictionary = PREFIX + 
".beanDictionary.lc";
-
-       /**
         * Configuration property:  Beans don't require at least one property.
         *
         * <p>
@@ -937,7 +909,7 @@ public class BeanContext extends Context {
                beanFieldVisibility;
 
        private final Class<?>[] notBeanClasses;
-       private final List<Class<?>> beanDictionaryClasses;
+       final List<Class<?>> beanDictionary;
        private final String[] notBeanPackageNames, notBeanPackagePrefixes;
        private final PojoSwap<?,?>[] swaps;
        private final BeanRegistry beanRegistry;
@@ -1034,7 +1006,8 @@ public class BeanContext extends Context {
                cmObject = cmCache.get(Object.class);
                cmClass = cmCache.get(Class.class);
 
-               beanDictionaryClasses = 
AList.unmodifiable(cp.getClassArray(BEAN_beanDictionary).orElse(new Class[0]));
+               beanDictionary = 
ofNullable(builder.beanDictionary).map(Collections::unmodifiableList).orElse(emptyList());
+
                beanRegistry = new BeanRegistry(this, null);
        }
 
@@ -1659,12 +1632,12 @@ public class BeanContext extends Context {
        /**
         * Bean dictionary.
         *
-        * @see #BEAN_beanDictionary
+        * @see BeanContextBuilder#beanDictionary()
         * @return
         *      The list of classes that make up the bean dictionary in this 
bean context.
         */
-       public final List<Class<?>> getBeanDictionaryClasses() {
-               return beanDictionaryClasses;
+       public final List<Class<?>> getBeanDictionary() {
+               return beanDictionary;
        }
 
        /**
@@ -2005,7 +1978,7 @@ public class BeanContext extends Context {
                                        .a("id", System.identityHashCode(this))
                                        .a("beanClassVisibility", 
beanClassVisibility)
                                        .a("beanConstructorVisibility", 
beanConstructorVisibility)
-                                       .a("beanDictionaryClasses", 
beanDictionaryClasses)
+                                       .a("beanDictionary", beanDictionary)
                                        .a("beanFieldVisibility", 
beanFieldVisibility)
                                        .a("beanMethodVisibility", 
beanMethodVisibility)
                                        .a("beansRequireDefaultConstructor", 
beansRequireDefaultConstructor)
@@ -2013,7 +1986,6 @@ public class BeanContext extends Context {
                                        .a("beansRequireSettersForGetters", 
beansRequireSettersForGetters)
                                        .a("beansRequireSomeProperties", 
beansRequireSomeProperties)
                                        .a("ignoreTransientFields", 
ignoreTransientFields)
-                                       .a("ignoreMissingSetters", 
ignoreMissingSetters)
                                        
.a("ignoreInvocationExceptionsOnGetters", ignoreInvocationExceptionsOnGetters)
                                        
.a("ignoreInvocationExceptionsOnSetters", ignoreInvocationExceptionsOnSetters)
                                        .a("ignoreUnknownBeanProperties", 
ignoreUnknownBeanProperties)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index f541fbc..3cb6a17 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -66,6 +66,7 @@ public class BeanContextBuilder extends ContextBuilder {
        
//-----------------------------------------------------------------------------------------------------------------
 
        Visibility beanClassVisibility, beanConstructorVisibility, 
beanMethodVisibility, beanFieldVisibility;
+       List<Class<?>> beanDictionary;
 
        /**
         * Constructor.
@@ -78,6 +79,7 @@ public class BeanContextBuilder extends ContextBuilder {
                beanConstructorVisibility = 
env("RestContext.beanConstructorVisibility", PUBLIC);
                beanMethodVisibility = env("RestContext.beanMethodVisibility", 
PUBLIC);
                beanFieldVisibility = env("RestContext.beanFieldVisibility", 
PUBLIC);
+               beanDictionary = null;
        }
 
        /**
@@ -91,6 +93,7 @@ public class BeanContextBuilder extends ContextBuilder {
                beanConstructorVisibility = copyFrom.beanConstructorVisibility;
                beanMethodVisibility = copyFrom.beanMethodVisibility;
                beanFieldVisibility = copyFrom.beanFieldVisibility;
+               beanDictionary = copyFrom.beanDictionary.isEmpty() ? null : new 
ArrayList<>(copyFrom.beanDictionary);
        }
 
        /**
@@ -104,6 +107,7 @@ public class BeanContextBuilder extends ContextBuilder {
                beanConstructorVisibility = copyFrom.beanConstructorVisibility;
                beanMethodVisibility = copyFrom.beanMethodVisibility;
                beanFieldVisibility = copyFrom.beanFieldVisibility;
+               beanDictionary = copyFrom.beanDictionary == null ? null : new 
ArrayList<>(copyFrom.beanDictionary);
        }
 
        @Override /* ContextBuilder */
@@ -117,7 +121,14 @@ public class BeanContextBuilder extends ContextBuilder {
                cp = cp.subset(new String[]{"Context","BeanContext"});
                HashKey key = HashKey
                        .create()
-                       .add(cp, beanClassVisibility, 
beanConstructorVisibility, beanMethodVisibility, beanFieldVisibility)
+                       .add(
+                               cp, 
+                               beanClassVisibility, 
+                               beanConstructorVisibility, 
+                               beanMethodVisibility, 
+                               beanFieldVisibility, 
+                               beanDictionary
+                       )
                        .build();
                BeanContext bc = CACHE.get(key);
                if (bc == null) {
@@ -1382,8 +1393,7 @@ public class BeanContextBuilder extends ContextBuilder {
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.Beanp#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary_replace(Object...)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#beanDictionary(Class...)}
         * </ul>
         *
         * @param values
@@ -1391,39 +1401,39 @@ public class BeanContextBuilder extends ContextBuilder {
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public BeanContextBuilder dictionary(Object...values) {
-               return prependTo(BEAN_beanDictionary, values);
+       public BeanContextBuilder beanDictionary(Class<?>...values) {
+               return beanDictionary(Arrays.asList(values));
        }
 
        /**
-        * Bean dictionary.
-        *
-        * <p>
-        * Same as {@link #dictionary(Object...)}, but replaces instead of 
prepends the values.
-        *
-        * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#dictionary()}
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.Beanp#dictionary()}
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary()}
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary(Object...)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
-        * </ul>
+        * Same as {@link #beanDictionary(Class...)} but allows you to pass in 
a collection of classes.
         *
         * @param values
-        *      The values to replace on this setting.
+        *      The values to add to this setting.
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public BeanContextBuilder dictionary_replace(Object...values) {
-               return set(BEAN_beanDictionary, values);
+       public BeanContextBuilder beanDictionary(Collection<Class<?>> values) {
+               beanDictionary().addAll(0, values);
+               return this;
+       }
+
+       /**
+        * Returns the bean dictionary list.
+        *
+        * @return The bean dictionary list.
+        */
+       public List<Class<?>> beanDictionary() {
+               if (beanDictionary == null)
+                       beanDictionary = new ArrayList<>();
+               return beanDictionary;
        }
 
        /**
         * Bean dictionary.
         *
         * <p>
-        * This is identical to {@link #dictionary(Object...)}, but specifies a 
dictionary within the context of
+        * This is identical to {@link #beanDictionary(Class...)}, but 
specifies a dictionary within the context of
         * a single class as opposed to globally.
         *
         * <h5 class='section'>Example:</h5>
@@ -1454,7 +1464,7 @@ public class BeanContextBuilder extends ContextBuilder {
         *
         * <ul class='seealso'>
         *      <li class='ja'>{@link Bean#dictionary()}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
BeanContextBuilder#beanDictionary(Class...)}
         * </ul>
         *
         * @param on The class that the dictionary values apply to.
@@ -2686,7 +2696,7 @@ public class BeanContextBuilder extends ContextBuilder {
         *
         * <ul class='seealso'>
         *      <li class='jc'>{@link Bean#typeName() Bean(typeName)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link #beanDictionary(Class...)}
         * </ul>
         *
         * @param on
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
index d3f0b5b..154cf55 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
@@ -1396,8 +1396,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.Beanp#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextableBuilder#dictionary_replace(Object...)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextableBuilder#beanDictionary(Class...)}
         * </ul>
         *
         * @param values
@@ -1405,8 +1404,8 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public BeanContextableBuilder dictionary(Object...values) {
-               bcBuilder.dictionary(values);
+       public BeanContextableBuilder beanDictionary(Class<?>...values) {
+               bcBuilder.beanDictionary(values);
                return this;
        }
 
@@ -1414,32 +1413,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * Bean dictionary.
         *
         * <p>
-        * Same as {@link #dictionary(Object...)}, but replaces instead of 
prepends the values.
-        *
-        * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#dictionary()}
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.Beanp#dictionary()}
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary()}
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextableBuilder#dictionary(Object...)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
-        * </ul>
-        *
-        * @param values
-        *      The values to replace on this setting.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public BeanContextableBuilder dictionary_replace(Object...values) {
-               bcBuilder.dictionary_replace(values);
-               return this;
-       }
-
-       /**
-        * Bean dictionary.
-        *
-        * <p>
-        * This is identical to {@link #dictionary(Object...)}, but specifies a 
dictionary within the context of
+        * This is identical to {@link #beanDictionary(Class...)}, but 
specifies a dictionary within the context of
         * a single class as opposed to globally.
         *
         * <h5 class='section'>Example:</h5>
@@ -1470,7 +1444,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         *
         * <ul class='seealso'>
         *      <li class='ja'>{@link Bean#dictionary()}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
BeanContextBuilder#beanDictionary(Class...)}
         * </ul>
         *
         * @param on The class that the dictionary values apply to.
@@ -2710,7 +2684,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         *
         * <ul class='seealso'>
         *      <li class='jc'>{@link Bean#typeName() Bean(typeName)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
BeanContextBuilder#beanDictionary(Class...)}
         * </ul>
         *
         * @param on
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilterBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilterBuilder.java
index abbbc86..36e5e6f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilterBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilterBuilder.java
@@ -617,7 +617,7 @@ public class BeanFilterBuilder {
         *
         * <ul class='seealso'>
         *      <li class='ja'>{@link Bean#dictionary()}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
BeanContextBuilder#beanDictionary(Class...)}
         * </ul>
         *
         * @param values
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index 3eb3b55..1677bfb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -482,7 +482,7 @@ public final class BeanPropertyMeta {
         * The order of lookup for the dictionary is as follows:
         * <ol>
         *      <li>Dictionary defined via {@link Beanp#dictionary() 
@Beanp(dictionary)}.
-        *      <li>Dictionary defined via {@link 
BeanContext#BEAN_beanDictionary} context property.
+        *      <li>Dictionary defined via {@link 
BeanContextBuilder#beanDictionary(Class...)}.
         * </ol>
         *
         * @return The bean dictionary in use for this bean property.  Never 
<jk>null</jk>.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
index ff5a3b8..9067c59 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
@@ -51,7 +51,7 @@ public class BeanRegistry {
                this.beanContext = beanContext;
                this.map = new ConcurrentHashMap<>();
                this.reverseMap = new ConcurrentHashMap<>();
-               for (Class<?> c : beanContext.getBeanDictionaryClasses())
+               for (Class<?> c : beanContext.getBeanDictionary())
                        addClass(c);
                if (parent != null)
                        for (Map.Entry<String,ClassMeta<?>> e : 
parent.map.entrySet())
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
index b03a0af..e29386f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
@@ -1134,7 +1134,7 @@ public class BeanSession extends Session {
        }
 
        /**
-        * Returns the bean registry defined in this bean context defined by 
{@link BeanContext#BEAN_beanDictionary}.
+        * Returns the bean registry defined in this bean context defined by 
{@link BeanContextBuilder#beanDictionary(Class...)}.
         *
         * @return The bean registry defined in this bean context.  Never 
<jk>null</jk>.
         */
@@ -1271,13 +1271,12 @@ public class BeanSession extends Session {
        /**
         * Configuration property:  Bean dictionary.
         *
-        * @see BeanContext#BEAN_beanDictionary
+        * @see BeanContextBuilder#beanDictionary(Class...)
         * @return
         *      The list of classes that make up the bean dictionary in this 
bean context.
         */
-       // TODO - Rename to getBeanDictionary()
-       public final List<Class<?>> getBeanDictionaryClasses() {
-               return ctx.getBeanDictionaryClasses();
+       public final List<Class<?>> getBeanDictionary() {
+               return ctx.getBeanDictionary();
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
index efd3766..25c5404 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
@@ -480,8 +480,8 @@ public abstract class BeanTraverseBuilder extends 
BeanContextableBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public BeanTraverseBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public BeanTraverseBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
index b1a07f9..1241cbf 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
@@ -55,9 +55,7 @@ public @interface Bean {
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.Beanp#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary(Object...)}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary_replace(Object...)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#beanDictionary(Class...)}
         * </ul>
         */
        Class<?>[] dictionary() default {};
@@ -426,7 +424,7 @@ public @interface Bean {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
BeanContextBuilder#beanDictionary(Class...)}
         * </ul>
         */
        String typeName() default "";
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
index 37eef19..841b0e8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
@@ -383,9 +383,7 @@ public @interface BeanConfig {
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.Beanp#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary(Object...)}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary_replace(Object...)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#beanDictionary(Class...)}
         *      <li class='link'>{@doc BeanDictionaries}
         * </ul>
         */
@@ -401,9 +399,7 @@ public @interface BeanConfig {
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.Beanp#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary(Object...)}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary_replace(Object...)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#beanDictionary(Class...)}
         * </ul>
         */
        Class<?>[] dictionary_replace() default {};
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 3d54a8f..80ba3db 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
@@ -49,8 +49,8 @@ public class BeanConfigAnnotation {
                        visibility(a.beanConstructorVisibility(), 
"beanConstructorVisibility").ifPresent(x -> b.beanConstructorVisibility(x));
                        visibility(a.beanFieldVisibility(), 
"beanFieldVisibility").ifPresent(x -> b.beanFieldVisibility(x));
                        visibility(a.beanMethodVisibility(), 
"beanMethodVisibility").ifPresent(x -> b.beanMethodVisibility(x));
-                       b.prependTo(BEAN_beanDictionary, a.dictionary());
-                       b.setIfNotEmpty(BEAN_beanDictionary, 
a.dictionary_replace());
+                       classes(a.dictionary()).ifPresent(x -> 
b.beanDictionary(x));
+                       classes(a.dictionary_replace()).ifPresent(x -> { 
b.beanDictionary().clear(); b.beanDictionary(x);});
                        bool(a.beanMapPutReturnsOldValue()).ifPresent(x -> 
b.set(BEAN_beanMapPutReturnsOldValue, x));
                        bool(a.beansRequireDefaultConstructor()).ifPresent(x -> 
b.set(BEAN_beansRequireDefaultConstructor, x));
                        bool(a.beansRequireSerializable()).ifPresent(x -> 
b.set(BEAN_beansRequireSerializable, x));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
index 62e2c28..9ccd524 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
@@ -55,9 +55,7 @@ public @interface Beanp {
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary(Object...)}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#dictionary_replace(Object...)}
-        *      <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
+        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#beanDictionary(Class...)}
         * </ul>
         *
         * <p>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
index 91fa169..0ca8704 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
@@ -318,8 +318,8 @@ public class CsvParserBuilder extends ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public CsvParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public CsvParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
index 81cf040..2cce8ef 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
@@ -330,8 +330,8 @@ public class CsvSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public CsvSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public CsvSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
index a368be2..4d4ee8f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
@@ -829,8 +829,8 @@ public class HtmlDocSerializerBuilder extends 
HtmlStrippedDocSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlDocSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public HtmlDocSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
index 913ff23..7fa9cf9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
@@ -321,8 +321,8 @@ public class HtmlParserBuilder extends XmlParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public HtmlParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
index 6d67f81..446290f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
@@ -499,8 +499,8 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlSchemaSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public HtmlSchemaSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
index ef436b1..0af1c97 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
@@ -718,8 +718,8 @@ public class HtmlSerializerBuilder extends 
XmlSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public HtmlSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
index 7f77660..b2dcbb0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
@@ -319,8 +319,8 @@ public class HtmlStrippedDocSerializerBuilder extends 
HtmlSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlStrippedDocSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public HtmlStrippedDocSerializerBuilder 
beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
index d0befee..7609dbe 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
@@ -317,8 +317,8 @@ public class JsoParserBuilder extends 
InputStreamParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsoParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public JsoParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
index 3b9708f..700d0f8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
@@ -329,8 +329,8 @@ public class JsoSerializerBuilder extends 
OutputStreamSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsoSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public JsoSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
index 0c00cde..129635e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
@@ -358,8 +358,8 @@ public class JsonParserBuilder extends ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsonParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public JsonParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
index 967a488..1d5514e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
@@ -502,8 +502,8 @@ public class JsonSchemaSerializerBuilder extends 
JsonSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsonSchemaSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public JsonSchemaSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
index d2c0541..6df9930 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
@@ -472,8 +472,8 @@ public class JsonSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsonSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public JsonSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
index d5cb3e4..d118be3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
@@ -582,8 +582,8 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsonSchemaGeneratorBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public JsonSchemaGeneratorBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
index b924e2f..4d77b5e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
@@ -317,8 +317,8 @@ public class MsgPackParserBuilder extends 
InputStreamParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public MsgPackParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public MsgPackParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
index 4a4209e..23af04a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
@@ -329,8 +329,8 @@ public class MsgPackSerializerBuilder extends 
OutputStreamSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public MsgPackSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public MsgPackSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
index 18863a3..559f638 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
@@ -432,8 +432,8 @@ public class OpenApiParserBuilder extends UonParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public OpenApiParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public OpenApiParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
index 97d1324..a7f385c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
@@ -455,8 +455,8 @@ public class OpenApiSerializerBuilder extends 
UonSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public OpenApiSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public OpenApiSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
index 7d68ec3..01b8c71 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
@@ -349,8 +349,8 @@ public abstract class InputStreamParserBuilder extends 
ParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public InputStreamParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public InputStreamParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
index ec0176e..378334b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
@@ -622,8 +622,8 @@ public abstract class ParserBuilder extends 
BeanContextableBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public ParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public ParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
index 65f927e..e2928fa 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
@@ -386,8 +386,8 @@ public abstract class ReaderParserBuilder extends 
ParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public ReaderParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public ReaderParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
index 2d50d1d..3d8fbd3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
@@ -323,8 +323,8 @@ public class PlainTextParserBuilder extends 
ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public PlainTextParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public PlainTextParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
index 8a7a330..4caaee9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
@@ -330,8 +330,8 @@ public class PlainTextSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public PlainTextSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public PlainTextSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
index cea5c9d..e9cd852 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
@@ -363,8 +363,8 @@ public abstract class OutputStreamSerializerBuilder extends 
SerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public OutputStreamSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public OutputStreamSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
index e052f37..edc68b8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
@@ -882,8 +882,8 @@ public abstract class SerializerBuilder extends 
BeanTraverseBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public SerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public SerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
index ac4e0ce..96f5bc9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
@@ -596,8 +596,8 @@ public abstract class WriterSerializerBuilder extends 
SerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public WriterSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public WriterSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
index 4210c03..eb07a3a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
@@ -350,8 +350,8 @@ public class SoapXmlSerializerBuilder extends 
XmlSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public SoapXmlSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public SoapXmlSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
index 1caf9cc..7f6abf1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
@@ -382,8 +382,8 @@ public class UonParserBuilder extends ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public UonParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public UonParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
index 829e878..da1e669 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
@@ -473,8 +473,8 @@ public class UonSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public UonSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public UonSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
index 75a0bbf..64d7329 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
@@ -368,8 +368,8 @@ public class UrlEncodingParserBuilder extends 
UonParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public UrlEncodingParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public UrlEncodingParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
index decbb3e..7b6908e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
@@ -370,8 +370,8 @@ public class UrlEncodingSerializerBuilder extends 
UonSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public UrlEncodingSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public UrlEncodingSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/HashKey.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/HashKey.java
index 33f1340..f43d367 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/HashKey.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/HashKey.java
@@ -22,10 +22,10 @@ public class HashKey {
        
//-----------------------------------------------------------------------------------------------------------------
        // Static
        
//-----------------------------------------------------------------------------------------------------------------
-       
+
        /**
         * Static creator.
-        * 
+        *
         * @return A new builder.
         */
        public static Builder create() {
@@ -44,7 +44,7 @@ public class HashKey {
 
                /**
                 * Adds a list of objects to this builder.
-                * 
+                *
                 * @param values The values to add to this list.
                 * @return This object.
                 */
@@ -55,7 +55,7 @@ public class HashKey {
 
                /**
                 * Creates the key.
-                * 
+                *
                 * @return The key.
                 */
                public HashKey build() {
@@ -86,7 +86,7 @@ public class HashKey {
                if (array.length != x.array.length)
                        return false;
                for (int i = 0; i < array.length; i++)
-                       if (! array[i].equals(x.array[i]))
+                       if (! Objects.equals(array[i], x.array[i]))
                                return false;
                return true;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
index 8dc099d..f7088b0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
@@ -498,8 +498,8 @@ public class XmlParserBuilder extends ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public XmlParserBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public XmlParserBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
index 6b0ae35..6afbe80 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
@@ -482,8 +482,8 @@ public class XmlSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public XmlSerializerBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public XmlSerializerBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index 66fd6d8..1474b54 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -4981,8 +4981,8 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public RestClientBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public RestClientBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
index 73a4d2d..1a02472 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
@@ -483,8 +483,8 @@ public class MockRestClientBuilder extends 
RestClientBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public MockRestClientBuilder dictionary(Object...values) {
-               super.dictionary(values);
+       public MockRestClientBuilder beanDictionary(Class<?>...values) {
+               super.beanDictionary(values);
                return this;
        }
 
diff --git a/juneau-utest/src/test/java/org/apache/juneau/BeanMapTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/BeanMapTest.java
index b393486..00ff2f1 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/BeanMapTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/BeanMapTest.java
@@ -37,7 +37,7 @@ public class BeanMapTest {
        JsonSerializer serializer = 
SimpleJsonSerializer.DEFAULT.copy().addBeanTypes().addRootType().build();
 
        BeanContext bc = BeanContext.create()
-                       .dictionary(MyBeanDictionaryMap.class)
+                       .beanDictionary(MyBeanDictionaryMap.class)
                        .build();
        BeanSession session = bc.createSession();
 
@@ -481,7 +481,7 @@ public class BeanMapTest {
                m.put("b", new D2());
                assertEquals("default", t.b.s);
 
-               JsonParser p = JsonParser.create().dictionary(D2.class).build();
+               JsonParser p = 
JsonParser.create().beanDictionary(D2.class).build();
                m.put("lb1", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
                assertEquals(OList.class.getName(), t.lb1.getClass().getName());
                assertEquals(D2.class.getName(), 
t.lb1.get(0).getClass().getName());
@@ -533,7 +533,7 @@ public class BeanMapTest {
                m.put("b", new D2c());
                assertEquals("default", t.b.s);
 
-               JsonParser p = 
JsonParser.create().dictionary(D2c.class).applyAnnotations(D1cConfig.class).build();
+               JsonParser p = 
JsonParser.create().beanDictionary(D2c.class).applyAnnotations(D1cConfig.class).build();
                m.put("lb1", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
                assertEquals(OList.class.getName(), t.lb1.getClass().getName());
                assertEquals(D2c.class.getName(), 
t.lb1.get(0).getClass().getName());
@@ -727,7 +727,7 @@ public class BeanMapTest {
                assertEquals(HEnum.THREE, t7.getEnum2());
 
                // Create instance directly from JSON.
-               JsonParser p = JsonParser.create().dictionary(H.class).build();
+               JsonParser p = 
JsonParser.create().beanDictionary(H.class).build();
                t7 = (H)p.parse("{_type:'H',enum1:'THREE',enum2:'ONE'}", 
Object.class);
                assertEquals("{_type:'H',enum1:'THREE',enum2:'ONE'}", 
serializer.serialize(t7));
                assertEquals(HEnum.THREE, t7.enum1);
diff --git a/juneau-utest/src/test/java/org/apache/juneau/ComboInput.java 
b/juneau-utest/src/test/java/org/apache/juneau/ComboInput.java
index f1c3ce6..4e9b851 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/ComboInput.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/ComboInput.java
@@ -32,11 +32,17 @@ public class ComboInput<T> {
        private Predicate<String> skipTest;
        private Function<T,T> convert;
        private List<Function<T,String>> verify = AList.create();
+       List<Consumer<BeanContextBuilder>> beanContextApplies = AList.create();
        List<Class<?>> swaps = AList.create();
        final Type type;
        String json, jsonT, jsonR, xml, xmlT, xmlR, xmlNs, html, htmlT, htmlR, 
uon, uonT, uonR, urlEncoding,
                urlEncodingT, urlEncodingR, msgPack, msgPackT, rdfXml, rdfXmlT, 
rdfXmlR;
 
+       public ComboInput<T> beanContext(Consumer<BeanContextBuilder> c) {
+               this.beanContextApplies.add(c);
+               return this;
+       }
+
        public ComboInput<T> properties(OMap properties) {
                this.properties = properties;
                return this;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
index b463a8f..bfc2064 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
@@ -18,6 +18,7 @@ import static 
org.apache.juneau.assertions.AssertionPredicates.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import java.lang.reflect.*;
 import java.util.*;
+import java.util.function.*;
 
 import org.apache.juneau.collections.*;
 import org.apache.juneau.html.*;
@@ -60,8 +61,13 @@ public abstract class ComboRoundTripTest {
                Serializer s2 = serializerMap.get(s);
                if (s2 == null) {
                        s2 = applySettings(s);
-                       if (! comboInput.swaps.isEmpty())
-                               s2 = 
s2.copy().swaps(comboInput.swaps.toArray()).build();
+                       if (! (comboInput.swaps.isEmpty() && 
comboInput.beanContextApplies.isEmpty())) {
+                               SerializerBuilder b = s2.copy();
+                               b.swaps(comboInput.swaps.toArray());
+                               for (Consumer<BeanContextBuilder> c : 
(List<Consumer<BeanContextBuilder>>)comboInput.beanContextApplies)
+                                       b.beanContext(c);
+                               s2 = b.build();
+                       }
                        serializerMap.put(s, s2);
                }
                return s2;
@@ -71,8 +77,13 @@ public abstract class ComboRoundTripTest {
                Parser p2 = parserMap.get(p);
                if (p2 == null) {
                        p2 = applySettings(p);
-                       if (! comboInput.swaps.isEmpty())
-                               p2 = 
p2.copy().swaps(comboInput.swaps.toArray()).build();
+                       if (! (comboInput.swaps.isEmpty() && 
comboInput.beanContextApplies.isEmpty())) {
+                               ParserBuilder b = p2.copy();
+                               b.swaps(comboInput.swaps.toArray());
+                               for (Consumer<BeanContextBuilder> c : 
(List<Consumer<BeanContextBuilder>>)comboInput.beanContextApplies)
+                                       b.beanContext(c);
+                               p2 = b.build();
+                       }
                        parserMap.put(p, p2);
                }
                return p2;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
index 2cec434..8a0bde1 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/SerializerPropertiesComboTest.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau;
 
-import static org.apache.juneau.BeanContext.*;
 import static org.apache.juneau.serializer.Serializer.*;
 import static org.apache.juneau.serializer.WriterSerializer.*;
 import static org.apache.juneau.xml.XmlSerializer.*;
@@ -60,7 +59,8 @@ public class SerializerPropertiesComboTest extends 
ComboRoundTripTest {
                                .rdfXml("<rdf:RDF>\n<rdf:Description>\n<jp:a 
rdf:parseType='Resource'>\n<jp:_type>BwT</jp:_type>\n<jp:f>1</jp:f>\n</jp:a>\n</rdf:Description>\n</rdf:RDF>\n")
                                .rdfXmlT("<rdf:RDF>\n<rdf:Description>\n<jp:a 
rdf:parseType='Resource'>\n<jp:t>BwT</jp:t>\n<jp:f>1</jp:f>\n</jp:a>\n</rdf:Description>\n</rdf:RDF>\n")
                                .rdfXmlR("<rdf:RDF>\n  <rdf:Description>\n    
<jp:a rdf:parseType='Resource'>\n      <jp:_type>BwT</jp:_type>\n      
<jp:f>1</jp:f>\n    </jp:a>\n  </rdf:Description>\n</rdf:RDF>\n")
-                               .properties(OMap.of(SERIALIZER_addBeanTypes, 
true, BEAN_beanDictionary, T0.class))
+                               .beanContext(x -> x.beanDictionary(T0.class))
+                               .properties(OMap.of(SERIALIZER_addBeanTypes, 
true))
                        },
                        {       /* 1 */
                                new ComboInput<>(
@@ -89,7 +89,8 @@ public class SerializerPropertiesComboTest extends 
ComboRoundTripTest {
                                
.rdfXml("<rdf:RDF>\n<rdf:Description>\n<jp:_type>BwT</jp:_type>\n<jp:f>1</jp:f>\n</rdf:Description>\n</rdf:RDF>\n")
                                
.rdfXmlT("<rdf:RDF>\n<rdf:Description>\n<jp:t>BwT</jp:t>\n<jp:f>1</jp:f>\n</rdf:Description>\n</rdf:RDF>\n")
                                .rdfXmlR("<rdf:RDF>\n  <rdf:Description>\n    
<jp:_type>BwT</jp:_type>\n    <jp:f>1</jp:f>\n  
</rdf:Description>\n</rdf:RDF>\n")
-                               .properties(OMap.of(SERIALIZER_addRootType, 
true, BEAN_beanDictionary, T0.class))
+                               .beanContext(x -> x.beanDictionary(T0.class))
+                               .properties(OMap.of(SERIALIZER_addRootType, 
true))
                        },
                        {       /* 2 */
                                new ComboInput<>(
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
index 0f526eb..0d24e26 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
@@ -199,8 +199,8 @@ public abstract class RoundTripTest {
                                        p.implClass(e.getKey(), e.getValue());
                        }
                }
-               this.s = 
s.swaps(getPojoSwaps()).dictionary((Object[])getDictionary()).add(getProperties()).build();
-               this.p = p == null ? null : 
p.swaps(getPojoSwaps()).dictionary((Object[])getDictionary()).add(getProperties()).build();
+               this.s = 
s.swaps(getPojoSwaps()).beanDictionary(getDictionary()).add(getProperties()).build();
+               this.p = p == null ? null : 
p.swaps(getPojoSwaps()).beanDictionary(getDictionary()).add(getProperties()).build();
                this.validateXmlWhitespace = (flags & CHECK_XML_WHITESPACE) > 0;
                this.validateXml = (flags & VALIDATE_XML) > 0;
                this.returnOriginalObject = (flags & RETURN_ORIGINAL_OBJECT) > 
0;
@@ -261,10 +261,10 @@ public abstract class RoundTripTest {
                        p = p.copy().swaps(c).build();
        }
 
-       protected void dictionary(Object...c) {
-               s = s.copy().dictionary(c).build();
+       protected void dictionary(Class<?>...c) {
+               s = s.copy().beanDictionary(c).build();
                if (p != null)
-                       p = p.copy().dictionary(c).build();
+                       p = p.copy().beanDictionary(c).build();
        }
 
        protected void applyAnnotations(Class<?>...fromClasses) {
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
index e7e936e..8dd04de 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
@@ -150,7 +150,7 @@ public class BeanConfigAnnotation_Test {
 
                check("PRIVATE", bc.getBeanClassVisibility());
                check("PRIVATE", bc.getBeanConstructorVisibility());
-               check("A1,A2,A3", bc.getBeanDictionaryClasses());
+               check("A1,A2,A3", bc.getBeanDictionary());
                check("PRIVATE", bc.getBeanFieldVisibility());
                check("true", bc.isBeanMapPutReturnsOldValue());
                check("PRIVATE", bc.getBeanMethodVisibility());
@@ -194,7 +194,7 @@ public class BeanConfigAnnotation_Test {
                BeanContext bc = js.getBeanContext();
                check("PUBLIC", bc.getBeanClassVisibility());
                check("PUBLIC", bc.getBeanConstructorVisibility());
-               check("", bc.getBeanDictionaryClasses());
+               check("", bc.getBeanDictionary());
                check("PUBLIC", bc.getBeanFieldVisibility());
                check("false", bc.isBeanMapPutReturnsOldValue());
                check("PUBLIC", bc.getBeanMethodVisibility());
@@ -240,7 +240,7 @@ public class BeanConfigAnnotation_Test {
                BeanContext bc = js.getBeanContext();
                check("PUBLIC", bc.getBeanClassVisibility());
                check("PUBLIC", bc.getBeanConstructorVisibility());
-               check("", bc.getBeanDictionaryClasses());
+               check("", bc.getBeanDictionary());
                check("PUBLIC", bc.getBeanFieldVisibility());
                check("false", bc.isBeanMapPutReturnsOldValue());
                check("PUBLIC", bc.getBeanMethodVisibility());
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/html/CommonParser_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/html/CommonParser_Test.java
index 3537b10..74104d3 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/html/CommonParser_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/html/CommonParser_Test.java
@@ -32,7 +32,7 @@ public class CommonParser_Test {
        
//====================================================================================================
        @Test
        public void testFromSerializer() throws Exception {
-               ReaderParser p = 
HtmlParser.create().dictionary(A1.class).build();
+               ReaderParser p = 
HtmlParser.create().beanDictionary(A1.class).build();
                Map m = null;
                String in;
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java
index d1eedb8..bfdd539 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java
@@ -32,7 +32,7 @@ public class CommonParserTest {
        
//====================================================================================================
        @Test
        public void testFromSerializer() throws Exception {
-               ReaderParser p = 
JsonParser.create().dictionary(A1.class).build();
+               ReaderParser p = 
JsonParser.create().beanDictionary(A1.class).build();
 
                Map m = null;
                m = (Map)p.parse("{a:1}", Object.class);
@@ -82,7 +82,7 @@ public class CommonParserTest {
                tl.add(new A3("name0","value0"));
                tl.add(new A3("name1","value1"));
                b.list = tl;
-               String json = 
JsonSerializer.create().addBeanTypes().addRootType().dictionary(A1.class).build().serialize(b);
+               String json = 
JsonSerializer.create().addBeanTypes().addRootType().beanDictionary(A1.class).build().serialize(b);
                b = (A1)p.parse(json, Object.class);
                assertEquals("value1", b.list.get(1).value);
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
index e024d86..abaaa56 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
@@ -570,11 +570,11 @@ public class RestClient_Config_BeanContext_Test {
 
        @Test
        public void a15_dictionary() throws Exception {
-               Object o = 
client().dictionary(A15a.class,A15b.class).addRootType().addBeanTypes().build().post("/echoBody",A15a.get()).run().cacheBody().assertBody().contains("{_type:'foo',foo:'1'}").getBody().asType(Object.class);;
+               Object o = 
client().beanDictionary(A15a.class,A15b.class).addRootType().addBeanTypes().build().post("/echoBody",A15a.get()).run().cacheBody().assertBody().contains("{_type:'foo',foo:'1'}").getBody().asType(Object.class);;
                assertTrue(o instanceof A15a);
 
                OMap m = OMap.of("x",A15a.get(),"y",A15b.get());
-               m = 
client().dictionary(A15a.class,A15b.class).addRootType().addBeanTypes().build().post("/echoBody",m).run().cacheBody().assertBody().is("{x:{_type:'foo',foo:'1'},y:{_type:'bar',foo:'2'}}").getBody().asType(OMap.class);;
+               m = 
client().beanDictionary(A15a.class,A15b.class).addRootType().addBeanTypes().build().post("/echoBody",m).run().cacheBody().assertBody().is("{x:{_type:'foo',foo:'1'},y:{_type:'bar',foo:'2'}}").getBody().asType(OMap.class);;
                assertTrue(m.get("x") instanceof A15a);
                assertTrue(m.get("y") instanceof A15b);
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java
index 044b907..54a72ee 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java
@@ -27,7 +27,7 @@ import org.junit.*;
 @FixMethodOrder(NAME_ASCENDING)
 public class CommonParser_UonTest {
 
-       ReaderParser p = UonParser.create().dictionary(A1.class).build();
+       ReaderParser p = UonParser.create().beanDictionary(A1.class).build();
        ReaderParser pe = UonParser.DEFAULT_DECODING;
 
        
//====================================================================================================
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
index 027b6fd..d955671 100755
--- 
a/juneau-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
@@ -29,7 +29,7 @@ import org.junit.*;
 @FixMethodOrder(NAME_ASCENDING)
 public class CommonParser_UrlEncodingTest {
 
-       ReaderParser p = 
UrlEncodingParser.create().dictionary(A1.class).build();
+       ReaderParser p = 
UrlEncodingParser.create().beanDictionary(A1.class).build();
 
        
//====================================================================================================
        // testFromSerializer
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java
index 8106a61..59cba4f 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java
@@ -98,7 +98,7 @@ public class PojoRestTest {
                assertEquals(expectedValue, s);
 
                // Parse it back to Java objects.
-               p = 
(Person)JsonParser.create().dictionary(Person.class).build().parse(s, 
Object.class);
+               p = 
(Person)JsonParser.create().beanDictionary(Person.class).build().parse(s, 
Object.class);
                expectedValue = "city B";
                s = p.addresses[1].city;
                assertEquals(expectedValue, s);

Reply via email to