> 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 refreshed the contents of this pull request, and previous 
commits have been removed. The incremental views will show differences compared 
to the previous content of the PR. The pull request contains one new commit 
since the last revision:

  Refactor FieldUpdaterUtil API based on review feedback
  
  Simplified the API by combining field lookup and validation into a
  single findValidatedField() method, eliminating the need for the
  redundant FieldAndModifiers record since Field already provides
  getModifiers(). This makes the API more ergonomic and the caller
  code more concise.

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/28464/files
  - new: https://git.openjdk.org/jdk/pull/28464/files/72f27359..c9a98483

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=28464&range=02
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=28464&range=01-02

  Stats: 72 lines in 4 files changed: 7 ins; 34 del; 31 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

Reply via email to