Skip to content
This repository was archived by the owner on Feb 23, 2026. It is now read-only.

Commit 830da38

Browse files
committed
Bump version to 1.1.1 and update references across all modules. Include changelog updates with bug fixes and enhancements.
1 parent 58acfd1 commit 830da38

16 files changed

Lines changed: 74 additions & 31 deletions

File tree

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,37 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
66

77
---
88

9+
## [1.1.1] - 2025-09-01
10+
11+
### Bug Fixes
12+
13+
- Fixed `TransientObjectException` when persisting entities with cyclic associations by introducing a safe pre-persist
14+
traversal (depth limit + identity-based cycle guard).
15+
- Correct handling for `asIdOnly` to-one relations: the builder now assigns identifiers via a robust `writeId(...)`
16+
path (tries `setId(...)` first, then falls back to the `id` field), preventing transient references from being
17+
flushed.
18+
- Reflection utilities hardened:
19+
- `getFieldValue(...)` prefers JavaBean getters (`getX`/`isX`) and falls back to hierarchical field lookup.
20+
- `setFieldReflect(...)` walks superclasses and no-ops on access errors instead of throwing.
21+
22+
### Enhancements
23+
24+
- Clearer diagnostics during builder generation (defaults provider checks, missing no-arg constructor, and generated API
25+
name conflicts).
26+
- Safer `SpringPersistAdapter.save(...)`: repository-first; falls back to `EntityManager.persist/merge` based on runtime
27+
identifier presence.
28+
29+
### Compatibility
30+
31+
- No breaking changes to generated builder APIs; no migration required.
32+
33+
### Tests
34+
35+
- Added/updated integration tests covering:
36+
- `withRoleId(...)` wiring to an existing FK without creating phantom entities.
37+
- cyclic supervisor relations to verify traversal + cycle guard do not produce transient flush errors.
38+
- collection setter assignability (`Collection` vs `List`) for generated builders.
39+
940
## [1.1.0] - 2025-09-01
1041

1142
### Improvements
@@ -27,11 +58,15 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
2758
## [1.0.1] - 2025-09-01
2859

2960
### Bug Fixes
61+
3062
- Replaced falsely implemented Splatgames.de internal validations library with `java.util.Objects` for null checks.
3163

3264
### Enhancements
65+
3366
- Added NOTICE file to the project root to comply with Apache-2.0 license requirements.
3467

3568
## [1.0.0] - 2025-08-31
69+
3670
### 🎉 Initial Release
71+
3772
- First stable release of the project.

