🚀 Aether Generators v1.1.2 – Compile‑safety & predictable relation traversal
Warning
After this release there was a bug that needed to be fixed before deployment.
To avoid compile errors we changed the version of the Auto-Services library that has been changed on bumping back to 1.1.1
This patch release fixes a compile‑time break in generated MVC builders and clarifies traversal semantics for relation pre‑persistence. It is a drop‑in update over 1.1.1.
✨ Highlights in 1.1.2
- âś… Fix (codegen): Unique local names per relation in generated
prePersistRelations(..)(e.g.,rel_<field>,col_<field>). Prevents duplicate‑identifier compilation errors when an entity has multiple relations. - ✅ Traversal semantics: Cycle guard lives in
ensurePersistent(..)(identity‑based), whileprePersistRelations(..)purely walks relations. This removes premature early‑returns and keeps traversal predictable. - ✅ Depth limit confirmed: Strict enforcement of
REL_DEPTH_LIMIT— relations beyond the limit are not traversed, keeping pre‑persist bounded and deterministic. - ✅ Test suite hardening: Builder‑first integration tests (no raw
new) for depth‑limited traversal, cyclic graphs, and collection APIs (add*,addAll*,clear*).
📦 Installation
Tip
Use the BOM and just bump to 1.1.2. No additional repositories required.
Maven (BOM + modules)
<!-- pom.xml -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>de.splatgames.aether</groupId>
<artifactId>aether-generators-bom</artifactId>
<version>1.1.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- MVC builders (annotations + runtime) -->
<dependency>
<groupId>de.splatgames.aether</groupId>
<artifactId>aether-generators-mvc-annotations</artifactId>
</dependency>
<dependency>
<groupId>de.splatgames.aether</groupId>
<artifactId>aether-generators-mvc-runtime</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>de.splatgames.aether</groupId>
<artifactId>aether-generators-mvc-processor</artifactId>
<version>1.1.2</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>Gradle (BOM + modules)
dependencies {
implementation platform('de.splatgames.aether:aether-generators-bom:1.1.2')
// MVC builders
implementation 'de.splatgames.aether:aether-generators-mvc-annotations'
implementation 'de.splatgames.aether:aether-generators-mvc-runtime'
annotationProcessor 'de.splatgames.aether:aether-generators-mvc-processor:1.1.2'
}🛠️ Upgrade Notes
- No breaking changes.
- Generated builders get safer local naming in relation traversal; you do not need to regenerate code manually — recompile is sufficient.
- If you rely on test assertions around depth/graph traversal, verify them against the strict
REL_DEPTH_LIMITbehavior.
📝 Changelog
Bug Fixes
- Prevent duplicate local variables in generated
prePersistRelations(..)causing compile errors on entities with multiple relations. - Keep cycle detection in
ensurePersistent(..)only (identity‑based), avoiding premature termination of traversal. - Confirmed strict enforcement of
REL_DEPTH_LIMIT; updated tests to assert only reachable relations are persisted.
📜 License
MIT License. See LICENSE for details and NOTICE for third‑party attributions.