X.Justiz.Core

SDK-Generierungs-Workflow

[!TIP]
🌐 English version available here 👈

Dieses Dokument erklärt, wie die Konsistenz der SDKs über verschiedene Programmiersprachen hinweg in diesem Open-Source-Projekt gewahrt wird.

Übersicht

Das .NET-Projekt ist die „Single Source of Truth“ (einzige Quelle der Wahrheit) für alle Modelle. Die Modelle des Java-SDKs werden manuell gepflegt und gegen das generierte JSON-Schema geprüft, um Parität sicherzustellen.

.NET Models → JSON Schema
                    ↓
         Parity Tests prüfen Java-Übereinstimmung

Funktionsweise

1. Schema-Generierung

Wenn sich .NET-Modelle ändern, generiert das XsdGenerator-Projekt folgendes neu:

2. Java SDK

Die Java-Modelle werden manuell in sdk/java/src/main/java/de/xjustiz/core/models/ erstellt.

Automatisierte Paritätstests überprüfen, ob die Java-Modelle:

3. Paritätsprüfung

Die Pipeline führt aus:

Wird eine Abweichung gefunden, schlägt die Pipeline fehl.

Für Mitwirkende

Ändern von .NET-Modellen

  1. Ändern Sie die .NET-Modelle in sdk/dotnet/src/xjustiz.core-dotnet/Models/
  2. Pushen Sie Ihre Änderungen
  3. Die Pipeline generiert das JSON-Schema neu
  4. Aktualisieren Sie manuell die entsprechenden Java-Modelle bei Bedarf
  5. Paritätstests werden fehlschlagen, wenn die Java-Modelle nicht übereinstimmen

Synchronisieren der Java-Modelle von .NET

Verwenden Sie das Synchronisierungsskript, um Java-Modelle automatisch basierend auf .NET-Modellen zu aktualisieren:

python scripts/sync-java-models.py

Das Skript wird:

Lokales Ausführen der Paritätstests

# Java Paritätstests (via Gradle)
cd sdk/java && gradle test --tests "*SchemaParityTest*"

Verzeichnisstruktur

X.Justiz.Core/
├── sdk/dotnet/src/xjustiz.core-dotnet/    # Source of Truth
│   └── Models/                          # .NET Modelle (hier bearbeiten)
├── schemas/
│   └── xjustiz-core.schema.json        # Generiert aus .NET
├── sdk/java/src/main/java/de/xjustiz/core/
│   ├── models/                          # Java Modelle (synchronisiert von .NET)
│   └── serialization/                   # Handgeschriebene Hilfsprogramme
└── scripts/
    └── sync-java-models.py              # Synchronisiert Java-Modelle von .NET

Siehe auch