You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2020/11/12 20:33:51 UTC

[juneau] branch master updated: JUnit tests.

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 877338d  JUnit tests.
877338d is described below

commit 877338de7866f05bad7f89ab8cb694a39d4c0bf7
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Thu Nov 12 15:33:40 2020 -0500

    JUnit tests.
---
 .../BeanConfigAnnotation_Test.java                 | 16 +++----
 .../main/java/org/apache/juneau/BeanContext.java   | 40 ++++++++--------
 .../main/java/org/apache/juneau/BeanSession.java   | 50 +++++++++----------
 .../org/apache/juneau/BeanTraverseContext.java     |  8 ++--
 .../org/apache/juneau/BeanTraverseSession.java     |  8 ++--
 .../src/main/java/org/apache/juneau/Context.java   |  8 ++--
 .../org/apache/juneau/annotation/BeanConfig.java   | 56 +++++++---------------
 .../juneau/annotation/BeanConfigAnnotation.java    |  8 ----
 8 files changed, 79 insertions(+), 115 deletions(-)

diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotation_Test.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
similarity index 96%
rename from juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotation_Test.java
rename to juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
index dff21d7..4031434 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotation_Test.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
@@ -10,7 +10,7 @@
 // * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
 // * specific language governing permissions and limitations under the License.                                              *
 // ***************************************************************************************************************************
-package org.apache.juneau;
+package org.apache.juneau.annotation;
 
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
@@ -19,7 +19,7 @@ import java.util.*;
 import java.util.function.*;
 import java.util.stream.*;
 
