Skip to content

🚀 Aether Generators v1.1.2 – Compile‑safety & predictable relation traversal

Latest

Choose a tag to compare

@Splatcrafter Splatcrafter released this 02 Sep 14:20
· 1 commit to main since this release

🚀 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), while prePersistRelations(..) 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_LIMIT behavior.

📝 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.