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 8f73bd15d485e5b9347abe1b2ac71d2d956f16a5 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sat Mar 16 08:32:58 2024 -0400 Use Java 8 API to manage thread local --- .../org/apache/commons/lang3/builder/ToStringStyle.java | 17 +++++------------ .../java/org/apache/commons/lang3/AbstractLangTest.java | 4 ++-- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java b/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java index a722f0a6f..0ab64efe3 100644 --- a/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java +++ b/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java @@ -687,7 +687,7 @@ public abstract class ToStringStyle implements Serializable { * A registry of objects used by {@code reflectionToString} methods * to detect cyclical object references and avoid infinite loops. */ - private static final ThreadLocal<WeakHashMap<Object, Object>> REGISTRY = new ThreadLocal<>(); + private static final ThreadLocal<WeakHashMap<Object, Object>> REGISTRY = ThreadLocal.withInitial(WeakHashMap::new); /* * Note that objects of this class are generally shared between threads, so * an instance variable would not be suitable here. @@ -718,8 +718,7 @@ public abstract class ToStringStyle implements Serializable { * object. */ static boolean isRegistered(final Object value) { - final Map<Object, Object> m = getRegistry(); - return m != null && m.containsKey(value); + return getRegistry().containsKey(value); } /** @@ -731,10 +730,6 @@ public abstract class ToStringStyle implements Serializable { */ static void register(final Object value) { if (value != null) { - final Map<Object, Object> m = getRegistry(); - if (m == null) { - REGISTRY.set(new WeakHashMap<>()); - } getRegistry().put(value, null); } } @@ -752,11 +747,9 @@ public abstract class ToStringStyle implements Serializable { static void unregister(final Object value) { if (value != null) { final Map<Object, Object> m = getRegistry(); - if (m != null) { - m.remove(value); - if (m.isEmpty()) { - REGISTRY.remove(); - } + m.remove(value); + if (m.isEmpty()) { + REGISTRY.remove(); } } } diff --git a/src/test/java/org/apache/commons/lang3/AbstractLangTest.java b/src/test/java/org/apache/commons/lang3/AbstractLangTest.java index 9e3d42233..ca9ff1b49 100644 --- a/src/test/java/org/apache/commons/lang3/AbstractLangTest.java +++ b/src/test/java/org/apache/commons/lang3/AbstractLangTest.java @@ -16,7 +16,7 @@ */ package org.apache.commons.lang3; -import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.apache.commons.lang3.builder.ToStringStyle; import org.junit.jupiter.api.AfterEach; @@ -31,7 +31,7 @@ public class AbstractLangTest { */ @AfterEach public void after() { - assertNull(ToStringStyle.getRegistry(), "Expected null, actual: " + ToStringStyle.getRegistry()); + assertTrue(ToStringStyle.getRegistry().isEmpty(), "Expected null, actual: " + ToStringStyle.getRegistry()); } }