diff --git a/src/main/java/org/apache/commons/beanutils2/BeanMap.java b/src/main/java/org/apache/commons/beanutils2/BeanMap.java index 927573c2e..4c0d2cd3b 100644 --- a/src/main/java/org/apache/commons/beanutils2/BeanMap.java +++ b/src/main/java/org/apache/commons/beanutils2/BeanMap.java @@ -479,6 +479,11 @@ private void initialize() { for (final PropertyDescriptor propertyDescriptor : propertyDescriptors) { if (propertyDescriptor != null) { final String name = propertyDescriptor.getName(); + if ("class".equals(name) || "declaringClass".equals(name)) { + // These pseudo-properties expose the bean's ClassLoader; skip them to match the + // suppression PropertyUtilsBean applies by default (see SuppressPropertiesBeanIntrospector). + continue; + } final Method readMethod = propertyDescriptor.getReadMethod(); final Method writeMethod = propertyDescriptor.getWriteMethod(); final Class aType = propertyDescriptor.getPropertyType(); diff --git a/src/test/java/org/apache/commons/beanutils2/BeanMapTest.java b/src/test/java/org/apache/commons/beanutils2/BeanMapTest.java index 6604cfe12..2a8017517 100644 --- a/src/test/java/org/apache/commons/beanutils2/BeanMapTest.java +++ b/src/test/java/org/apache/commons/beanutils2/BeanMapTest.java @@ -17,7 +17,9 @@ package org.apache.commons.beanutils2; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import static org.junit.jupiter.api.Assumptions.assumeFalse; @@ -176,7 +178,7 @@ protected Object computeIfAbsent(final String key, final Function