Read-only mirror of https://github.com/jeap-admin-ch/jeap-archrepo-service — Bundesamt für Informatik und Telekommunikation. Issues & pull requests at the source. Catalog: https://www.opensource.admin.ch/en/softwares/bwaeu4 https://www.opensource.admin.ch/en/softwares/bwaeu4
  • Java 96.3%
  • JavaScript 2.8%
  • CSS 0.6%
  • HTML 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Matthias Fritschi 444c5c0ca6 JEAP-7380 Fix the SonarQube findings of the arch repo service
Works through the open findings reported by SonarQube for this project. Real
fixes wherever one exists; a commented suppression only where the finding
cannot be resolved.

Defects and deprecations
- NonEmptyHostsCondition dereferenced getAnnotationAttributes(), which is
  declared nullable, and now answers false instead of throwing. The duplicate
  test that shadowed testConditionWithEmptyProperty covers that branch instead
- dedicated exception types for the graph services and the semantic version
  parser, instead of RuntimeException
- Jackson's deprecated asText() replaced by stringValue()
- the pact test bases move off the deprecated @PactTestFor(port) to
  @MockServerConfig

Readability and hygiene
- duplicated literals extracted to constants in the three pact bases and
  ModelStub, which was also given a private constructor
- unused imports, unused loop variables and a block of commented-out code
  removed; two reluctant regex quantifiers made possessive
- two-case switches turned into if/else, a nested if merged, an empty default
  branch explained
- RhosGrafanaClient.executeQuery split in two, bringing its cognitive
  complexity under the limit
- AWSPrometheusProxyIT parameterized over its four queries
- assertion style: contains(), hasToString(), isEmpty(), chained assertThat
  runs, and a useless eq() dropped
- the @ApiResponses wrappers of the docs API replaced by repeatable
  @ApiResponse, plus two unused imports of mine

Left in place, with a comment saying why
- Aws4Signer: AwsV4HttpSigner reshapes the call (SignedRequest carries an
  SdkHttpRequest, HttpExecuteRequest needs an SdkHttpFullRequest) and nothing
  here can verify the resulting signature, since AWSPrometheusProxyIT is
  disabled and needs real AWS credentials. A wrong signature fails silently
  with a 403, so it wants its own change with a test behind it
- ComponentContext keeps collect(toList()): Stream.toList() returns a
  non-public immutable class and the Thymeleaf templates read
  'relation.value.size' reflectively, which then fails
- the TODO markers point at JEAP-6593, a separate story
- ArchitectureModel.teams is read by the equals/hashCode/toString Lombok
  generates, which Sonar cannot see
- two "hardcoded URI" findings are a pact contract path and a classpath
  template location, neither a configurable endpoint

Also names the changelog's Unreleased section [12.0.0]: the pom was already
bumped to 12.0.0-SNAPSHOT for that breaking change, so it is a release, not
pending work. The Sonar fixes here are [12.0.1].
2026-08-25 16:24:32 +02:00
.mvn/wrapper Update dependency maven to v3.9.16 2026-06-30 09:08:43 +00:00
docs JEAP-7438: make user for API configurable, change default username 2026-08-25 15:57:39 +02:00
jeap-archrepo-dbschema-model JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-docgen JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-importer-deploymentlog JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-importer-messagetype JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-importer-openapi JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-importer-pactbroker JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-importer-prometheus JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-importer-prometheus-aws JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-importer-prometheus-rhos JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-importer-reaction-observer JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-importers JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-instance JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-metamodel JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-persistence JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-test JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
jeap-archrepo-web JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
.gitignore Pull request #18: jEAP OSS preparation 2025-02-19 08:54:36 +01:00
AGENTS.md JEAP-5952 Add AGENTS.md 2026-06-09 08:50:12 +02:00
CHANGELOG.md JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
CONTRIBUTING.md Pull request #18: jEAP OSS preparation 2025-02-19 08:54:36 +01:00
LICENSE Pull request #18: jEAP OSS preparation 2025-02-19 08:54:36 +01:00
mvnw Pull request #18: jEAP OSS preparation 2025-02-19 08:54:36 +01:00
pom.xml JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
publiccode.yml JEAP-7380 Fix the SonarQube findings of the arch repo service 2026-08-25 16:24:32 +02:00
README.md JEAP-7380 Arch Repo Service: REST API for the Doc Service 2026-08-25 14:09:24 +02:00
SECURITY.md Pull request #18: jEAP OSS preparation 2025-02-19 08:54:36 +01:00
setPomVersions.sh Pull request #18: jEAP OSS preparation 2025-02-19 08:54:36 +01:00
THIRD-PARTY-LICENSES.md Updating THIRD-PARTY-LICENSES.md 2026-08-24 13:34:24 +02:00

jEAP Arch Repo Service

The jEAP Arch Repo Service maintains the architecture inventory of a jEAP landscape: which systems and components exist, who owns them, which messages they exchange and which REST APIs they call. It imports that inventory continuously from the systems that already know it - deployment logs, metrics, the message type registry, the Pact broker - keeps it in one model in PostgreSQL, and exposes it over REST.

It is a library, not a deployable service: a jEAP microservice adds it as a Maven dependency and supplies the configuration. See Getting started.

flowchart LR
    S["Deployment log<br/>Metrics<br/>Message type registry<br/>Pact broker<br/>Reaction observer"] --> I["Importers"]
    I --> M["Architecture model"]
    M --> DB[("PostgreSQL")]
    DB --> A["REST APIs"]
    DB --> C["Confluence export"]

Documentation

Topic Contents
Concepts Why the arch repo exists, what it covers, and the conventions it relies on
Getting started Embedding the library into a microservice instance and running it
Architecture The modules, the architecture model, and the two scheduled jobs
Data model The entities, their relationships and their tables
Importers The importer plugin extension point and the importers that ship with the library
API The REST API: the model, OpenAPI specs, database schemas and jobs
Docs API The segregated read API over the model, for the jEAP Doc Service
Documentation generator The generated Confluence documentation
Operations The scheduled jobs, monitoring, and the maintenance that stays manual
Configuration All configuration properties, with their defaults
Security The two authentication mechanisms and the semantic roles

Changes

This library is versioned using Semantic Versioning and all changes are documented in CHANGELOG.md following the format defined in Keep a Changelog.

Note

This repository is part the open source distribution of jEAP. See github.com/jeap-admin-ch/jeap for more information.

License

This repository is Open Source Software licensed under the Apache License 2.0.