Skip to content

refactor/use method handles for fields#818

Merged
joe-chacko merged 7 commits into
OpenLiberty:mainfrom
ngmr:refactor/use-method-handles-for-fields
Jun 18, 2026
Merged

refactor/use method handles for fields#818
joe-chacko merged 7 commits into
OpenLiberty:mainfrom
ngmr:refactor/use-method-handles-for-fields

Conversation

@ngmr

@ngmr ngmr commented Jun 18, 2026

Copy link
Copy Markdown
Member
  • refactor(rmi-impl): rename MethodHandleHelper to MethodHandleWrangler
  • refactor(yoko-rmi-impl): simplify field access using MethodHandles directly
  • refactor(yoko-rmi-impl): add type narrowing for CORBA object deserialization
  • refactor(yoko-rmi-impl): rename field accessor methods for clarity
    fixes Java 23: Eliminate use of Unsafe #806

ngmr added 4 commits June 18, 2026 15:52
- Renamed MethodHandleHelper class to MethodHandleWrangler for better semantic clarity
- Wrapped method and field lookup operations in privileged action blocks
- Improved error handling by unwrapping PrivilegedActionException and using INTERNAL exception factory
- Updated javadoc to reflect that class handles both methods and field accessors
- Changed exception signatures to remove checked exceptions from package-private methods
- substantive lines added: 37, lines removed: 18
…rectly

- Removed Field.java wrapper class that used sun.misc.Unsafe for field access
- Removed MethodHandleWrangler.java helper class for obtaining MethodHandles
- Refactored FieldDescriptor.java to use MethodHandles directly for get/set operations
- Simplified exception handling by using IOException instead of IllegalAccessException
- Updated ValueMemberFieldDescriptor.java to throw IOException for unsupported operations
- Consolidated field access logic, eliminating intermediate abstraction layers
- Lines added: 175, lines removed: 640

Co-authored-by-AI: IBM Bob 1.0.4
…ization

- Modified CorbaObjectReader.readCorbaObject() to perform PortableRemoteObject.narrow() when a target type is provided
- Updated CorbaObjectFieldDescriptor to pass field type to readCorbaObject() instead of null
- Added convenience method readCorbaObject() without parameters in ObjectReader
- Simplified ValueMemberFieldDescriptor to use method reference for CORBA object reading
- Substantive lines added: 7, lines removed: 4

Co-authored-by-AI: IBM Bob 1.0.4
- Renamed FieldDescriptor.get() to getFieldContents() to better reflect its purpose
- Renamed FieldDescriptor.set() to setFieldContents() to better reflect its purpose
- Updated all subclasses and call sites across FieldDescriptor hierarchy
- Changes affect RemoteFieldDescriptor, AnyFieldDescriptor, ValueFieldDescriptor, StringFieldDescriptor, ObjectFieldDescriptor, and all primitive field descriptors
- Substantive lines added: 62, lines removed: 62
@ngmr ngmr self-assigned this Jun 18, 2026
@ngmr ngmr requested a review from joe-chacko June 18, 2026 14:54
ngmr added 2 commits June 18, 2026 16:16
…tion

- Replace duplicate initialization code in 3-parameter constructor with delegation to 5-parameter constructor
- Pass null for Field parameter to maintain same behavior
- Substantive lines added: 1, lines removed: 6
…Descriptor

- replace integer-based `TCKind` constant handling with enum-based `TCKind` lookups for primitive detection and reader dispatch
- switch reader dispatch from a fixed array to an unmodifiable `Map<TCKind, ReaderOperation>` and keep unsupported kinds on the existing abstract-object fallback path
- tighten method signatures with typed ignored maps and remove the obsolete array-bounds handling from `readValueByTypeCode`
- substantive lines added: 89, lines removed: 88

Co-authored-by-AI: IBM Bob 1.0.4
…eparate files

- Extracted RemoteFieldDescriptor into separate file
- Extracted AnyFieldDescriptor into separate file
- Extracted BooleanFieldDescriptor into separate file
- Extracted ByteFieldDescriptor into separate file
- Extracted CharFieldDescriptor into separate file
- Extracted CorbaObjectFieldDescriptor into separate file
- Extracted DoubleFieldDescriptor into separate file
- Extracted FloatFieldDescriptor into separate file
- Extracted IntFieldDescriptor into separate file
- Extracted LongFieldDescriptor into separate file
- Extracted ObjectFieldDescriptor into separate file
- Extracted ShortFieldDescriptor into separate file
- Extracted StringFieldDescriptor into separate file
- Extracted ValueFieldDescriptor into separate file
- Removed inner class definitions from FieldDescriptor.java
- Substantive lines added: 900, lines removed: 784
@joe-chacko joe-chacko merged commit 6225daf into OpenLiberty:main Jun 18, 2026
2 checks passed
@OpenLiberty OpenLiberty deleted a comment from ngmr Jun 18, 2026
@ngmr ngmr deleted the refactor/use-method-handles-for-fields branch June 19, 2026 09:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Java 23: Eliminate use of Unsafe

2 participants