This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-lang.git
commit 45a955702a06d817aa18007a9b099c37ee2ec20a Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Mon Jun 3 08:00:42 2024 -0400 Remove duplicate static data in SerializationUtils.ClassLoaderAwareObjectInputStream --- src/changes/changes.xml | 1 + .../java/org/apache/commons/lang3/ClassUtils.java | 12 +++++++++++- .../org/apache/commons/lang3/SerializationUtils.java | 19 +------------------ 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 9d4e1ff0f..05c1ba1f5 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -140,6 +140,7 @@ The <action> type attribute can be add,update,fix,remove. <action type="fix" dev="ggregory" due-to="Gary Gregory">StringUtils.stripAccents(String) doesn't handle T with stroke.</action> <action issue="LANG-1735" type="fix" dev="ggregory" due-to="Tobias Kiecker">Fix Javadoc for FluentBitSet.setInclusive(int, int) #1222.</action> <action type="fix" dev="ggregory" due-to="Tobias Kiecker">Same Javadoc changes as [TEXT-234] #1223.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Remove duplicate static data in SerializationUtils.ClassLoaderAwareObjectInputStream.</action> <!-- UPDATE --> <action type="update" dev="sebb" due-to="Dependabot, Gary Gregory">Bump commons-parent from 64 to 70 #1194.</action> <action type="update" dev="ggregory" due-to="Dependabot">Bump org.codehaus.mojo:exec-maven-plugin from 3.1.1 to 3.3.0 #1175, #1224.</action> diff --git a/src/main/java/org/apache/commons/lang3/ClassUtils.java b/src/main/java/org/apache/commons/lang3/ClassUtils.java index 60b4d76a3..c1fc66234 100644 --- a/src/main/java/org/apache/commons/lang3/ClassUtils.java +++ b/src/main/java/org/apache/commons/lang3/ClassUtils.java @@ -528,7 +528,7 @@ public class ClassUtils { */ public static Class<?> getClass(final ClassLoader classLoader, final String className, final boolean initialize) throws ClassNotFoundException { try { - final Class<?> clazz = namePrimitiveMap.get(className); + final Class<?> clazz = getPrimitiveClass(className); return clazz != null ? clazz : Class.forName(toCanonicalName(className), initialize, classLoader); } catch (final ClassNotFoundException ex) { // allow path separators (.) as inner class name separators @@ -750,6 +750,16 @@ public class ClassUtils { return className.substring(0, i); } + /** + * Gets the primitive class for the given class name, for example "byte". + * + * @param className the primitive class for the given class name. + * @return the primitive class. + */ + static Class<?> getPrimitiveClass(final String className) { + return namePrimitiveMap.get(className); + } + /** * Returns the desired Method much like {@code Class.getMethod}, however it ensures that the returned Method is from a * public class or interface and not from an anonymous inner class. This means that the Method is invokable and doesn't diff --git a/src/main/java/org/apache/commons/lang3/SerializationUtils.java b/src/main/java/org/apache/commons/lang3/SerializationUtils.java index 92829305c..3185edfe4 100644 --- a/src/main/java/org/apache/commons/lang3/SerializationUtils.java +++ b/src/main/java/org/apache/commons/lang3/SerializationUtils.java @@ -25,8 +25,6 @@ import java.io.ObjectOutputStream; import java.io.ObjectStreamClass; import java.io.OutputStream; import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; import java.util.Objects; /** @@ -61,21 +59,6 @@ public class SerializationUtils { * class here is a workaround, see the JIRA issue LANG-626.</p> */ static final class ClassLoaderAwareObjectInputStream extends ObjectInputStream { - // Note: This is final to avoid Spotbugs CT_CONSTRUCTOR_THROW - private static final Map<String, Class<?>> primitiveTypes = - new HashMap<>(); - - static { - primitiveTypes.put(boolean.class.getSimpleName(), boolean.class); - primitiveTypes.put(byte.class.getSimpleName(), byte.class); - primitiveTypes.put(char.class.getSimpleName(), char.class); - primitiveTypes.put(double.class.getSimpleName(), double.class); - primitiveTypes.put(float.class.getSimpleName(), float.class); - primitiveTypes.put(int.class.getSimpleName(), int.class); - primitiveTypes.put(long.class.getSimpleName(), long.class); - primitiveTypes.put(short.class.getSimpleName(), short.class); - primitiveTypes.put(void.class.getSimpleName(), void.class); - } private final ClassLoader classLoader; @@ -108,7 +91,7 @@ public class SerializationUtils { try { return Class.forName(name, false, Thread.currentThread().getContextClassLoader()); } catch (final ClassNotFoundException cnfe) { - final Class<?> cls = primitiveTypes.get(name); + final Class<?> cls = ClassUtils.getPrimitiveClass(name); if (cls != null) { return cls; }