zerodds-java-omgdds v1.0 — Spec Coverage
Audit of the vendor spec docs/specs/zerodds-java-omgdds-1.0.md against the
crates/java-omgdds/ code reality.
Source: docs/specs/zerodds-java-omgdds-1.0.md (vendor spec, 2026-05-06).
Context: the implementation lives in a single crate (with an embedded Maven Java module):
crates/java-omgdds/· docs.rs — Rust codegen bridge + pure-Java module underjava/(Maven)
§1 Architecture
§1.1 Module layout
Spec: §1.1 — a Java source tree under crates/java-omgdds/java/src/main/java/
with org/omg/dds/* (normative API) and org/zerodds/internal/*
(implementation detail).
Repo: 23 Java files (see find crates/java-omgdds/java -name "*.java").
- org/omg/dds/core/ (5 files)
- org/omg/dds/topic/ (2 files)
- org/omg/dds/sub/ (3 files)
- org/omg/dds/pub/ (2 files)
- org/omg/dds/domain/ (2 files)
- org/omg/dds/core/policy/ (1 file)
- org/zerodds/internal/InProcessBus.java (1 file)
- org/zerodds/internal/Xcdr2Codec.java (1 file)
- 3 test files in src/test/
- the Maven pom in crates/java-omgdds/java/pom.xml
Tests: mvn test 18 passed (CoreTypesTest 10, Xcdr2CodecTest 4,
PubSubLoopbackTest 4) + 1 cargo test in crates/java-omgdds.
Status: done
§1.2 InProcessBus
Spec: §1.2 — a thread-safe topic map, push-based sample delivery to all DataReaders on the same topic.
Repo: crates/java-omgdds/java/src/main/java/org/zerodds/internal/ InProcessBus.java.
Tests: PubSubLoopbackTest — 4 tests verify pub→sub delivery
in-process.
Status: done
§1.3 Xcdr2Codec
Spec: §1.3 — a Java-native XCDR2 encoder/decoder, spec-conformant per DDS-XTypes 1.3 §7.4.
Repo: org/zerodds/internal/Xcdr2Codec.java.
Tests: Xcdr2CodecTest — 4 tests verify the wire-format round-trip.
Status: done
§2 OMG API coverage
§2.1 org.omg.dds.core.*
Spec: §2 — Time, Duration, InstanceHandle, Entity, ReturnCode, QosProfile.
Repo: 5+ Java files in org/omg/dds/core/.
Tests: CoreTypesTest — 10 tests for Time/Duration/InstanceHandle
round-trips.
Status: done
§2.2 org.omg.dds.domain.*
Spec: §2 — DomainParticipant + DomainParticipantFactory.
Repo: DomainParticipant.java + DomainParticipantFactory.java.
Tests: indirectly via PubSubLoopbackTest.
Status: done
§2.3 org.omg.dds.topic.*
Spec: §2 — Topic + TopicTypeSupport.
Repo: Topic.java + TopicTypeSupport.java.
Tests: PubSubLoopbackTest.
Status: done
§2.4 org.omg.dds.pub.*
Spec: §2 — Publisher + DataWriter.
Repo: Publisher.java + DataWriter.java.
Tests: PubSubLoopbackTest.
Status: done
§2.5 org.omg.dds.sub.*
Spec: §2 — Subscriber + DataReader + Sample.
Repo: Subscriber.java + DataReader.java + Sample.java.
Tests: PubSubLoopbackTest.
Status: done
§2.6 org.omg.dds.core.policy.*
Spec: §2 — QosProfile (default-QoS path, optional XML-QoS loader).
Repo: QosProfile.java.
Tests: indirectly.
Status: done — the default-QoS path is live; the XML-QoS loader is
tracked in the zerodds-xml-1.0 audit file (separate spec).
§3 Test requirement
§3.1 mvn test green
Spec: §3 — mvn test must deliver 18/18 green.
Repo: crates/java-omgdds/java/pom.xml with a JUnit 5 setup.
Tests: verification: mvn test in crates/java-omgdds/java/ returns
“Tests run: 18, Failures: 0, Errors: 0, Skipped: 0”.
Status: done
§4 Multi-process / cross-vendor
§4.1 Pure-Java + gRPC-bridge decision
Spec: §4 — the pure-Java path has no RTPS wire stack. The single-JVM path
via InProcessBus; multi-JVM and cross-vendor run over the gRPC bridge to the
zerodds-grpc-bridged daemon (§5, implemented).
Repo: crates/java-omgdds/java/ (pure-Java with InProcessBus).
An earlier JNI bridge (crates/zerodds-java-jni/) was removed on.
Status: done — decision matrix in the vendor-spec §4 table.
§4.2 gRPC bridge for multi-process
Spec: §5 — the gRPC service exposes DDS publish/subscribe
(zerodds.bridge.v1.<topic>/Publish|Subscribe), a pure-Java client connects.
Repo: daemon zerodds-grpc-bridged (service routing in service_gen.rs,
/zerodds.bridge.v1.<topic>/Publish|Subscribe) + pure-Java h2c client
org/zerodds/bridge/GrpcBridgeClient.java (raw HTTP/2 + HPACK + protobuf
Sample/PublishAck — no grpc-java, no TLS, Java-8 compatible).
Tests: GrpcBridgeClientTest — protobuf codec self-checks (always green) +
publishThenSubscribeRoundtripThroughDds (real Java→gRPC→DDS DataWriter→
DataReader→gRPC→Java roundtrip, via run_grpc_bridge_e2e.sh, env-gated on
ZERODDS_BRIDGE_PORT).
Status: done — multi-JVM path implemented + e2e-proven.
§5 Stability
Spec: §6 — semver: v1.0 = the current surface.
Repo: the Maven pom version, the Cargo.toml version.
Status: done
Summary
| Section | Status |
|---|---|
| §1 architecture | done (3/3) |
| §2 OMG API coverage | done (6/6) |
| §3 test requirement | done |
| §4 cross path | done (2/2) |
| §5 stability | done |
Total items: 12 done: 12 partial: 0 open: 0 n/a (stretch): 0
Summary
The pure-Java path is fully spec-conformant: single-JVM in-process pub-sub via
InProcessBus and multi-JVM / cross-process over the gRPC bridge
(zerodds-grpc-bridged ↔︎ pure-Java h2c GrpcBridgeClient, e2e-proven). No JNI
in the pure-Java path. No open or deferred items remain.
zerodds-java-omgdds v1.0 — Spec-Coverage
Audit der Vendor-Spec docs/specs/zerodds-java-omgdds-1.0.md gegen
crates/java-omgdds/ Code-Realität.
Source: docs/specs/zerodds-java-omgdds-1.0.md (Vendor-Spec, 2026-05-06).
Kontext: Die Implementation lebt in einer Crate (mit eingebettetem Maven-Java-Modul):
crates/java-omgdds/· docs.rs — Rust-Codegen-Bridge + Pure-Java-Modul unterjava/(Maven)
§1 Architektur
§1.1 Module-Layout
Spec: §1.1 — Java-Source-Tree unter crates/java-omgdds/java/src/main/java/
mit org/omg/dds/* (normative API) und org/zerodds/internal/*
(Implementation-Detail).
Repo: 23 Java-Files (siehe find crates/java-omgdds/java -name "*.java").
- org/omg/dds/core/ (5 Files)
- org/omg/dds/topic/ (2 Files)
- org/omg/dds/sub/ (3 Files)
- org/omg/dds/pub/ (2 Files)
- org/omg/dds/domain/ (2 Files)
- org/omg/dds/core/policy/ (1 File)
- org/zerodds/internal/InProcessBus.java (1 File)
- org/zerodds/internal/Xcdr2Codec.java (1 File)
- 3 Test-Files in src/test/
- Maven-Pom in crates/java-omgdds/java/pom.xml
Tests: mvn test 18 passed (CoreTypesTest 10, Xcdr2CodecTest 4,
PubSubLoopbackTest 4) + 1 cargo-test in crates/java-omgdds.
Status: done
§1.2 InProcessBus
Spec: §1.2 — Threadsafe-Topic-Map, push-basierte Sample-Delivery an alle DataReader auf demselben Topic.
Repo: crates/java-omgdds/java/src/main/java/org/zerodds/internal/ InProcessBus.java.
Tests: PubSubLoopbackTest — 4 Tests verifizieren Pub→Sub
delivery in-process.
Status: done
§1.3 Xcdr2Codec
Spec: §1.3 — Java-native XCDR2-Encoder/Decoder spec-konform per DDS-XTypes 1.3 §7.4.
Repo: org/zerodds/internal/Xcdr2Codec.java.
Tests: Xcdr2CodecTest — 4 Tests verifizieren wire-format
Roundtrip.
Status: done
§2 OMG-API-Coverage
§2.1 org.omg.dds.core.*
Spec: §2 — Time, Duration, InstanceHandle, Entity, ReturnCode, QosProfile.
Repo: 5+ Java-Files in org/omg/dds/core/.
Tests: CoreTypesTest — 10 Tests für Time/Duration/InstanceHandle
Roundtrips.
Status: done
§2.2 org.omg.dds.domain.*
Spec: §2 — DomainParticipant + DomainParticipantFactory.
Repo: DomainParticipant.java + DomainParticipantFactory.java.
Tests: indirekt via PubSubLoopbackTest.
Status: done
§2.3 org.omg.dds.topic.*
Spec: §2 — Topic + TopicTypeSupport.
Repo: Topic.java + TopicTypeSupport.java.
Tests: PubSubLoopbackTest.
Status: done
§2.4 org.omg.dds.pub.*
Spec: §2 — Publisher + DataWriter.
Repo: Publisher.java + DataWriter.java.
Tests: PubSubLoopbackTest.
Status: done
§2.5 org.omg.dds.sub.*
Spec: §2 — Subscriber + DataReader + Sample.
Repo: Subscriber.java + DataReader.java + Sample.java.
Tests: PubSubLoopbackTest.
Status: done
§2.6 org.omg.dds.core.policy.*
Spec: §2 — QosProfile (Default-QoS-Pfad, optional XML-QoS-Loader).
Repo: QosProfile.java.
Tests: indirekt.
Status: done — Default-QoS-Pfad live; der XML-QoS-Loader ist im
zerodds-xml-1.0-Audit-File getrackt (separate Spec).
§3 Test-Pflicht
§3.1 mvn test grün
Spec: §3 — mvn test muss 18/18 grün liefern.
Repo: crates/java-omgdds/java/pom.xml mit JUnit-5-Setup.
Tests: Verifikation: mvn test in crates/java-omgdds/java/
liefert “Tests run: 18, Failures: 0, Errors: 0, Skipped: 0”.
Status: done
§4 Multi-Process / Cross-Vendor
§4.1 Pure-Java + gRPC-Bridge Decision
Spec: §4 — Der Pure-Java-Pfad hat keinen RTPS-Wire-Stack.
Single-JVM-Pfad via InProcessBus; Multi-JVM und Cross-Vendor
laufen über die gRPC-Bridge zum zerodds-grpc-bridged-Daemon (§5, implementiert).
Repo: crates/java-omgdds/java/ (Pure-Java mit InProcessBus).
Eine frühere JNI-Bridge (crates/zerodds-java-jni/) wurde am entfernt.
Status: done — Decision-Matrix in Vendor-Spec §4 Tabelle.
§4.2 gRPC-Bridge für Multi-Process
Spec: §5 — gRPC-Service exponiert DDS Publish/Subscribe
(zerodds.bridge.v1.<Topic>/Publish|Subscribe), Pure-Java-Client verbindet sich.
Repo: Daemon zerodds-grpc-bridged (Service-Routing service_gen.rs,
/zerodds.bridge.v1.<Topic>/Publish|Subscribe) + Pure-Java-h2c-Client
org/zerodds/bridge/GrpcBridgeClient.java (raw HTTP/2 + HPACK + protobuf
Sample/PublishAck — kein grpc-java, kein TLS, Java-8-kompatibel).
Tests: GrpcBridgeClientTest — Protobuf-Codec-Self-Checks (immer grün) +
publishThenSubscribeRoundtripThroughDds (echtes Java→gRPC→DDS-DataWriter→
DataReader→gRPC→Java-Roundtrip, via run_grpc_bridge_e2e.sh, env-gated über
ZERODDS_BRIDGE_PORT).
Status: done — Multi-JVM-Pfad implementiert + e2e-belegt.
§5 Stabilität
Spec: §6 — semver: v1.0 = aktuelle Surface.
Repo: Maven-Pom-Version, Cargo.toml-Version.
Status: done
Zusammenfassung
| Sektion | Status |
|---|---|
| §1 Architektur | done (3/3) |
| §2 OMG-API-Coverage | done (6/6) |
| §3 Test-Pflicht | done |
| §4 Cross-Pfad | done (2/2) |
| §5 Stabilität | done |
Total Items: 12 done: 12 partial: 0 open: 0 n/a (Stretch): 0
Zusammenfassung
Der Pure-Java-Pfad ist voll spec-konform: Single-JVM in-process Pub-Sub via
InProcessBus und Multi-JVM/Cross-Process über die gRPC-Bridge
(zerodds-grpc-bridged ↔︎ Pure-Java-h2c-GrpcBridgeClient, e2e-belegt). Kein
JNI im Pure-Java-Pfad. Keine offenen oder zurückgestellten Items mehr.