Building an FF-ICE Provider with SWIM Developer
This tutorial walks through creating a complete SWIM provider service for FF-ICE (Flight and Flow Information for a Collaborative Environment) messages, from the data model to a running application with automated tests.
By the end, you will have three projects:
- swim-fixm-ffice-model — JAXB data model generated from FIXM 4.3 + FF-ICE 1.1 XSD schemas
- swim-ffice-provider — Quarkus provider service that ingests FF-ICE messages from Kafka, validates and persists them, then delivers to subscribers via AMQP
- swim-ffice-provider-validator — AMQP consumer test harness that subscribes to the provider, receives events, and runs conformance tests
Already have swim-fixm-ffice-model? If you completed the FF-ICE Consumer tutorial, the data model is already in your local Maven repository. You can skip Part 1 and start directly at Part 2: Provider Service.
Prerequisites
| Tool | Version | Purpose |
|---|---|---|
| JDK | 21+ | Runtime and compilation |
| Maven | 3.9+ | Build system |
| Git | 2.40+ | Source control |
| Podman Desktop | Latest | Container runtime (includes Podman engine + GUI, available for Linux, macOS, and Windows) |
| mkcert | Latest | Local TLS certificate generation |
All commands in this tutorial are shown for Linux/macOS. Windows equivalents are provided where they differ (primarily mvnw.cmd instead of ./mvnw). On Windows, Git Bash or WSL can be used to run shell scripts (e.g., certs/generate.sh).
Setup: Install Dependencies
Each SWIM Developer component lives in its own Git repository. Clone and install only what you need.
Parent POM
git clone https://github.com/swim-developer/swim-developer
cd swim-developer
./mvnw clean install -DskipTests # Linux / macOS
mvnw.cmd clean install -DskipTests # Windows
Framework
git clone https://github.com/swim-developer/swim-developer-framework
cd swim-developer-framework
./mvnw clean install -DskipTests # Linux / macOS
mvnw.cmd clean install -DskipTests # Windows
Extensions
git clone https://github.com/swim-developer/swim-developer-extensions
cd swim-developer-extensions
./mvnw clean install -DskipTests # Linux / macOS
mvnw.cmd clean install -DskipTests # Windows
Validators
git clone https://github.com/swim-developer/swim-developer-validators
cd swim-developer-validators
./mvnw clean install -DskipTests # Linux / macOS
mvnw.cmd clean install -DskipTests # Windows
Model Archetype
git clone https://github.com/swim-developer/swim-model-archetype
cd swim-model-archetype
mvn clean install
Provider Archetype
git clone https://github.com/swim-developer/swim-provider-archetype
cd swim-provider-archetype
mvn clean install
After this setup, all artifacts are in your local Maven repository (~/.m2/repository). You can work from any directory going forward.