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 is a plain Maven Java module inside the crates directory; it contains no Rust code:
crates/java-omgdds/java/— pure-Java module (Maven, JUnit 5)
§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: 510 Java files (378 under src/main, 132 under src/test; counted
with find crates/java-omgdds/java/src -name "*.java").
- org/omg/dds/core/ (26 files, plus core/policy/ with 28 files and the packages core/event, core/status)
- org/omg/dds/topic/ (13 files)
- org/omg/dds/sub/ (15 files)
- org/omg/dds/pub/ (9 files)
- org/omg/dds/domain/ (7 files)
- org/omg/dds/** in total 184 files
- org/zerodds/… (194 files, among them crates/java-omgdds/java/src/main/java/org/zerodds/internal/InProcessBus.java,
crates/java-omgdds/java/src/main/java/org/zerodds/internal/Xcdr2Codec.java, bridge/GrpcBridgeClient.java)
- 132 test files in src/test/
- the Maven pom in crates/java-omgdds/java/pom.xml
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::serviceEnvironmentBootstrapBySystemProperty
(boots the surface across org/omg/dds/**) plus the 128 test classes
Maven collects from src/test/java: 940 tests, 1 skipped. Invocation:
mvn -B -Pjava8 clean verify in crates/java-omgdds/java, as in the job
endpoints-java-async. The directory holds no Rust code —
there is no Cargo.toml and hence no cargo test.
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: crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::readReturnsSamplesWithoutRemoving,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::multipleReadersAllReceiveSample,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::cleanupRemovesSubscription.
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: crates/java-omgdds/java/src/test/java/org/omg/dds/Xcdr2CodecTest.java::primitivesRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/Xcdr2CodecTest.java::utf8StringRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/Xcdr2CodecTest.java::multipleStringsRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/Xcdr2CodecTest.java::shortAlignmentSkipsByte.
Status: done
§2 OMG API coverage
§2.1 org.omg.dds.core.*
Spec: §2 — Time, Duration, InstanceHandle, Entity, ReturnCode, QosProfile.
Repo: 26 Java files in org/omg/dds/core/.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/CoreTypesTest.java::timeFromMillisRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/CoreTypesTest.java::durationInfiniteRecognized,
crates/java-omgdds/java/src/test/java/org/omg/dds/CoreTypesTest.java::instanceHandleNilDetected,
crates/java-omgdds/java/src/test/java/org/omg/dds/CoreTypesTest.java::instanceHandleRejectsWrongLength,
crates/java-omgdds/java/src/test/java/org/omg/dds/ExceptionMappingTest.java::everyPsmExceptionIsAnUncheckedDdsException
— 7 tests in CoreTypesTest; the ReturnCode_t of the PIM is mapped onto exceptions (ExceptionMappingTest).
Status: done
§2.2 org.omg.dds.domain.*
Spec: §2 — DomainParticipant + DomainParticipantFactory.
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/domain/DomainParticipant.java + crates/java-omgdds/java/src/main/java/org/omg/dds/domain/DomainParticipantFactory.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::serviceEnvironmentBootstrapBySystemProperty
(DomainParticipantFactory bootstrap through the ServiceEnvironment),
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip
(the participant creates publisher and subscriber).
Status: done
§2.3 org.omg.dds.topic.*
Spec: §2 — Topic + TopicTypeSupport.
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/topic/Topic.java + crates/java-omgdds/java/src/main/java/org/zerodds/cdr/TopicTypeSupport.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::singleArgFactoryReflectsTypedBean
(the TypeSupport is derived from the topic).
Status: done
§2.4 org.omg.dds.pub.*
Spec: §2 — Publisher + DataWriter.
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/pub/Publisher.java + crates/java-omgdds/java/src/main/java/org/omg/dds/pub/DataWriter.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::multipleReadersAllReceiveSample.
Status: done
§2.5 org.omg.dds.sub.*
Spec: §2 — Subscriber + DataReader + Sample.
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/sub/Subscriber.java + crates/java-omgdds/java/src/main/java/org/omg/dds/sub/DataReader.java + crates/java-omgdds/java/src/main/java/org/omg/dds/sub/Sample.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::readReturnsSamplesWithoutRemoving,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::cleanupRemovesSubscription,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::getDataAliasesData.
Status: done
§2.6 org.omg.dds.core.policy.*
Spec: §2 — QosProfile (default-QoS path, optional XML-QoS loader).
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/core/QosProvider.java, crates/java-omgdds/java/src/main/java/org/zerodds/core/qos/QosProviderImpl.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::historyKeepLastCapsPerInstance,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::transientLocalReplaysToLateJoiner,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::exclusiveOwnershipArbitratesToHighestStrength,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::partitionIsolatesNonOverlappingEndpoints,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::requestedDeadlineMissedIsRaised,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::livelinessRxoKindAndLease,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::rxoIncompatibleReliabilityDetected
— one test per policy class in org/omg/dds/core/policy/ (History,
Durability, Ownership, Partition, Deadline, Liveliness, Reliability);
21 tests in the class overall.
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 run green.
Repo: crates/java-omgdds/java/pom.xml with a JUnit 5 setup.
Tests: the Maven Surefire run covers 123 test classes; the widest
of them is
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::byteArrayQuickstartRoundTrip.
Measured (mvn test in crates/java-omgdds/java): Tests run: 925,
Failures: 0, Errors: 0, Skipped: 3 (log /root/agent-java/logs/xt-bind-1018-070634.log on the Linux test host).
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 was removed; its crate is no longer in the tree.
Tests: single-JVM path —
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip.
Multi-JVM path —
crates/java-omgdds/java/src/test/java/org/zerodds/bridge/GrpcBridgeClientTest.java::publishThenSubscribeRoundtripThroughDds
(env-gated on ZERODDS_BRIDGE_PORT; skipped in the default run, the only
skip of the module, declared in ci/declared-skips.tsv). That the tree now goes beyond the §4 statement is
measured by
crates/java-omgdds/java/src/test/java/org/zerodds/rtps/RtpsWireTest.java::twoParticipantsExchangeSampleOverUdp.
Status: done — the routing decision of vendor-spec §4 (single-JVM over
InProcessBus, multi-JVM over the gRPC bridge) is implemented and proven.
Deviation from the spec prose: org/zerodds/rtps/ now carries a pure-Java
RTPS stack (SPDP/SEDP/DATA over UDP) that vendor-spec §6 schedules for
v2.0; the §4 phrase “no RTPS wire stack” describes the v1.0 surface, not
today’s tree.
§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: crates/java-omgdds/java/src/test/java/org/zerodds/bridge/GrpcBridgeClientTest.java::protobufSampleRoundtrips,
crates/java-omgdds/java/src/test/java/org/zerodds/bridge/GrpcBridgeClientTest.java::publishAckDecodes
(codec self-checks, always run),
crates/java-omgdds/java/src/test/java/org/zerodds/bridge/GrpcBridgeClientTest.java::publishThenSubscribeRoundtripThroughDds
(a real Java-gRPC-DDS roundtrip via crates/java-omgdds/run_grpc_bridge_e2e.sh,
env-gated on ZERODDS_BRIDGE_PORT; skipped in the default run).
Status: done — multi-JVM path implemented + e2e-proven.
Goal — zero-copy via the Foreign Memory API
Spec: Goals — “NativeAOT-friendly: Java 22 MemorySegment/Foreign-Memory-API (v1.1) for zero-copy without JNI.”
Repo: —
Tests: —
Status: open — crates/java-omgdds/ contains neither MemorySegment nor any other call of the Foreign Memory API.
§5 Stability
§5 Semver promise — v1.0 = the current surface
Spec: §6 — semver: v1.0 = the current surface (pure-Java with
InProcessBus); v1.1 = + gRPC bridge; v2.0 = + pure-Java RTPS.
Repo: crates/java-omgdds/java/pom.xml (the module version).
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::serviceEnvironmentBootstrapBySystemProperty,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::byteArrayQuickstartRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::singleArgFactoryReflectsTypedBean,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::getDataAliasesData — the class calls
the documented v1.0 surface by name; renaming or removing a type breaks the
compilation of the test module.
Status: done
Audit Status
13 done / 0 partial / 1 open / 0 blocked / 0 n/a (informative).
Test run: mvn -o test in crates/java-omgdds/java — 103 tests green,
0 failed, 1 skipped (the GrpcBridgeClientTest round trip, env-gated on
ZERODDS_BRIDGE_PORT).
Open items: zerodds-java-omgdds-1.0.open.en.md.
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 ist ein reines Maven-Java-Modul im Crates-Verzeichnis; Rust-Code enthält sie nicht:
crates/java-omgdds/java/— Pure-Java-Modul (Maven, JUnit 5)
§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: 510 Java-Files (378 unter src/main, 132 unter src/test; gezählt
mit find crates/java-omgdds/java/src -name "*.java").
- org/omg/dds/core/ (26 Files, dazu core/policy/ mit 28 Files und die Pakete core/event, core/status)
- org/omg/dds/topic/ (13 Files)
- org/omg/dds/sub/ (15 Files)
- org/omg/dds/pub/ (9 Files)
- org/omg/dds/domain/ (7 Files)
- org/omg/dds/** insgesamt 184 Files
- org/zerodds/… (194 Files, darunter crates/java-omgdds/java/src/main/java/org/zerodds/internal/InProcessBus.java,
crates/java-omgdds/java/src/main/java/org/zerodds/internal/Xcdr2Codec.java, bridge/GrpcBridgeClient.java)
- 132 Test-Files in src/test/
- Maven-Pom in crates/java-omgdds/java/pom.xml
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::serviceEnvironmentBootstrapBySystemProperty
(bootet die Surface über org/omg/dds/** hinweg) sowie die 128
Test-Klassen des Moduls, die Maven aus src/test/java einsammelt: 940
Tests, 1 übersprungen. Aufruf: mvn -B -Pjava8 clean verify in
crates/java-omgdds/java, wie im Job endpoints-java-async.
In dem Verzeichnis liegt kein Rust-Code — es gibt keine Cargo.toml und
damit auch keinen cargo-Test.
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: crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::readReturnsSamplesWithoutRemoving,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::multipleReadersAllReceiveSample,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::cleanupRemovesSubscription.
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: crates/java-omgdds/java/src/test/java/org/omg/dds/Xcdr2CodecTest.java::primitivesRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/Xcdr2CodecTest.java::utf8StringRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/Xcdr2CodecTest.java::multipleStringsRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/Xcdr2CodecTest.java::shortAlignmentSkipsByte.
Status: done
§2 OMG-API-Coverage
§2.1 org.omg.dds.core.*
Spec: §2 — Time, Duration, InstanceHandle, Entity, ReturnCode, QosProfile.
Repo: 26 Java-Files in org/omg/dds/core/.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/CoreTypesTest.java::timeFromMillisRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/CoreTypesTest.java::durationInfiniteRecognized,
crates/java-omgdds/java/src/test/java/org/omg/dds/CoreTypesTest.java::instanceHandleNilDetected,
crates/java-omgdds/java/src/test/java/org/omg/dds/CoreTypesTest.java::instanceHandleRejectsWrongLength,
crates/java-omgdds/java/src/test/java/org/omg/dds/ExceptionMappingTest.java::everyPsmExceptionIsAnUncheckedDdsException
— 7 Tests in CoreTypesTest; ReturnCode_t der PIM ist auf Ausnahmen abgebildet (ExceptionMappingTest).
Status: done
§2.2 org.omg.dds.domain.*
Spec: §2 — DomainParticipant + DomainParticipantFactory.
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/domain/DomainParticipant.java + crates/java-omgdds/java/src/main/java/org/omg/dds/domain/DomainParticipantFactory.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::serviceEnvironmentBootstrapBySystemProperty
(DomainParticipantFactory-Bootstrap über die ServiceEnvironment),
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip
(Participant erzeugt Publisher/Subscriber).
Status: done
§2.3 org.omg.dds.topic.*
Spec: §2 — Topic + TopicTypeSupport.
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/topic/Topic.java + crates/java-omgdds/java/src/main/java/org/zerodds/cdr/TopicTypeSupport.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::singleArgFactoryReflectsTypedBean
(TypeSupport wird aus dem Topic abgeleitet).
Status: done
§2.4 org.omg.dds.pub.*
Spec: §2 — Publisher + DataWriter.
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/pub/Publisher.java + crates/java-omgdds/java/src/main/java/org/omg/dds/pub/DataWriter.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::multipleReadersAllReceiveSample.
Status: done
§2.5 org.omg.dds.sub.*
Spec: §2 — Subscriber + DataReader + Sample.
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/sub/Subscriber.java + crates/java-omgdds/java/src/main/java/org/omg/dds/sub/DataReader.java + crates/java-omgdds/java/src/main/java/org/omg/dds/sub/Sample.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::readReturnsSamplesWithoutRemoving,
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::cleanupRemovesSubscription,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::getDataAliasesData.
Status: done
§2.6 org.omg.dds.core.policy.*
Spec: §2 — QosProfile (Default-QoS-Pfad, optional XML-QoS-Loader).
Repo: crates/java-omgdds/java/src/main/java/org/omg/dds/core/QosProvider.java, crates/java-omgdds/java/src/main/java/org/zerodds/core/qos/QosProviderImpl.java.
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::historyKeepLastCapsPerInstance,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::transientLocalReplaysToLateJoiner,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::exclusiveOwnershipArbitratesToHighestStrength,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::partitionIsolatesNonOverlappingEndpoints,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::requestedDeadlineMissedIsRaised,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::livelinessRxoKindAndLease,
crates/java-omgdds/java/src/test/java/org/omg/dds/QosLifecycleTest.java::rxoIncompatibleReliabilityDetected
— je ein Test pro Policy-Klasse in org/omg/dds/core/policy/
(History, Durability, Ownership, Partition, Deadline, Liveliness,
Reliability); 21 Tests in der Klasse insgesamt.
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 grün laufen.
Repo: crates/java-omgdds/java/pom.xml mit JUnit-5-Setup.
Tests: Der Maven-Surefire-Lauf umfasst 123 Test-Klassen; die
breiteste davon ist
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::byteArrayQuickstartRoundTrip.
Gemessen (mvn test in crates/java-omgdds/java): Tests run: 925,
Failures: 0, Errors: 0, Skipped: 3 (Log /root/agent-java/logs/xt-bind-1018-070634.log auf dem Linux-Testhost).
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 wurde entfernt; ihre Crate ist nicht mehr im Baum.
Tests: Single-JVM-Pfad —
crates/java-omgdds/java/src/test/java/org/omg/dds/PubSubLoopbackTest.java::singleWriterSingleReaderRoundTrip.
Multi-JVM-Pfad —
crates/java-omgdds/java/src/test/java/org/zerodds/bridge/GrpcBridgeClientTest.java::publishThenSubscribeRoundtripThroughDds
(env-gated über ZERODDS_BRIDGE_PORT; im Default-Lauf übersprungen, der
einzige Skip des Moduls, deklariert in ci/declared-skips.tsv). Dass der Baum inzwischen über die §4-Aussage
hinausgeht, misst
crates/java-omgdds/java/src/test/java/org/zerodds/rtps/RtpsWireTest.java::twoParticipantsExchangeSampleOverUdp.
Status: done — die Routing-Entscheidung der Vendor-Spec §4 (Single-JVM
über InProcessBus, Multi-JVM über die gRPC-Bridge) ist implementiert und
belegt. Abweichung zur Spec-Prosa: org/zerodds/rtps/ trägt inzwischen
einen Pure-Java-RTPS-Stack (SPDP/SEDP/DATA über UDP), den Vendor-Spec §6
erst für v2.0 vorsieht; die §4-Aussage „kein RTPS-Wire-Stack” beschreibt
die v1.0-Surface, nicht den heutigen Baum.
§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: crates/java-omgdds/java/src/test/java/org/zerodds/bridge/GrpcBridgeClientTest.java::protobufSampleRoundtrips,
crates/java-omgdds/java/src/test/java/org/zerodds/bridge/GrpcBridgeClientTest.java::publishAckDecodes
(Codec-Self-Checks, laufen immer),
crates/java-omgdds/java/src/test/java/org/zerodds/bridge/GrpcBridgeClientTest.java::publishThenSubscribeRoundtripThroughDds
(echter Java-gRPC-DDS-Roundtrip via crates/java-omgdds/run_grpc_bridge_e2e.sh,
env-gated über ZERODDS_BRIDGE_PORT; im Default-Lauf übersprungen).
Status: done — Multi-JVM-Pfad implementiert + e2e-belegt.
Ziel — Zero-Copy über die Foreign-Memory-API
Spec: Ziele — „NativeAOT-friendly: Java 22 MemorySegment/Foreign-Memory-API (v1.1) for zero-copy without JNI.“
Repo: —
Tests: —
Status: open — crates/java-omgdds/ enthält weder MemorySegment noch einen anderen Aufruf der Foreign-Memory-API.
§5 Stabilität
§5 Semver-Zusage — v1.0 = aktuelle Surface
Spec: §6 — semver: v1.0 = aktuelle Surface (Pure-Java mit
InProcessBus); v1.1 = + gRPC-Bridge; v2.0 = + Pure-Java-RTPS.
Repo: crates/java-omgdds/java/pom.xml (Modul-Version).
Tests: crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::serviceEnvironmentBootstrapBySystemProperty,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::byteArrayQuickstartRoundTrip,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::singleArgFactoryReflectsTypedBean,
crates/java-omgdds/java/src/test/java/org/omg/dds/QuickstartApiTest.java::getDataAliasesData — die Klasse
ruft die dokumentierte v1.0-Surface namentlich auf; jede Umbenennung oder
Entfernung eines Typs bricht schon die Kompilation des Test-Moduls.
Status: done
Audit-Status
13 done / 0 partial / 1 open / 0 blocked / 0 n/a (informative).
Test-Lauf: mvn -o test in crates/java-omgdds/java — 103 Tests grün,
0 failed, 1 übersprungen (GrpcBridgeClientTest-Roundtrip, env-gated über
ZERODDS_BRIDGE_PORT).
Offene Punkte: zerodds-java-omgdds-1.0.open.md.