2. Architecture Constraints
Technical Constraints
| ID | Constraint | Consequence |
|---|---|---|
TC1 |
Java 21 |
|
TC2 |
Maven 3.9.2 or later |
Enforced by |
TC3 |
Confluence Cloud REST API v2 |
The client is generated from Atlassian’s OpenAPI v2 specification. Confluence Server and Data Center are not supported, because their API differs. |
TC4 |
Attachment upload only exists in API v1 |
REST v2 has no endpoint that creates an attachment. The one v1 call
|
TC5 |
Confluence Storage Format is XHTML |
Content must be well-formed XML, not lenient HTML. Determines how documents are parsed and serialised, see 8. Cross-cutting Concepts. |
TC6 |
Antora 3.1 output structure |
The parser reads the generated |
Organisational and Legal Constraints
| ID | Constraint | Consequence |
|---|---|---|
OC1 |
Apache License 2.0 |
Every dependency must carry a compatible licence. Source files keep the licence header. |
OC2 |
Distribution via Maven Central |
Requires GPG-signed artifacts, sources and javadoc JARs, and complete POM metadata.
Published through |
OC3 |
Single maintainer |
The architecture favours few moving parts over completeness. Anything that cannot be maintained by one person on a spare evening does not belong in the system. |
OC4 |
Credentials are never part of the repository |
Authentication data comes from |
Conventions
-
Code style: tab indentation,
finalon locals and parameters wherever possible, Javadoc on every public type and method. -
Logging: SLF4J with parameterised messages.
infofor what happened to the space,debugfor detail,warnfor skipped-but-continued,errorfor a failed unit of work. -
Dependencies: managed centrally in the parent POM via
dependencyManagement; modules declare artifacts without versions. -
Documentation: arc42 in AsciiDoc, published with this project’s own Maven plugin.
OC4 and quality goal 4 in 1. Introduction and Goals together forbid a
convenience that would otherwise be obvious — exposing username and password as CLI
properties. They are configuration-only parameters precisely so that they cannot land in a CI log.
|