On Sat, 22 Nov 2025 07:37:01 GMT, Steve Armstrong <[email protected]> wrote:
> 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. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jdk/pull/28464
