> The three AtomicXxxFieldUpdater classes (AtomicIntegerFieldUpdater, > AtomicLongFieldUpdater, and AtomicReferenceFieldUpdater) contain duplicate > field validation and access checking logic in their constructors and helper > methods. > > This change extracts the common validation and utility methods into a new > package-private class FieldUpdaterUtil to eliminate code duplication and > improve maintainability. > > Changes: > - Added new FieldUpdaterUtil class with static utility methods: > * validateField() - validates field type, volatile, and static checks > * computeAccessClass() - determines correct class for access checks > * isSamePackage() - checks if two classes are in same package > * isAncestor() - checks classloader delegation chain > > - Updated AtomicIntegerFieldUpdater to use FieldUpdaterUtil > * Simplified constructor to use validateField() and computeAccessClass() > * Removed duplicate isAncestor() and isSamePackage() methods > > - Updated AtomicLongFieldUpdater to use FieldUpdaterUtil > * Simplified constructor to use validateField() and computeAccessClass() > * Removed duplicate isAncestor() and isSamePackage() methods > > - Updated AtomicReferenceFieldUpdater to use FieldUpdaterUtil > * Simplified constructor to use validateField() and computeAccessClass() > * Removed duplicate isAncestor() and isSamePackage() methods > > Existing tests in test/jdk/java/util/concurrent/tck and > test/jdk/java/util/concurrent/atomic verify that the refactoring preserves > the original behavior.
Steve Armstrong has updated the pull request incrementally with one additional commit since the last revision: Replace legacy ReflectUtil with modern Reflection API Replaced sun.reflect.misc.ReflectUtil with jdk.internal.reflect.Reflection in atomic field updaters. Added getFieldWithAccess() method and FieldAndModifiers record to FieldUpdaterUtil to consolidate field access checking logic. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/28464/files - new: https://git.openjdk.org/jdk/pull/28464/files/76a74fa2..72f27359 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=28464&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28464&range=00-01 Stats: 74 lines in 4 files changed: 30 ins; 28 del; 16 mod Patch: https://git.openjdk.org/jdk/pull/28464.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/28464/head:pull/28464 PR: https://git.openjdk.org/jdk/pull/28464
