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

commit 0ea7b4f807967b99b92c85da8fb28ddcfecd8b11
Author: JamesBognar <[email protected]>
AuthorDate: Sat Sep 25 18:57:05 2021 -0400

    Context API refactoring.
---
 .../main/java/org/apache/juneau/BeanContext.java   | 147 ++-------------------
 .../java/org/apache/juneau/BeanContextBuilder.java |  39 ++++--
 .../org/apache/juneau/BeanContextableBuilder.java  |  76 +++++------
 .../main/java/org/apache/juneau/BeanSession.java   |  30 ++---
 .../java/org/apache/juneau/BeanSessionArgs.java    |  33 +++--
 .../juneau/annotation/BeanConfigAnnotation.java    |   8 +-
 6 files changed, 112 insertions(+), 221 deletions(-)

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 5fb65f2..25ac462 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
@@ -156,98 +156,6 @@ public class BeanContext extends Context {
        static final String PREFIX = "BeanContext";
 
        /**
-        * Configuration property:  Bean type property name.
-        *
-        * <p>
-        * This specifies the name of the bean property used to store the 
dictionary name of a bean type so that the
-        * parser knows the data type to reconstruct.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.BeanContext#BEAN_typePropertyName BEAN_typePropertyName}
-        *      <li><b>Name:</b>  <js>"BeanContext.typePropertyName.s"</js>
-        *      <li><b>Data type:</b>  <c>String</c>
-        *      <li><b>System property:</b>  <c>BeanContext.typePropertyName</c>
-        *      <li><b>Environment variable:</b>  
<c>BEANCONTEXT_TYPEPROPERTYNAME</c>
-        *      <li><b>Default:</b>  <js>"_type"</js>
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#typePropertyName()}
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#typePropertyName()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#typePropertyName(String)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String BEAN_typePropertyName = PREFIX + 
".typePropertyName.s";
-
-       /**
-        * Configuration property:  Locale.
-        *
-        * <p>
-        * Specifies the default locale for serializer and parser sessions when 
not specified via {@link BeanSessionArgs#locale(Locale)}.
-        * Typically used for POJO swaps that need to deal with locales such as 
swaps that convert <l>Date</l> and <l>Calendar</l>
-        * objects to strings by accessing it via the session passed into the 
{@link PojoSwap#swap(BeanSession, Object)} and
-        * {@link PojoSwap#unswap(BeanSession, Object, ClassMeta, String)} 
methods.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.BeanContext#BEAN_locale CONTEXT_locale}
-        *      <li><b>Name:</b>  <js>"Context.locale.s"</js>
-        *      <li><b>Data type:</b>  {@link java.util.Locale}
-        *      <li><b>System property:</b>  <c>Context.locale</c>
-        *      <li><b>Environment variable:</b>  <c>CONTEXT_LOCALE</c>
-        *      <li><b>Default:</b>  <jk>null</jk> (defaults to {@link 
java.util.Locale#getDefault()})
-        *      <li><b>Session property:</b>  <jk>true</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#locale()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#locale(Locale)}
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanSessionArgs#locale(Locale)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String BEAN_locale = PREFIX + ".locale.s";
-
-       /**
-        * Configuration property:  Media type.
-        *
-        * <p>
-        * Specifies the default media type for serializer and parser sessions 
when not specified via {@link BeanSessionArgs#mediaType(MediaType)}.
-        * Typically used for POJO swaps that need to serialize the same POJO 
classes differently depending on
-        * the specific requested media type.   For example, a swap could 
handle a request for media types <js>"application/json"</js>
-        * and <js>"application/json+foo"</js> slightly differently even though 
they're both being handled by the same JSON
-        * serializer or parser.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.BeanContext#BEAN_mediaType CONTEXT_mediaType}
-        *      <li><b>Name:</b>  <js>"Context.mediaType.s"</js>
-        *      <li><b>Data type:</b>  {@link 
org.apache.juneau.http.header.MediaType}
-        *      <li><b>System property:</b>  <c>Context.mediaType</c>
-        *      <li><b>Environment variable:</b>  <c>CONTEXT_MEDIATYPE</c>
-        *      <li><b>Default:</b>  <jk>null</jk>
-        *      <li><b>Session property:</b>  <jk>true</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#mediaType()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#mediaType(MediaType)}
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanSessionArgs#mediaType(MediaType)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String BEAN_mediaType = PREFIX + ".mediaType.s";
-
-       /**
         * Configuration property:  Bean class exclusions.
         *
         * <p>
@@ -367,37 +275,6 @@ public class BeanContext extends Context {
         */
        public static final String BEAN_swaps = PREFIX + ".swaps.lo";
 
-       /**
-        * Configuration property:  Time zone.
-        *
-        * <p>
-        * Specifies the default time zone for serializer and parser sessions 
when not specified via {@link BeanSessionArgs#timeZone(TimeZone)}.
-        * Typically used for POJO swaps that need to deal with timezones such 
as swaps that convert <l>Date</l> and <l>Calendar</l>
-        * objects to strings by accessing it via the session passed into the 
{@link PojoSwap#swap(BeanSession, Object)} and
-        * {@link PojoSwap#unswap(BeanSession, Object, ClassMeta, String)} 
methods.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.BeanContext#BEAN_timeZone CONTEXT_timeZone}
-        *      <li><b>Name:</b>  <js>"Context.timeZone.s"</js>
-        *      <li><b>Data type:</b>  {@link java.util.TimeZone}
-        *      <li><b>System property:</b>  <c>Context.timeZone</c>
-        *      <li><b>Environment variable:</b>  <c>CONTEXT_TIMEZONE</c>
-        *      <li><b>Default:</b>  <jk>null</jk>
-        *      <li><b>Session property:</b>  <jk>true</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#timeZone()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#timeZone(TimeZone)}
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanSessionArgs#timeZone(TimeZone)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String BEAN_timeZone = PREFIX + ".timeZone.s";
-
        /*
         * The default package pattern exclusion list.
         * Any beans in packages in this list will not be considered beans.
@@ -467,11 +344,11 @@ public class BeanContext extends Context {
        private final PojoSwap<?,?>[] swaps;
        private final BeanRegistry beanRegistry;
        private final PropertyNamer propertyNamer;
-       private final String typePropertyName;
+       final String typePropertyName;
 
-       private final Locale locale;
-       private final TimeZone timeZone;
-       private final MediaType mediaType;
+       final Locale locale;
+       final TimeZone timeZone;
+       final MediaType mediaType;
 
        final Map<Class,ClassMeta> cmCache;
        private final ClassMeta<Object> cmObject;  // Reusable ClassMeta that 
represents general Objects.
@@ -510,7 +387,10 @@ public class BeanContext extends Context {
                useJavaBeanIntrospector = builder.useJavaBeanIntrospector;
                sortProperties = builder.sortProperties;
                findFluentSetters = builder.findFluentSetters;
-               typePropertyName = 
cp.getString(BEAN_typePropertyName).orElse("_type");
+               typePropertyName = 
ofNullable(builder.typePropertyName).orElse("_type");
+               locale = 
ofNullable(builder.locale).orElseGet(()->Locale.getDefault());
+               timeZone = builder.timeZone;
+               mediaType = builder.mediaType;
 
                beanConstructorVisibility = builder.beanConstructorVisibility;
                beanClassVisibility = builder.beanClassVisibility;
@@ -521,9 +401,6 @@ public class BeanContext extends Context {
 
                propertyNamer = cp.getInstance(BEAN_propertyNamer, 
PropertyNamer.class).orElseGet(BasicPropertyNamer::new);
 
-               locale = cp.getInstance(BEAN_locale, 
Locale.class).orElseGet(()->Locale.getDefault());
-               timeZone = cp.getInstance(BEAN_timeZone, 
TimeZone.class).orElse(null);
-               mediaType = cp.getInstance(BEAN_mediaType, 
MediaType.class).orElse(null);
 
                List<String> l1 = new LinkedList<>();
                List<String> l2 = new LinkedList<>();
@@ -1279,7 +1156,7 @@ public class BeanContext extends Context {
        /**
         * Bean type property name.
         *
-        * @see #BEAN_typePropertyName
+        * @see BeanContextBuilder#typePropertyName(String)
         * @return
         * The name of the bean property used to store the dictionary name of a 
bean type so that the parser knows the data type to reconstruct.
         */
@@ -1471,7 +1348,7 @@ public class BeanContext extends Context {
        /**
         * Locale.
         *
-        * @see #BEAN_locale
+        * @see BeanContextBuilder#locale(Locale)
         * @return
         *      The default locale for serializer and parser sessions.
         */
@@ -1482,7 +1359,7 @@ public class BeanContext extends Context {
        /**
         * Media type.
         *
-        * @see #BEAN_mediaType
+        * @see BeanContextBuilder#mediaType(MediaType)
         * @return
         *      The default media type value for serializer and parser sessions.
         */
@@ -1493,7 +1370,7 @@ public class BeanContext extends Context {
        /**
         * Time zone.
         *
-        * @see #BEAN_timeZone
+        * @see BeanContextBuilder#timeZone(TimeZone)
         * @return
         *      The default timezone for serializer and parser sessions.
         */
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 a673681..9a40705 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
@@ -71,6 +71,10 @@ public class BeanContextBuilder extends ContextBuilder {
                beansRequireSettersForGetters, disableIgnoreTransientFields, 
disableIgnoreUnknownNullBeanProperties, disableIgnoreMissingSetters,
                disableInterfaceProxies, findFluentSetters, 
ignoreInvocationExceptionsOnGetters, ignoreInvocationExceptionsOnSetters,
                ignoreUnknownBeanProperties, sortProperties, useEnumNames, 
useJavaBeanIntrospector;
+       String typePropertyName;
+       MediaType mediaType;
+       Locale locale;
+       TimeZone timeZone;
 
        /**
         * Constructor.
@@ -100,6 +104,10 @@ public class BeanContextBuilder extends ContextBuilder {
                sortProperties = env("BeanContext.sortProperties", false);
                useEnumNames = env("BeanContext.useEnumNames", false);
                useJavaBeanIntrospector = 
env("BeanContext.useJavaBeanIntrospector", false);
+               typePropertyName = env("BeanContext.typePropertyName", "_type");
+               mediaType = env("BeanContext.mediaType", (MediaType)null);
+               timeZone = env("BeanContext.timeZone", (TimeZone)null);
+               locale = env("BeanContext.locale", Locale.getDefault());
        }
 
        /**
@@ -130,6 +138,10 @@ public class BeanContextBuilder extends ContextBuilder {
                sortProperties = copyFrom.sortProperties;
                useEnumNames = copyFrom.useEnumNames;
                useJavaBeanIntrospector = copyFrom.useJavaBeanIntrospector;
+               typePropertyName = copyFrom.typePropertyName;
+               mediaType = copyFrom.mediaType;
+               timeZone = copyFrom.timeZone;
+               locale = copyFrom.locale;
        }
 
        /**
@@ -160,6 +172,10 @@ public class BeanContextBuilder extends ContextBuilder {
                sortProperties = copyFrom.sortProperties;
                useEnumNames = copyFrom.useEnumNames;
                useJavaBeanIntrospector = copyFrom.useJavaBeanIntrospector;
+               typePropertyName = copyFrom.typePropertyName;
+               mediaType = copyFrom.mediaType;
+               timeZone = copyFrom.timeZone;
+               locale = copyFrom.locale;
        }
 
        @Override /* ContextBuilder */
@@ -195,7 +211,11 @@ public class BeanContextBuilder extends ContextBuilder {
                                sortProperties,
                                useEnumNames,
                                useJavaBeanIntrospector
-                       )
+                       ),
+                       typePropertyName,
+                       mediaType,
+                       timeZone,
+                       locale
                );
                BeanContext bc = CACHE.get(key);
                if (bc == null) {
@@ -2308,7 +2328,6 @@ public class BeanContextBuilder extends ContextBuilder {
         * <ul class='seealso'>
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#locale()}
         *      <li class='jm'>{@link 
org.apache.juneau.BeanSessionArgs#locale(Locale)}
-        *      <li class='jf'>{@link BeanContext#BEAN_locale}
         * </ul>
         *
         * @param value The new value for this property.
@@ -2316,7 +2335,8 @@ public class BeanContextBuilder extends ContextBuilder {
         */
        @FluentSetter
        public BeanContextBuilder locale(Locale value) {
-               return set(BEAN_locale, value);
+               locale = value;
+               return this;
        }
 
        /**
@@ -2359,7 +2379,6 @@ public class BeanContextBuilder extends ContextBuilder {
         * <ul class='seealso'>
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#mediaType()}
         *      <li class='jm'>{@link 
org.apache.juneau.BeanSessionArgs#mediaType(MediaType)}
-        *      <li class='jf'>{@link BeanContext#BEAN_mediaType}
         * </ul>
         *
         * @param value The new value for this property.
@@ -2367,7 +2386,8 @@ public class BeanContextBuilder extends ContextBuilder {
         */
        @FluentSetter
        public BeanContextBuilder mediaType(MediaType value) {
-               return set(BEAN_mediaType, value);
+               mediaType = value;
+               return this;
        }
 
        /**
@@ -2864,7 +2884,6 @@ public class BeanContextBuilder extends ContextBuilder {
         * <ul class='seealso'>
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#timeZone()}
         *      <li class='jm'>{@link 
org.apache.juneau.BeanSessionArgs#timeZone(TimeZone)}
-        *      <li class='jf'>{@link BeanContext#BEAN_timeZone}
         * </ul>
         *
         * @param value The new value for this property.
@@ -2872,7 +2891,8 @@ public class BeanContextBuilder extends ContextBuilder {
         */
        @FluentSetter
        public BeanContextBuilder timeZone(TimeZone value) {
-               return set(BEAN_timeZone, value);
+               timeZone = value;
+               return this;
        }
 
        /**
@@ -2965,7 +2985,6 @@ public class BeanContextBuilder extends ContextBuilder {
         * <ul class='seealso'>
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#typePropertyName()}
         *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#typePropertyName()}
-        *      <li class='jf'>{@link BeanContext#BEAN_typePropertyName}
         * </ul>
         *
         * @param value
@@ -2975,7 +2994,8 @@ public class BeanContextBuilder extends ContextBuilder {
         */
        @FluentSetter
        public BeanContextBuilder typePropertyName(String value) {
-               return set(BEAN_typePropertyName, value);
+               typePropertyName = value;
+               return this;
        }
 
        /**
@@ -3010,7 +3030,6 @@ public class BeanContextBuilder extends ContextBuilder {
         *
         * <ul class='seealso'>
         *      <li class='ja'>{@link Bean#typePropertyName() 
Bean(typePropertyName)}
-        *      <li class='jf'>{@link BeanContext#BEAN_typePropertyName}
         * </ul>
         *
         * @param on The class the type property name applies to.
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 e6c2842..5af5fb4 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
@@ -167,7 +167,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#beanClassVisibility()}
+        *      <li class='ja'>{@link BeanConfig#beanClassVisibility()}
         * </ul>
         *
         * @param value
@@ -216,7 +216,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#beanConstructorVisibility()}
+        *      <li class='ja'>{@link BeanConfig#beanConstructorVisibility()}
         * </ul>
         *
         * @param value
@@ -274,7 +274,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#beanFieldVisibility()}
+        *      <li class='ja'>{@link BeanConfig#beanFieldVisibility()}
         * </ul>
         *
         * @param value
@@ -368,7 +368,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#beanMapPutReturnsOldValue()}
+        *      <li class='ja'>{@link BeanConfig#beanMapPutReturnsOldValue()}
         *      <li class='jm'>{@link 
BeanContextBuilder#beanMapPutReturnsOldValue()}
         * </ul>
         *
@@ -414,7 +414,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#beanMethodVisibility()}
+        *      <li class='ja'>{@link BeanConfig#beanMethodVisibility()}
         * </ul>
         *
         * @param value
@@ -470,7 +470,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#beansRequireDefaultConstructor()}
+        *      <li class='ja'>{@link 
BeanConfig#beansRequireDefaultConstructor()}
         *      <li class='jm'>{@link 
BeanContextBuilder#beansRequireDefaultConstructor()}
         * </ul>
         *
@@ -519,7 +519,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#beansRequireSerializable()}
+        *      <li class='ja'>{@link BeanConfig#beansRequireSerializable()}
         *      <li class='jm'>{@link 
BeanContextBuilder#beansRequireSerializable()}
         * </ul>
         *
@@ -566,7 +566,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#beansRequireSettersForGetters()}
+        *      <li class='ja'>{@link 
BeanConfig#beansRequireSettersForGetters()}
         *      <li class='jm'>{@link 
BeanContextBuilder#beansRequireSettersForGetters()}
         * </ul>
         *
@@ -610,7 +610,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#disableBeansRequireSomeProperties()}
+        *      <li class='ja'>{@link 
BeanConfig#disableBeansRequireSomeProperties()}
         *      <li class='jm'>{@link 
BeanContextBuilder#disableBeansRequireSomeProperties()}
         * </ul>
         *
@@ -1392,11 +1392,11 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <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#beanDictionary(Class...)}
+        *      <li class='ja'>{@link Bean#dictionary()}
+        *      <li class='ja'>{@link Beanp#dictionary()}
+        *      <li class='ja'>{@link BeanConfig#dictionary()}
+        *      <li class='ja'>{@link BeanConfig#dictionary_replace()}
+        *      <li class='jm'>{@link 
BeanContextableBuilder#beanDictionary(Class...)}
         * </ul>
         *
         * @param values
@@ -1595,8 +1595,8 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#findFluentSetters()}
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#findFluentSetters()}
+        *      <li class='ja'>{@link Bean#findFluentSetters()}
+        *      <li class='ja'>{@link BeanConfig#findFluentSetters()}
         *      <li class='jm'>{@link BeanContextBuilder#findFluentSetters()}
         * </ul>
         *
@@ -1676,7 +1676,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#ignoreInvocationExceptionsOnGetters()}
+        *      <li class='ja'>{@link 
BeanConfig#ignoreInvocationExceptionsOnGetters()}
         *      <li class='jm'>{@link 
BeanContextBuilder#ignoreInvocationExceptionsOnGetters()}
         * </ul>
         *
@@ -1715,7 +1715,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#ignoreInvocationExceptionsOnSetters()}
+        *      <li class='ja'>{@link 
BeanConfig#ignoreInvocationExceptionsOnSetters()}
         *      <li class='jm'>{@link 
BeanContextBuilder#ignoreInvocationExceptionsOnSetters()}
         * </ul>
         *
@@ -1758,7 +1758,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#disableIgnoreMissingSetters()}
+        *      <li class='ja'>{@link BeanConfig#disableIgnoreMissingSetters()}
         *      <li class='jm'>{@link 
BeanContextBuilder#disableIgnoreMissingSetters()}
         * </ul>
         *
@@ -1798,7 +1798,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#disableIgnoreTransientFields()}
+        *      <li class='ja'>{@link BeanConfig#disableIgnoreTransientFields()}
         *      <li class='jm'>{@link 
BeanContextBuilder#disableIgnoreTransientFields()}
         * </ul>
         *
@@ -1835,7 +1835,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#ignoreUnknownBeanProperties()}
+        *      <li class='ja'>{@link BeanConfig#ignoreUnknownBeanProperties()}
         *      <li class='jm'>{@link 
BeanContextBuilder#ignoreUnknownBeanProperties()}
         * </ul>
         *
@@ -1872,7 +1872,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#disableIgnoreUnknownNullBeanProperties()}
+        *      <li class='ja'>{@link 
BeanConfig#disableIgnoreUnknownNullBeanProperties()}
         *      <li class='jm'>{@link 
BeanContextBuilder#disableIgnoreUnknownNullBeanProperties()}
         * </ul>
         *
@@ -2095,9 +2095,9 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#locale()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanSessionArgs#locale(Locale)}
-        *      <li class='jf'>{@link BeanContext#BEAN_locale}
+        *      <li class='ja'>{@link BeanConfig#locale()}
+        *      <li class='jm'>{@link BeanSessionArgs#locale(Locale)}
+        *      <li class='jm'>{@link BeanContextBuilder#locale(Locale)}
         * </ul>
         *
         * @param value The new value for this property.
@@ -2147,9 +2147,9 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#mediaType()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanSessionArgs#mediaType(MediaType)}
-        *      <li class='jf'>{@link BeanContext#BEAN_mediaType}
+        *      <li class='ja'>{@link BeanConfig#mediaType()}
+        *      <li class='jm'>{@link BeanSessionArgs#mediaType(MediaType)}
+        *      <li class='jm'>{@link BeanContextBuilder#mediaType(MediaType)}
         * </ul>
         *
         * @param value The new value for this property.
@@ -2201,8 +2201,8 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link org.apache.juneau.annotation.BeanIgnore}
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#notBeanClasses()}
+        *      <li class='ja'>{@link BeanIgnore}
+        *      <li class='ja'>{@link BeanConfig#notBeanClasses()}
         *      <li class='jf'>{@link BeanContext#BEAN_notBeanClasses}
         * </ul>
         *
@@ -2638,9 +2638,9 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#timeZone()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanSessionArgs#timeZone(TimeZone)}
-        *      <li class='jf'>{@link BeanContext#BEAN_timeZone}
+        *      <li class='ja'>{@link BeanConfig#timeZone()}
+        *      <li class='jm'>{@link BeanSessionArgs#timeZone(TimeZone)}
+        *      <li class='jm'>{@link BeanContextBuilder#timeZone(TimeZone)}
         * </ul>
         *
         * @param value The new value for this property.
@@ -2741,9 +2741,9 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#typePropertyName()}
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#typePropertyName()}
-        *      <li class='jf'>{@link BeanContext#BEAN_typePropertyName}
+        *      <li class='ja'>{@link Bean#typePropertyName()}
+        *      <li class='ja'>{@link BeanConfig#typePropertyName()}
+        *      <li class='jm'>{@link 
BeanContextBuilder#typePropertyName(String)}
         * </ul>
         *
         * @param value
@@ -2789,7 +2789,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         *
         * <ul class='seealso'>
         *      <li class='ja'>{@link Bean#typePropertyName() 
Bean(typePropertyName)}
-        *      <li class='jf'>{@link BeanContext#BEAN_typePropertyName}
+        *      <li class='jm'>{@link 
BeanContextBuilder#typePropertyName(String)}
         * </ul>
         *
         * @param on The class the type property name applies to.
@@ -2859,7 +2859,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * Otherwise, throws a {@link BeanRuntimeException}.
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#disableInterfaceProxies()}
+        *      <li class='ja'>{@link BeanConfig#disableInterfaceProxies()}
         *      <li class='jm'>{@link 
BeanContextBuilder#disableInterfaceProxies()}
         * </ul>
         *
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 a25f948..7ff36ee 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
@@ -12,11 +12,11 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau;
 
-import static org.apache.juneau.BeanContext.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.IOUtils.*;
+import static java.util.Optional.*;
 
 import java.io.*;
 import java.lang.reflect.*;
@@ -71,10 +71,9 @@ public class BeanSession extends Session {
                this.ctx = ctx;
                schema = args.schema;
                sbStack = args.unmodifiable ? null : new Stack<>();
-               SessionProperties sp = args.properties;
-               locale = sp.get(BEAN_locale, 
Locale.class).orElse(ctx.getDefaultLocale());
-               timeZone = sp.get(BEAN_timeZone, 
TimeZone.class).orElse(ctx.getDefaultTimeZone());
-               mediaType = sp.get(BEAN_mediaType, 
MediaType.class).orElse(ctx.getDefaultMediaType());
+               locale = ofNullable(args.locale).orElse(ctx.getDefaultLocale());
+               timeZone = 
ofNullable(args.timeZone).orElse(ctx.getDefaultTimeZone());
+               mediaType = 
ofNullable(args.mediaType).orElse(ctx.getDefaultMediaType());
        }
 
        /**
@@ -1083,12 +1082,11 @@ public class BeanSession extends Session {
         * The locale is determined in the following order:
         * <ol>
         *      <li><c>locale</c> parameter passed in through constructor.
-        *      <li>{@link BeanContext#BEAN_locale} entry in parameter passed 
in through constructor.
-        *      <li>{@link BeanContext#BEAN_locale} setting on bean context.
+        *      <li>{@link BeanContextBuilder#locale(Locale)} setting on bean 
context.
         *      <li>Locale returned by {@link Locale#getDefault()}.
         * </ol>
         *
-        * @see BeanContext#BEAN_locale
+        * @see BeanContextBuilder#locale(Locale)
         * @return The session locale.
         */
        public Locale getLocale() {
@@ -1101,7 +1099,7 @@ public class BeanSession extends Session {
         * <p>
         * For example, <js>"application/json"</js>.
         *
-        * @see BeanContext#BEAN_mediaType
+        * @see BeanContextBuilder#mediaType(MediaType)
         * @return The media type for this session, or <jk>null</jk> if not 
specified.
         */
        public final MediaType getMediaType() {
@@ -1109,7 +1107,7 @@ public class BeanSession extends Session {
        }
 
        /**
-        * Returns the type property name as defined by {@link 
BeanContext#BEAN_typePropertyName}.
+        * Returns the type property name as defined by {@link 
BeanContextBuilder#typePropertyName(String)}.
         *
         * @param cm
         *      The class meta of the type we're trying to resolve the type 
name for.
@@ -1365,7 +1363,7 @@ public class BeanSession extends Session {
        /**
         * Configuration property:  Bean type property name.
         *
-        * @see BeanContext#BEAN_typePropertyName
+        * @see BeanContextBuilder#typePropertyName(String)
         * @return
         *      The name of the bean property used to store the dictionary name 
of a bean type so that the parser knows the data type to reconstruct.
         */
@@ -1516,11 +1514,10 @@ public class BeanSession extends Session {
         * The timezone is determined in the following order:
         * <ol>
         *      <li><c>timeZone</c> parameter passed in through constructor.
-        *      <li>{@link BeanContext#BEAN_timeZone} entry in parameter passed 
in through constructor.
-        *      <li>{@link BeanContext#BEAN_timeZone} setting on bean context.
+        *      <li>{@link BeanContextBuilder#timeZone(TimeZone)} setting on 
bean context.
         * </ol>
         *
-        * @see BeanContext#BEAN_timeZone
+        * @see BeanContextBuilder#timeZone(TimeZone)
         * @return The session timezone, or <jk>null</jk> if timezone not 
specified.
         */
        public final TimeZone getTimeZone() {
@@ -1534,11 +1531,10 @@ public class BeanSession extends Session {
         * The timezone is determined in the following order:
         * <ol>
         *      <li><c>timeZone</c> parameter passed in through constructor.
-        *      <li>{@link BeanContext#BEAN_timeZone} entry in parameter passed 
in through constructor.
-        *      <li>{@link BeanContext#BEAN_timeZone} setting on bean context.
+        *      <li>{@link BeanContextBuilder#timeZone(TimeZone)} setting on 
bean context.
         * </ol>
         *
-        * @see BeanContext#BEAN_timeZone
+        * @see BeanContextBuilder#timeZone(TimeZone)
         * @return The session timezone, or the system timezone if not 
specified.  Never <jk>null</jk>.
         */
        public final ZoneId getTimeZoneId() {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
index 8754c08..993d675 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
@@ -12,10 +12,9 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau;
 
-import static org.apache.juneau.BeanContext.*;
-
 import java.util.*;
 
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.http.header.*;
 import org.apache.juneau.httppart.*;
@@ -33,6 +32,9 @@ public class BeanSessionArgs extends SessionArgs {
        public static final BeanSessionArgs DEFAULT = new BeanSessionArgs();
 
        HttpPartSchema schema;
+       TimeZone timeZone;
+       Locale locale;
+       MediaType mediaType;
 
        /**
         * Constructor
@@ -59,12 +61,11 @@ public class BeanSessionArgs extends SessionArgs {
         * Specifies the default locale for serializer and parser sessions.
         *
         * <p>
-        * If not specified, defaults to {@link BeanContext#BEAN_locale}.
+        * If not specified, defaults to {@link 
BeanContextBuilder#locale(Locale)}.
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#locale()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#locale(Locale)}
-        *      <li class='jf'>{@link BeanContext#BEAN_locale}
+        *      <li class='ja'>{@link BeanConfig#locale()}
+        *      <li class='jm'>{@link BeanContextBuilder#locale(Locale)}
         * </ul>
         *
         * @param value
@@ -74,7 +75,7 @@ public class BeanSessionArgs extends SessionArgs {
         */
        @FluentSetter
        public BeanSessionArgs locale(Locale value) {
-               property(BEAN_locale, value);
+               locale = value;
                return this;
        }
 
@@ -85,12 +86,11 @@ public class BeanSessionArgs extends SessionArgs {
         * Specifies the default media type value for serializer and parser 
sessions.
         *
         * <p>
-        * If not specified, defaults to {@link BeanContext#BEAN_mediaType}.
+        * If not specified, defaults to {@link 
BeanContextBuilder#mediaType(MediaType)}.
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#mediaType()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#mediaType(MediaType)}
-        *      <li class='jf'>{@link BeanContext#BEAN_mediaType}
+        *      <li class='ja'>{@link BeanConfig#mediaType()}
+        *      <li class='jm'>{@link BeanContextBuilder#mediaType(MediaType)}
         * </ul>
         *
         * @param value
@@ -100,7 +100,7 @@ public class BeanSessionArgs extends SessionArgs {
         */
        @FluentSetter
        public BeanSessionArgs mediaType(MediaType value) {
-               property(BEAN_mediaType, value);
+               mediaType = value;
                return this;
        }
 
@@ -128,12 +128,11 @@ public class BeanSessionArgs extends SessionArgs {
         * Specifies the default timezone for serializer and parser sessions.
         *
         * <p>
-        * If not specified, defaults to {@link BeanContext#BEAN_timeZone}.
+        * If not specified, defaults to {@link 
BeanContextBuilder#timeZone(TimeZone)}.
         *
         * <ul class='seealso'>
-        *      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#timeZone()}
-        *      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#timeZone(TimeZone)}
-        *      <li class='jf'>{@link BeanContext#BEAN_timeZone}
+        *      <li class='ja'>{@link BeanConfig#timeZone()}
+        *      <li class='jm'>{@link BeanContextBuilder#timeZone(TimeZone)}
         * </ul>
         *
         * @param value
@@ -143,7 +142,7 @@ public class BeanSessionArgs extends SessionArgs {
         */
        @FluentSetter
        public BeanSessionArgs timeZone(TimeZone value) {
-               property(BEAN_timeZone, value);
+               timeZone = value;
                return this;
        }
 
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 b88c358..cdec2b1 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
@@ -56,7 +56,7 @@ public class BeanConfigAnnotation {
                        bool(a.beansRequireSerializable()).ifPresent(x -> 
b.beansRequireSerializable(x));
                        bool(a.beansRequireSettersForGetters()).ifPresent(x -> 
b.beansRequireSettersForGetters(x));
                        bool(a.disableBeansRequireSomeProperties()).ifPresent(x 
-> b.disableBeansRequireSomeProperties(x));
-                       string(a.typePropertyName()).ifPresent(x -> 
b.set(BEAN_typePropertyName, x));
+                       string(a.typePropertyName()).ifPresent(x -> 
b.typePropertyName(x));
                        bool(a.debug()).ifPresent(x -> b.set(CONTEXT_debug, x));
                        bool(a.findFluentSetters()).ifPresent(x -> 
b.findFluentSetters(x));
                        
bool(a.ignoreInvocationExceptionsOnGetters()).ifPresent(x -> 
b.ignoreInvocationExceptionsOnGetters(x));
@@ -66,8 +66,8 @@ public class BeanConfigAnnotation {
                        bool(a.ignoreUnknownBeanProperties()).ifPresent(x -> 
b.ignoreUnknownBeanProperties(x));
                        
bool(a.disableIgnoreUnknownNullBeanProperties()).ifPresent(x -> 
b.disableIgnoreUnknownNullBeanProperties(x));
                        asList(a.interfaces()).stream().map(x -> 
BeanAnnotation.create(x).interfaceClass(x).build()).forEach(x -> 
b.annotations(x));
-                       
string(a.locale()).map(Locale::forLanguageTag).ifPresent(x -> 
b.set(BEAN_locale, x));
-                       string(a.mediaType()).map(MediaType::of).ifPresent(x -> 
b.set(BEAN_mediaType, x));
+                       
string(a.locale()).map(Locale::forLanguageTag).ifPresent(x -> b.locale(x));
+                       string(a.mediaType()).map(MediaType::of).ifPresent(x -> 
b.mediaType(x));
                        b.setIfNotEmpty(BEAN_notBeanClasses, 
a.notBeanClasses());
                        b.setIfNotEmpty(BEAN_notBeanClasses, 
a.notBeanClasses_replace());
                        b.addTo(BEAN_notBeanPackages, 
stringList(a.notBeanPackages()));
@@ -76,7 +76,7 @@ public class BeanConfigAnnotation {
                        bool(a.sortProperties()).ifPresent(x -> 
b.sortProperties(x));
                        b.prependTo(BEAN_swaps, a.swaps());
                        b.setIfNotEmpty(BEAN_swaps, a.swaps_replace());
-                       
string(a.timeZone()).map(TimeZone::getTimeZone).ifPresent(x -> 
b.set(BEAN_timeZone, x));
+                       
string(a.timeZone()).map(TimeZone::getTimeZone).ifPresent(x -> b.timeZone(x));
                        bool(a.useEnumNames()).ifPresent(x -> 
b.useEnumNames(x));
                        bool(a.disableInterfaceProxies()).ifPresent(x -> 
b.disableInterfaceProxies(x));
                        bool(a.useJavaBeanIntrospector()).ifPresent(x -> 
b.useJavaBeanIntrospector(x));

Reply via email to