Skip to content

EDG-255 Reclaim Tag Ownership from Adapters, v2 - phase 2, REST (Edge)#1456

Open
mschoenert-hivemq wants to merge 12 commits intoexploration/EDG-255/reclaim-tag-ownership-from-adapters-v2-phase-2-OPCUAfrom
exploration/EDG-255/reclaim-tag-ownership-from-adapters-v2-phase-2-REST
Open

EDG-255 Reclaim Tag Ownership from Adapters, v2 - phase 2, REST (Edge)#1456
mschoenert-hivemq wants to merge 12 commits intoexploration/EDG-255/reclaim-tag-ownership-from-adapters-v2-phase-2-OPCUAfrom
exploration/EDG-255/reclaim-tag-ownership-from-adapters-v2-phase-2-REST

Conversation

@mschoenert-hivemq
Copy link
Copy Markdown
Contributor

@mschoenert-hivemq mschoenert-hivemq commented Mar 15, 2026

Motivation

A Tag is an Edge concept. It represents a named, described data point as Edge understands it — with a name, a description, and a lifecycle. A TagDefinition is the adapter's concern: it is the adapter-specific addressing information needed to locate that data point on a device (e.g. a Modbus register address, an OPC-UA node ID).

Edge should have complete control over what a tag is and how it behaves. Protocol adapters should only own what is necessary to address a tag on the device — i.e. the TagDefinition. Adapters receive Tag objects and pass them back to Edge, but they must not define or own the Tag implementation.

Approach

The migration is done in phases. Phases 1 and 2 are fully compatible — no existing adapter needs to change. Phase 3 is incompatible and cleans up the SDK once all adapters have migrated. Phase 4 seals the interface to enforce the invariant permanently.

Phase 1 — SDK and Edge changes (compatible, no adapter changes required)

Phase 2 — Migrate adapters one at a time (compatible, per-adapter)

Migration steps for one adapter (example: OPC-UA)

  • Modbus
  • HTTP
  • File
  • Ethernet/IP
  • PLC4X
  • MTConnect
  • Database
  • Simulation

@cla-bot cla-bot bot added the cla-signed label Mar 15, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 15, 2026

Test Results

  490 files  ±0    490 suites  ±0   5m 57s ⏱️ -5s
4 160 tests ±0  4 157 ✅ ±0  3 💤 ±0  0 ❌ ±0 
4 177 runs  ±0  4 174 ✅ ±0  3 💤 ±0  0 ❌ ±0 

Results for commit 03b17f2. ± Comparison against base commit b1fe490.

♻️ This comment has been updated with latest results.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 15, 2026

- Replace FileTag with GenericTag in FilePollingProtocolAdapter,
  FileDataPoint, and FileProtocolAdapterInformation
- Switch tagConfigurationClass() to tagDefinitionClass() returning
  FileTagDefinition.class
- Delete FileTag.java
- Update FileProtocolAdapterConfigTest accordingly
Replace per-adapter EipTag with the canonical GenericTag. Update
EipProtocolAdapterInformation to use tagDefinitionClass(), update
EipPollingProtocolAdapter to cast to EipTagDefinition where needed,
and update both test files. Delete EipTag.java.
Replace per-adapter Plc4xTag with the canonical GenericTag across
AbstractPlc4xAdapter, Plc4xConnection, S7ProtocolAdapter, and
ADSProtocolAdapter. Update both information classes to use
tagDefinitionClass(). Cast to Plc4xTagDefinition wherever tag address
or data type is needed. Update all test files. Delete Plc4xTag.java.
Replace per-adapter MtConnectAdapterTag with the canonical GenericTag.
Update MtConnectProtocolAdapterInformation to use tagDefinitionClass(),
update MtConnectProtocolAdapter to cast to MtConnectAdapterTagDefinition
where needed, and update the test. Delete MtConnectAdapterTag.java.
Replace per-adapter DatabasesAdapterTag with the canonical GenericTag.
Update DatabasesProtocolAdapterInformation to use tagDefinitionClass(),
update DatabasesPollingProtocolAdapter to cast to DatabasesAdapterTagDefinition
where needed. Delete DatabasesAdapterTag.java.
Switch tagConfigurationClass() to tagDefinitionClass() returning
SimulationTagDefinition.class, update adapter and test to use
GenericTag, and delete the now-redundant SimulationTag wrapper class.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant