Skip to content

Conversation

@kevinherron
Copy link
Collaborator

@kevinherron kevinherron commented Dec 30, 2025

What problem(s) was I solving?

Projects using Eclipse Milo's OPC UA stack have their own unsigned types (UByte, UShort, UInteger, ULong) in org.eclipse.milo.opcua.stack.core.types.builtin.unsigned. Currently, there's no convenient way to read/write these types using byteops - users would need to manually convert between primitive types and Milo's unsigned types.

What user-facing changes did I ship?

Added a new byteops-milo module that provides MiloByteOps<T> - a wrapper class for working with Eclipse Milo's unsigned types. This follows the same pattern as the existing byteops-unsigned module (which wraps jOOU types).

New API methods:

  • getUByte / setUByte - read/write UByte values
  • getUShort / setUShort - read/write UShort values
  • getUInt / setUInt - read/write UInteger values
  • getULong / setULong - read/write ULong values
  • Array variants for all of the above

How I implemented it

  • Created new byteops-milo Maven module with dependency on org.eclipse.milo:milo-stack-core:1.0.8
  • Implemented MiloByteOps<T> using the delegation pattern (same as UnsignedByteOps<T>)
  • The class implements ByteOps<T> and delegates all standard operations to the wrapped instance
  • Added @NullMarked package annotation for nullability consistency with the rest of the project

How to verify it

Automated

  • mvn clean package passes
  • All tests pass (16 new tests in MiloByteOpsTest)

Manual Testing

  • Verify module appears in IDE as recognized Maven module
  • Verify Milo dependency is resolved and unsigned type classes are available

Description for the changelog

Add byteops-milo module providing MiloByteOps<T> wrapper for Eclipse Milo unsigned types.

New module provides MiloByteOps<T> wrapper class for working with
Eclipse Milo's unsigned types (UByte, UShort, UInteger, ULong).
Follows the same delegation pattern as byteops-unsigned.
@kevinherron kevinherron merged commit 628de29 into master Dec 30, 2025
1 check passed
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.

2 participants