-import org.apache.juneau.annotation.*;
+import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
@@ -110,7 +110,6 @@ public class BeanConfigAnnotation_Test {
 		beanConstructorVisibility="$X{PRIVATE}",
 		dictionary={A1.class,A2.class},
 		dictionary_replace={A1.class,A2.class,A3.class},
-		dictionary_remove=A2.class,
 		beanFieldVisibility="$X{PRIVATE}",
 		beanMapPutReturnsOldValue="$X{true}",
 		beanMethodVisibility="$X{PRIVATE}",
@@ -134,13 +133,10 @@ public class BeanConfigAnnotation_Test {
 		mediaType="$X{text/foo}",
 		notBeanClasses={A1.class,A2.class},
 		notBeanClasses_replace={A1.class,A2.class,A3.class},
-		notBeanClasses_remove=A2.class,
 		notBeanPackages={"$X{foo1}","$X{foo2}"},
 		notBeanPackages_replace={"$X{foo1}","$X{foo2}","$X{foo3}"},
-		notBeanPackages_remove={"$X{foo2}"},
 		swaps={AB1.class,AB2.class},
 		swaps_replace={AB1.class,AB2.class,AB3.class},
-		swaps_remove=AB2.class,
 		propertyNamer=PropertyNamerULC.class,
 		sortProperties="$X{true}",
 		timeZone="$X{z}",
@@ -158,7 +154,7 @@ public class BeanConfigAnnotation_Test {
 
 		check("PRIVATE", bc.getBeanClassVisibility());
 		check("PRIVATE", bc.getBeanConstructorVisibility());
-		check("A1,A3", bc.getBeanDictionaryClasses());
+		check("A1,A2,A3", bc.getBeanDictionaryClasses());
 		check("PRIVATE", bc.getBeanFieldVisibility());
 		check("true", bc.isBeanMapPutReturnsOldValue());
 		check("PRIVATE", bc.getBeanMethodVisibility());
@@ -180,9 +176,9 @@ public class BeanConfigAnnotation_Test {
 		check("en_US", bc.getLocale());
 		check("1", bc.getMaxDepth());
 		check("application/json", bc.getMediaType());
-		check("A1,A3", bc.getNotBeanClasses());
-		check("foo1,foo3", bc.getNotBeanPackagesNames());
-		check("AB1<String,Integer>,AB3<String,Integer>", bc.getSwaps());
+		check("A1,A2,A3", bc.getNotBeanClasses());
+		check("foo1,foo2,foo3", bc.getNotBeanPackagesNames());
+		check("AB1<String,Integer>,AB2<String,Integer>,AB3<String,Integer>", bc.getSwaps());
 		check("PropertyNamerULC", bc.getPropertyNamer());
 		check("true", bc.isSortProperties());
 		check("GMT", bc.getTimeZone());
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 b69c25f..7114bd4 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
@@ -3301,7 +3301,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	The list of classes that make up the bean dictionary in this bean context.
 	 */
-	protected final List<Class<?>> getBeanDictionaryClasses() {
+	public final List<Class<?>> getBeanDictionaryClasses() {
 		return beanDictionaryClasses;
 	}
 
@@ -3325,7 +3325,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * 	<jk>true</jk> if the {@link BeanMap#put(String,Object) BeanMap.put()} method will return old property values.
 	 * 	<br>Otherwise, it returns <jk>null</jk>.
 	 */
-	protected final boolean isBeanMapPutReturnsOldValue() {
+	public final boolean isBeanMapPutReturnsOldValue() {
 		return beanMapPutReturnsOldValue;
 	}
 
@@ -3348,7 +3348,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * 	<jk>true</jk> if a Java class must implement a default no-arg constructor to be considered a bean.
 	 * 	<br>Otherwise, the bean will be serialized as a string using the {@link Object#toString()} method.
 	 */
-	protected final boolean isBeansRequireDefaultConstructor() {
+	public final boolean isBeansRequireDefaultConstructor() {
 		return beansRequireDefaultConstructor;
 	}
 
@@ -3360,7 +3360,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * 	<jk>true</jk> if a Java class must implement the {@link Serializable} interface to be considered a bean.
 	 * 	<br>Otherwise, the bean will be serialized as a string using the {@link Object#toString()} method.
 	 */
-	protected final boolean isBeansRequireSerializable() {
+	public final boolean isBeansRequireSerializable() {
 		return beansRequireSerializable;
 	}
 
@@ -3372,7 +3372,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * 	<jk>true</jk> if only getters that have equivalent setters will be considered as properties on a bean.
 	 * 	<br>Otherwise, they are ignored.
 	 */
-	protected final boolean isBeansRequireSettersForGetters() {
+	public final boolean isBeansRequireSettersForGetters() {
 		return beansRequireSettersForGetters;
 	}
 
@@ -3384,7 +3384,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * 	<jk>true</jk> if a Java class must contain at least 1 property to be considered a bean.
 	 * 	<br>Otherwise, the bean is serialized as a string using the {@link Object#toString()} method.
 	 */
-	protected final boolean isBeansRequireSomeProperties() {
+	public final boolean isBeansRequireSomeProperties() {
 		return beansRequireSomeProperties;
 	}
 
@@ -3395,7 +3395,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @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.
 	 */
-	protected final String getBeanTypePropertyName() {
+	public final String getBeanTypePropertyName() {
 		return typePropertyName;
 	}
 
@@ -3409,7 +3409,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	<jk>true</jk> if fluent setters are detected on beans.
 	 */
-	protected final boolean isFluentSetters() {
+	public final boolean isFluentSetters() {
 		return fluentSetters;
 	}
 
@@ -3420,7 +3420,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	<jk>true</jk> if errors thrown when calling bean getter methods are silently ignored.
 	 */
-	protected final boolean isIgnoreInvocationExceptionsOnGetters() {
+	public final boolean isIgnoreInvocationExceptionsOnGetters() {
 		return ignoreInvocationExceptionsOnGetters;
 	}
 
@@ -3431,7 +3431,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	<jk>true</jk> if errors thrown when calling bean setter methods are silently ignored.
 	 */
-	protected final boolean isIgnoreInvocationExceptionsOnSetters() {
+	public final boolean isIgnoreInvocationExceptionsOnSetters() {
 		return ignoreInvocationExceptionsOnSetters;
 	}
 
@@ -3442,7 +3442,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	<jk>true</jk> if trying to set a value on a bean property without a setter is silently ignored.
 	 */
-	protected final boolean isIgnorePropertiesWithoutSetters() {
+	public final boolean isIgnorePropertiesWithoutSetters() {
 		return ignorePropertiesWithoutSetters;
 	}
 
@@ -3465,7 +3465,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * 	<jk>true</jk> if trying to set a value on a non-existent bean property is silently ignored.
 	 * 	<br>Otherwise, a {@code RuntimeException} is thrown.
 	 */
-	protected final boolean isIgnoreUnknownBeanProperties() {
+	public final boolean isIgnoreUnknownBeanProperties() {
 		return ignoreUnknownBeanProperties;
 	}
 
@@ -3476,7 +3476,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	<jk>true</jk> if trying to set a <jk>null</jk> value on a non-existent bean property is silently ignored.
 	 */
-	protected final boolean isIgnoreUnknownNullBeanProperties() {
+	public final boolean isIgnoreUnknownNullBeanProperties() {
 		return ignoreUnknownNullBeanProperties;
 	}
 
@@ -3498,7 +3498,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	The list of fully-qualified package names to exclude from being classified as beans.
 	 */
-	protected final String[] getNotBeanPackagesNames() {
+	public final String[] getNotBeanPackagesNames() {
 		return notBeanPackageNames;
 	}
 
@@ -3520,7 +3520,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	The list POJO swaps defined.
 	 */
-	protected final PojoSwap<?,?>[] getSwaps() {
+	public final PojoSwap<?,?>[] getSwaps() {
 		return swaps;
 	}
 
@@ -3531,7 +3531,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	The interface used to calculate bean property names.
 	 */
-	protected final PropertyNamer getPropertyNamer() {
+	public final PropertyNamer getPropertyNamer() {
 		return propertyNamer;
 	}
 
@@ -3542,7 +3542,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	<jk>true</jk> if all bean properties will be serialized and access in alphabetical order.
 	 */
-	protected final boolean isSortProperties() {
+	public final boolean isSortProperties() {
 		return sortProperties;
 	}
 
@@ -3553,7 +3553,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	<jk>true</jk> if enums are always serialized by name, not using {@link Object#toString()}.
 	 */
-	protected final boolean isUseEnumNames() {
+	public final boolean isUseEnumNames() {
 		return useEnumNames;
 	}
 
@@ -3565,7 +3565,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * 	<jk>true</jk> if interfaces will be instantiated as proxy classes through the use of an
 	 * 	{@link InvocationHandler} if there is no other way of instantiating them.
 	 */
-	protected final boolean isUseInterfaceProxies() {
+	public final boolean isUseInterfaceProxies() {
 		return useInterfaceProxies;
 	}
 
@@ -3576,7 +3576,7 @@ public class BeanContext extends Context implements MetaProvider {
 	 * @return
 	 * 	<jk>true</jk> if the built-in Java bean introspector should be used for bean introspection.
 	 */
-	protected final boolean isUseJavaBeanIntrospector() {
+	public final boolean isUseJavaBeanIntrospector() {
 		return useJavaBeanIntrospector;
 	}
 
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 5aa5a90..5478342 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
@@ -1176,7 +1176,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	Classes are not considered beans unless they meet the minimum visibility requirements.
 	 */
-	protected final Visibility getBeanClassVisibility() {
+	public final Visibility getBeanClassVisibility() {
 		return ctx.getBeanClassVisibility();
 	}
 
@@ -1187,7 +1187,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	Only look for constructors with this specified minimum visibility.
 	 */
-	protected final Visibility getBeanConstructorVisibility() {
+	public final Visibility getBeanConstructorVisibility() {
 		return ctx.getBeanConstructorVisibility();
 	}
 
@@ -1199,7 +1199,7 @@ public class BeanSession extends Session {
 	 * 	The list of classes that make up the bean dictionary in this bean context.
 	 */
 	// TODO - Rename to getBeanDictionary()
-	protected final List<Class<?>> getBeanDictionaryClasses() {
+	public final List<Class<?>> getBeanDictionaryClasses() {
 		return ctx.getBeanDictionaryClasses();
 	}
 
@@ -1211,7 +1211,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	Only look for bean fields with this specified minimum visibility.
 	 */
-	protected final Visibility getBeanFieldVisibility() {
+	public final Visibility getBeanFieldVisibility() {
 		return ctx.getBeanFieldVisibility();
 	}
 
@@ -1223,7 +1223,7 @@ public class BeanSession extends Session {
 	 * 	<jk>true</jk> if the {@link BeanMap#put(String,Object) BeanMap.put()} method will return old property values.
 	 * 	<br>Otherwise, it returns <jk>null</jk>.
 	 */
-	protected final boolean isBeanMapPutReturnsOldValue() {
+	public final boolean isBeanMapPutReturnsOldValue() {
 		return ctx.isBeanMapPutReturnsOldValue();
 	}
 
@@ -1234,7 +1234,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	Only look for bean methods with this specified minimum visibility.
 	 */
-	protected final Visibility getBeanMethodVisibility() {
+	public final Visibility getBeanMethodVisibility() {
 		return ctx.getBeanMethodVisibility();
 	}
 
@@ -1246,7 +1246,7 @@ public class BeanSession extends Session {
 	 * 	<jk>true</jk> if a Java class must implement a default no-arg constructor to be considered a bean.
 	 * 	<br>Otherwise, the bean will be serialized as a string using the {@link Object#toString()} method.
 	 */
-	protected final boolean isBeansRequireDefaultConstructor() {
+	public final boolean isBeansRequireDefaultConstructor() {
 		return ctx.isBeansRequireDefaultConstructor();
 	}
 
@@ -1258,7 +1258,7 @@ public class BeanSession extends Session {
 	 * 	<jk>true</jk> if a Java class must implement the {@link Serializable} interface to be considered a bean.
 	 * 	<br>Otherwise, the bean will be serialized as a string using the {@link Object#toString()} method.
 	 */
-	protected final boolean isBeansRequireSerializable() {
+	public final boolean isBeansRequireSerializable() {
 		return ctx.isBeansRequireSerializable();
 	}
 
@@ -1270,7 +1270,7 @@ public class BeanSession extends Session {
 	 * 	<jk>true</jk> if only getters that have equivalent setters will be considered as properties on a bean.
 	 * 	<br>Otherwise, they are ignored.
 	 */
-	protected final boolean isBeansRequireSettersForGetters() {
+	public final boolean isBeansRequireSettersForGetters() {
 		return ctx.isBeansRequireSettersForGetters();
 	}
 
@@ -1282,7 +1282,7 @@ public class BeanSession extends Session {
 	 * 	<jk>true</jk> if a Java class must contain at least 1 property to be considered a bean.
 	 * 	<br>Otherwise, the bean is serialized as a string using the {@link Object#toString()} method.
 	 */
-	protected final boolean isBeansRequireSomeProperties() {
+	public final boolean isBeansRequireSomeProperties() {
 		return ctx.isBeansRequireSomeProperties();
 	}
 
@@ -1293,7 +1293,7 @@ public class BeanSession extends Session {
 	 * @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.
 	 */
-	protected final String getBeanTypePropertyName() {
+	public final String getBeanTypePropertyName() {
 		return ctx.getBeanTypePropertyName();
 	}
 
@@ -1307,7 +1307,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	<jk>true</jk> if fluent setters are detected on beans.
 	 */
-	protected final boolean isFluentSetters() {
+	public final boolean isFluentSetters() {
 		return ctx.isFluentSetters();
 	}
 
@@ -1318,7 +1318,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	<jk>true</jk> if errors thrown when calling bean getter methods are silently ignored.
 	 */
-	protected final boolean isIgnoreInvocationExceptionsOnGetters() {
+	public final boolean isIgnoreInvocationExceptionsOnGetters() {
 		return ctx.isIgnoreInvocationExceptionsOnGetters();
 	}
 
@@ -1329,7 +1329,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	<jk>true</jk> if errors thrown when calling bean setter methods are silently ignored.
 	 */
-	protected final boolean isIgnoreInvocationExceptionsOnSetters() {
+	public final boolean isIgnoreInvocationExceptionsOnSetters() {
 		return ctx.isIgnoreInvocationExceptionsOnSetters();
 	}
 
@@ -1342,7 +1342,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	<jk>true</jk> if trying to set a value on a bean property without a setter is silently ignored.
 	 */
-	protected final boolean isIgnorePropertiesWithoutSetters() {
+	public final boolean isIgnorePropertiesWithoutSetters() {
 		return ctx.isIgnorePropertiesWithoutSetters();
 	}
 
@@ -1354,7 +1354,7 @@ public class BeanSession extends Session {
 	 * 	<jk>true</jk> if trying to set a value on a non-existent bean property is silently ignored.
 	 * 	<br>Otherwise, a {@code RuntimeException} is thrown.
 	 */
-	protected final boolean isIgnoreUnknownBeanProperties() {
+	public final boolean isIgnoreUnknownBeanProperties() {
 		return ctx.isIgnoreUnknownBeanProperties();
 	}
 
@@ -1365,7 +1365,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	<jk>true</jk> if trying to set a <jk>null</jk> value on a non-existent bean property is silently ignored.
 	 */
-	protected final boolean isIgnoreUnknownNullBeanProperties() {
+	public final boolean isIgnoreUnknownNullBeanProperties() {
 		return ctx.isIgnoreUnknownNullBeanProperties();
 	}
 
@@ -1376,7 +1376,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	The list of classes that are explicitly not beans.
 	 */
-	protected final Class<?>[] getNotBeanClasses() {
+	public final Class<?>[] getNotBeanClasses() {
 		return ctx.getNotBeanClasses();
 	}
 
@@ -1387,7 +1387,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	The list of fully-qualified package names to exclude from being classified as beans.
 	 */
-	protected final String[] getNotBeanPackagesNames() {
+	public final String[] getNotBeanPackagesNames() {
 		return ctx.getNotBeanPackagesNames();
 	}
 
@@ -1409,7 +1409,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	The interface used to calculate bean property names.
 	 */
-	protected final PropertyNamer getPropertyNamer() {
+	public final PropertyNamer getPropertyNamer() {
 		return ctx.getPropertyNamer();
 	}
 
@@ -1420,7 +1420,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	<jk>true</jk> if all bean properties will be serialized and access in alphabetical order.
 	 */
-	protected final boolean isSortProperties() {
+	public final boolean isSortProperties() {
 		return ctx.isSortProperties();
 	}
 
@@ -1431,7 +1431,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	The list POJO swaps defined.
 	 */
-	protected final PojoSwap<?,?>[] getSwaps() {
+	public final PojoSwap<?,?>[] getSwaps() {
 		return ctx.getSwaps();
 	}
 
@@ -1442,7 +1442,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	<jk>true</jk> if enums are always serialized by name, not using {@link Object#toString()}.
 	 */
-	protected final boolean isUseEnumNames() {
+	public final boolean isUseEnumNames() {
 		return ctx.isUseEnumNames();
 	}
 
@@ -1454,7 +1454,7 @@ public class BeanSession extends Session {
 	 * 	<jk>true</jk> if interfaces will be instantiated as proxy classes through the use of an
 	 * 	{@link InvocationHandler} if there is no other way of instantiating them.
 	 */
-	protected final boolean isUseInterfaceProxies() {
+	public final boolean isUseInterfaceProxies() {
 		return ctx.isUseInterfaceProxies();
 	}
 
@@ -1465,7 +1465,7 @@ public class BeanSession extends Session {
 	 * @return
 	 * 	<jk>true</jk> if the built-in Java bean introspector should be used for bean introspection.
 	 */
-	protected final boolean isUseJavaBeanIntrospector() {
+	public final boolean isUseJavaBeanIntrospector() {
 		return ctx.isUseJavaBeanIntrospector();
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
index 21ff1bd..1158898 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
@@ -304,7 +304,7 @@ public abstract class BeanTraverseContext extends BeanContext {
 	 * @return
 	 * 	<jk>true</jk> if recursions should be checked for during traversal.
 	 */
-	protected final boolean isDetectRecursions() {
+	public final boolean isDetectRecursions() {
 		return detectRecursions;
 	}
 
@@ -316,7 +316,7 @@ public abstract class BeanTraverseContext extends BeanContext {
 	 * 	<jk>true</jk> if when we encounter the same object when traversing a tree, we set the value to <jk>null</jk>.
 	 * 	<br>Otherwise, an exception is thrown with the message <js>"Recursion occurred, stack=..."</js>.
 	 */
-	protected final boolean isIgnoreRecursions() {
+	public final boolean isIgnoreRecursions() {
 		return ignoreRecursions;
 	}
 
@@ -327,7 +327,7 @@ public abstract class BeanTraverseContext extends BeanContext {
 	 * @return
 	 * 	The initial indentation level at the root.
 	 */
-	protected final int getInitialDepth() {
+	public final int getInitialDepth() {
 		return initialDepth;
 	}
 
@@ -339,7 +339,7 @@ public abstract class BeanTraverseContext extends BeanContext {
 	 * 	The depth at which traversal is aborted if depth is reached in the POJO tree.
 	 *	<br>If this depth is exceeded, an exception is thrown.
 	 */
-	protected final int getMaxDepth() {
+	public final int getMaxDepth() {
 		return maxDepth;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
index 236b256..7505930 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
@@ -306,7 +306,7 @@ public class BeanTraverseSession extends BeanSession {
 	 * @return
 	 * 	<jk>true</jk> if recursions should be checked for during traversal.
 	 */
-	protected final boolean isDetectRecursions() {
+	public final boolean isDetectRecursions() {
 		return ctx.isDetectRecursions();
 	}
 
@@ -318,7 +318,7 @@ public class BeanTraverseSession extends BeanSession {
 	 * 	<jk>true</jk> if when we encounter the same object when traversing a tree, we set the value to <jk>null</jk>.
 	 * 	<br>Otherwise, a {@link BeanRecursionException} is thrown with the message <js>"Recursion occurred, stack=..."</js>.
 	 */
-	protected final boolean isIgnoreRecursions() {
+	public final boolean isIgnoreRecursions() {
 		return ctx.isIgnoreRecursions();
 	}
 
@@ -329,7 +329,7 @@ public class BeanTraverseSession extends BeanSession {
 	 * @return
 	 * 	The initial indentation level at the root.
 	 */
-	protected final int getInitialDepth() {
+	public final int getInitialDepth() {
 		return ctx.getInitialDepth();
 	}
 
@@ -341,7 +341,7 @@ public class BeanTraverseSession extends BeanSession {
 	 * 	The depth at which traversal is aborted if depth is reached in the POJO tree.
 	 *	<br>If this depth is exceeded, an exception is thrown.
 	 */
-	protected final int getMaxDepth() {
+	public final int getMaxDepth() {
 		return ctx.getMaxDepth();
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
index 8735b4c..7e27f26 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
@@ -842,7 +842,7 @@ public abstract class Context {
 	 * @return
 	 * 	<jk>true</jk> if debug mode is enabled.
 	 */
-	protected boolean isDebug() {
+	public boolean isDebug() {
 		return debug;
 	}
 
@@ -853,7 +853,7 @@ public abstract class Context {
 	 * @return
 	 * 	The default locale for serializer and parser sessions.
 	 */
-	protected final Locale getDefaultLocale() {
+	public final Locale getDefaultLocale() {
 		return locale;
 	}
 
@@ -864,7 +864,7 @@ public abstract class Context {
 	 * @return
 	 * 	The default media type value for serializer and parser sessions.
 	 */
-	protected final MediaType getDefaultMediaType() {
+	public final MediaType getDefaultMediaType() {
 		return mediaType;
 	}
 
@@ -875,7 +875,7 @@ public abstract class Context {
 	 * @return
 	 * 	The default timezone for serializer and parser sessions.
 	 */
-	protected final TimeZone getDefaultTimeZone() {
+	public final TimeZone getDefaultTimeZone() {
 		return timeZone;
 	}
 
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 44d384c..46d25bd 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
@@ -376,7 +376,10 @@ public @interface BeanConfig {
 	Class<?>[] dictionary() default {};
 
 	/**
-	 * Configuration property:  Add to bean dictionary.
+	 * Configuration property:  Replace bean dictionary.
+	 * 
+	 * <p>
+	 * Same as {@link #dictionary()} but replaces any existing value.
 	 *
 	 * <ul class='seealso'>
 	 * 	<li class='jf'>{@link BeanContext#BEAN_beanDictionary}
@@ -385,15 +388,6 @@ public @interface BeanConfig {
 	Class<?>[] dictionary_replace() default {};
 
 	/**
-	 * Configuration property:  Remove from bean dictionary.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link BeanContext#BEAN_beanDictionary_remove}
-	 * </ul>
-	 */
-	Class<?>[] dictionary_remove() default {};
-
-	/**
 	 * Configuration property:  Find fluent setters.
 	 *
 	 * <p>
@@ -657,7 +651,10 @@ public @interface BeanConfig {
 	Class<?>[] notBeanClasses() default {};
 
 	/**
-	 * Configuration property:  Add to classes that should not be considered beans.
+	 * Configuration property:  Replace classes that should not be considered beans.
+	 * 
+	 * <p>
+	 * Same as {@link #notBeanClasses()} but replaces any existing value.
 	 *
 	 * <ul class='seealso'>
 	 * 	<li class='jf'>{@link BeanContext#BEAN_notBeanClasses}
@@ -666,15 +663,6 @@ public @interface BeanConfig {
 	Class<?>[] notBeanClasses_replace() default {};
 
 	/**
-	 * Configuration property:  Remove from classes that should not be considered beans.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link BeanContext#BEAN_notBeanClasses}
-	 * </ul>
-	 */
-	Class<?>[] notBeanClasses_remove() default {};
-
-	/**
 	 * Configuration property:  Bean package exclusions.
 	 *
 	 * <p>
@@ -710,8 +698,11 @@ public @interface BeanConfig {
 	String[] notBeanPackages() default {};
 
 	/**
-	 * Configuration property:  Add to packages whose classes should not be considered beans.
+	 * Configuration property:  Replace packages whose classes should not be considered beans.
 	 *
+	 * <p>
+	 * Same as {@link #notBeanPackages()} but replaces any existing value.
+	 * 
 	 * <ul class='seealso'>
 	 * 	<li class='jf'>{@link BeanContext#BEAN_notBeanPackages}
 	 * </ul>
@@ -719,15 +710,6 @@ public @interface BeanConfig {
 	String[] notBeanPackages_replace() default {};
 
 	/**
-	 * Configuration property:  Remove from packages whose classes should not be considered beans.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link BeanContext#BEAN_notBeanPackages}
-	 * </ul>
-	 */
-	String[] notBeanPackages_remove() default {};
-
-	/**
 	 * Configuration property:  Bean property namer.
 	 *
 	 * <p>
@@ -806,8 +788,11 @@ public @interface BeanConfig {
 	Class<?>[] swaps() default {};
 
 	/**
-	 * Configuration property:  Add to Java object swap classes.
+	 * Configuration property: Replace Java object swap classes.
 	 *
+	 * <p>
+	 * Same as {@link #swaps()} but replaces any existing value.
+	 * 
 	 * <ul class='seealso'>
 	 * 	<li class='jf'>{@link BeanContext#BEAN_swaps}
 	 * </ul>
@@ -815,15 +800,6 @@ public @interface BeanConfig {
 	Class<?>[] swaps_replace() default {};
 
 	/**
-	 * Configuration property:  Remove from Java object swap classes.
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jf'>{@link BeanContext#BEAN_swaps}
-	 * </ul>
-	 */
-	Class<?>[] swaps_remove() default {};
-
-	/**
 	 * Configuration property:  Time zone.
 	 *
 	 * <p>
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 8dfa7c9..66ddbf6 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
@@ -54,8 +54,6 @@ public class BeanConfigAnnotation {
 				psb.prependTo(BEAN_beanDictionary, a.dictionary());
 			if (a.dictionary_replace().length != 0)
 				psb.set(BEAN_beanDictionary, a.dictionary_replace());
-			if (a.dictionary_remove().length != 0)
-				psb.removeFrom(BEAN_beanDictionary, a.dictionary_remove());
 			if (! a.beanFieldVisibility().isEmpty())
 				psb.set(BEAN_beanFieldVisibility, visibility(a.beanFieldVisibility(), "beanFieldVisibility"));
 			if (! a.beanMapPutReturnsOldValue().isEmpty())
@@ -98,14 +96,10 @@ public class BeanConfigAnnotation {
 				psb.addTo(BEAN_notBeanClasses, a.notBeanClasses());
 			if (a.notBeanClasses_replace().length != 0)
 				psb.set(BEAN_notBeanClasses, a.notBeanClasses_replace());
-			if (a.notBeanClasses_remove().length != 0)
-				psb.removeFrom(BEAN_notBeanClasses, a.notBeanClasses_remove());
 			if (a.notBeanPackages().length != 0)
 				psb.addTo(BEAN_notBeanPackages, strings(a.notBeanPackages()));
 			if (a.notBeanPackages_replace().length != 0)
 				psb.set(BEAN_notBeanPackages, strings(a.notBeanPackages_replace()));
-			if (a.notBeanPackages_remove().length != 0)
-				psb.removeFrom(BEAN_notBeanPackages, strings(a.notBeanPackages_remove()));
 			if (a.propertyNamer() != PropertyNamer.Null.class)
 				psb.set(BEAN_propertyNamer, a.propertyNamer());
 			if (! a.sortProperties().isEmpty())
@@ -114,8 +108,6 @@ public class BeanConfigAnnotation {
 				psb.prependTo(BEAN_swaps, a.swaps());
 			if (a.swaps_replace().length != 0)
 				psb.set(BEAN_swaps, a.swaps_replace());
-			if (a.swaps_remove().length != 0)
-				psb.removeFrom(BEAN_swaps, a.swaps_remove());
 			if (! a.timeZone().isEmpty())
 				psb.set(CONTEXT_timeZone, timeZone(a.timeZone()));
 			if (! a.useEnumNames().isEmpty())