README.md

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
![License](https://img.shields.io/badge/license-MIT-red)
22
![Maven Central](https://img.shields.io/maven-central/v/de.splatgames.aether/aether-generators)
3-
![Version](https://img.shields.io/badge/version-1.1.0-green)
3+
![Version](https://img.shields.io/badge/version-1.1.1-green)
44

55
# Aether Generators 🚀
66

@@ -17,6 +17,7 @@ support realistic test workflows.
1717
and optional multi‑output (e.g. `EmployeeDto`, `TransactionDto`).
1818

1919
**MVC Builder Generator**: Generates `*Builder` for your entities with a clean testing API:
20+
2021
- `transient()` and `persistent()` modes
2122
- `create()` / `createMany(n)`
2223
- `withX(...)` fluent setters
@@ -35,44 +36,49 @@ and optional multi‑output (e.g. `EmployeeDto`, `TransactionDto`).
3536
Aether Generators is available via **Maven** and **Gradle**.
3637

3738
#### **Maven**
39+
3840
> 🎉 All Aether products are available on **Maven Central** – no extra repository required!
3941
4042
```xml
43+
4144
<dependency>
4245
<groupId>de.splatgames.aether</groupId>
4346
<artifactId>aether-generators</artifactId>
44-
<version>1.1.0</version>
47+
<version>1.1.1</version>
4548
</dependency>
4649
```
4750

4851
#### **Gradle**
4952

5053
```groovy
5154
dependencies {
52-
implementation 'de.splatgames.aether:aether-generators:1.1.0'
55+
implementation 'de.splatgames.aether:aether-generators:1.1.1'
5356
}
5457
```
5558

56-
> ℹ️ Fine‑grained usage per module (e.g., `aether-mvc-annotations`, `aether-mvc-runtime`, `aether-mvc-processor`) is supported; the umbrella artifact provides an easy start.
59+
> ℹ️ Fine‑grained usage per module (e.g., `aether-mvc-annotations`, `aether-mvc-runtime`, `aether-mvc-processor`) is
60+
> supported; the umbrella artifact provides an easy start.
5761
5862
---
5963

6064
## 🚀 Quick Start
6165

6266
**1. Annotate your entity**
67+
6368
```java
6469
import de.splatgames.aether.mvcbuilder.annotations.MvcBuilder;
6570

6671
@MvcBuilder
6772
public class Role {
68-
private Long id; // ignored by builder if annotated accordingly
69-
private String name;
70-
private boolean isDefault;
71-
// @ManyToMany List<Permission> permissions;
73+
private Long id; // ignored by builder if annotated accordingly
74+
private String name;
75+
private boolean isDefault;
76+
// @ManyToMany List<Permission> permissions;
7277
}
7378
```
7479

7580
**2. Use the generated builder in tests**
81+
7682
```java
7783
// Transient object (no DB writes)
7884
var role = new RoleBuilder()
@@ -89,23 +95,25 @@ var persisted = new RoleBuilder(new SpringPersistAdapter(ctx), new RoleDefaults(
8995
```
9096

9197
**3. Enable annotation processing (Maven)**
98+
9299
```xml
100+
93101
<plugin>
94-
<groupId>org.apache.maven.plugins</groupId>
95-
<artifactId>maven-compiler-plugin</artifactId>
96-
<version>3.11.0</version>
97-
<configuration>
98-
<parameters>true</parameters>
99-
<release>17</release>
100-
</configuration>
102+
<groupId>org.apache.maven.plugins</groupId>
103+
<artifactId>maven-compiler-plugin</artifactId>
104+
<version>3.11.0</version>
105+
<configuration>
106+
<parameters>true</parameters>
107+
<release>17</release>
108+
</configuration>
101109
</plugin>
102110
```
103111

104112
---
105113

106114
## 📢 Latest Release
107115

108-
- 🚀 **Version:** `1.1.0`
116+
- 🚀 **Version:** `1.1.1`
109117
- 📅 **Release Date:** `September 1, 2025`
110118
- 📦 **Available on**:
111119
[![Maven Central](https://img.shields.io/maven-central/v/de.splatgames.aether/aether-generators)](https://search.maven.org/artifact/de.splatgames.aether/aether-generators)

aether-generators-bom/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>de.splatgames.aether</groupId>
88
<artifactId>aether-generators</artifactId>
9-
<version>1.1.0</version>
9+
<version>1.1.1</version>
1010
</parent>
1111

1212
<artifactId>aether-generators-bom</artifactId>

aether-generators-dto/aether-generators-dto-annotations/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>de.splatgames.aether</groupId>
99
<artifactId>aether-generators-dto</artifactId>
10-
<version>1.1.0</version>
10+
<version>1.1.1</version>
1111
</parent>
1212

1313
<artifactId>aether-generators-dto-annotations</artifactId>

aether-generators-dto/aether-generators-dto-annotations/src/main/java/de/splatgames/aether/generators/dto/annotations/Dto.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
* <dependency>
9090
* <groupId>de.splatgames.aether</groupId>
9191
* <artifactId>aether-generators-bom</artifactId>
92-
* <version>1.1.0</version>
92+
* <version>1.1.1</version>
9393
* <type>pom</type>
9494
* <scope>import</scope>
9595
* </dependency>
@@ -116,7 +116,7 @@
116116
* <path>
117117
* <groupId>de.splatgames.aether</groupId>
118118
* <artifactId>aether-generators-dto-processor</artifactId>
119-
* <version>1.1.0</version>
119+
* <version>1.1.1</version>
120120
* </path>
121121
* </annotationProcessorPaths>
122122
* <generatedSourcesDirectory>

aether-generators-dto/aether-generators-dto-annotations/src/main/java/de/splatgames/aether/generators/dto/annotations/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
* <dependency>
5252
* <groupId>de.splatgames.aether</groupId>
5353
* <artifactId>aether-generators-bom</artifactId>
54-
* <version>1.1.0</version>
54+
* <version>1.1.1</version>
5555
* <type>pom</type>
5656
* <scope>import</scope>
5757
* </dependency>

aether-generators-dto/aether-generators-dto-examples/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>de.splatgames.aether</groupId>
88
<artifactId>aether-generators-dto</artifactId>
9-
<version>1.1.0</version>
9+
<version>1.1.1</version>
1010
</parent>
1111

1212
<artifactId>aether-generators-dto-examples</artifactId>

aether-generators-dto/aether-generators-dto-processor/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>de.splatgames.aether</groupId>
99
<artifactId>aether-generators-dto</artifactId>
10-
<version>1.1.0</version>
10+
<version>1.1.1</version>
1111
</parent>
1212

1313
<artifactId>aether-generators-dto-processor</artifactId>

aether-generators-dto/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>de.splatgames.aether</groupId>
99
<artifactId>aether-generators</artifactId>
10-
<version>1.1.0</version>
10+
<version>1.1.1</version>
1111
</parent>
1212

1313
<artifactId>aether-generators-dto</artifactId>

aether-generators-mvc/aether-generators-mvc-adapter-spring/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>de.splatgames.aether</groupId>
88
<artifactId>aether-generators-mvc</artifactId>
9-
<version>1.1.0</version>
9+
<version>1.1.1</version>
1010
</parent>
1111

1212
<artifactId>aether-generators-mvc-adapter-spring</artifactId>

0 commit comments

Comments
 (0)