Skip to content

Commit 95b6fbf

Browse files
Version 1.1.1
1 parent 4d28095 commit 95b6fbf

File tree

6 files changed

+35
-8
lines changed

6 files changed

+35
-8
lines changed

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [unreleased]
99

10+
## [1.1.1] - 2025-01-17
11+
12+
### Changed
13+
- Optimized search tuple management
14+
1015
## [1.1.0] - 2025-01-10
1116

1217
### Changed
@@ -113,7 +118,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
113118
### Added
114119
- Initial functional version of Apigen
115120

116-
[unreleased]: https://github.com/apiaddicts/apigen/releases/tag/1.1.0...HEAD
121+
[unreleased]: https://github.com/apiaddicts/apigen/releases/tag/1.1.1...HEAD
122+
[1.1.1]: https://github.com/apiaddicts/apigen/releases/tag/1.1.1
117123
[1.1.0]: https://github.com/apiaddicts/apigen/releases/tag/1.1.0
118124
[1.0.1]: https://github.com/apiaddicts/apigen/releases/tag/1.0.1
119125
[1.0.0]: https://github.com/apiaddicts/apigen/releases/tag/1.0.0

MIGRATION_GUIDE.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
All changes required to migrate generated Apigen projects to new versions will be documented in this file.
44

5+
## From [1.1.0] to [1.1.1]
6+
7+
No migration required
8+
59
## From [1.0.1] to [1.1.0]
610

711
Update the management endpoints properties
@@ -94,7 +98,8 @@ In this version Apigen has been updated to be auto documented with `spring-doc`
9498
- Perform the Spring Boot migration from `2.4.x` to `2.6.x`
9599
- Remove the property `apigen.documentation.enabled`, now the documentation is managed by the `spring-doc` official properties
96100

97-
[unreleased]: https://github.com/apiaddicts/apigen/releases/tag/1.1.0...HEAD
101+
[unreleased]: https://github.com/apiaddicts/apigen/releases/tag/1.1.1...HEAD
102+
[1.1.1]: https://github.com/apiaddicts/apigen/releases/tag/1.1.0
98103
[1.1.0]: https://github.com/apiaddicts/apigen/releases/tag/1.1.0
99104
[1.0.1]: https://github.com/apiaddicts/apigen/releases/tag/1.0.1
100105
[1.0.0]: https://github.com/apiaddicts/apigen/releases/tag/1.0.0

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
# 🛠️ Apigen ![Release](https://img.shields.io/badge/release-1.1.0-purple) ![Swagger](https://img.shields.io/badge/-openapi-%23Clojure?style=flat&logo=swagger&logoColor=white) ![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=flat&logo=openjdk&logoColor=white) ![Spring](https://img.shields.io/badge/spring-%236DB33F.svg?style=flat&logo=spring&logoColor=white) [![License: LGPL v3](https://img.shields.io/badge/license-LGPL_v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)
2+
# 🛠️ Apigen ![Release](https://img.shields.io/badge/release-1.1.1-purple) ![Swagger](https://img.shields.io/badge/-openapi-%23Clojure?style=flat&logo=swagger&logoColor=white) ![Java](https://img.shields.io/badge/java-%23ED8B00.svg?style=flat&logo=openjdk&logoColor=white) ![Spring](https://img.shields.io/badge/spring-%236DB33F.svg?style=flat&logo=spring&logoColor=white) [![License: LGPL v3](https://img.shields.io/badge/license-LGPL_v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)
33

44
Welcome to **apigen.springboot**, made in spain ![Spain](https://raw.githubusercontent.com/stevenrskelton/flag-icon/master/png/16/country-4x3/es.png "Spain"), the opensource project in Java that allows you to generate an archetype of the springboot framework using the openapi file as a mapping tool between the openapi definition and the database. Click maven to see available mvnrepository dependencies.
55

@@ -42,7 +42,7 @@ Feel free to drop by and greet us on our GitHub discussion or Discord chat. You
4242
version: "3.3"
4343
services:
4444
apigen:
45-
image: "apiaddicts/apitools-apigen:1.1.0"
45+
image: "apiaddicts/apitools-apigen:1.1.1"
4646
ports:
4747
- "8080:8080"
4848
```

archetype-core-persistence/src/main/java/org/apiaddicts/apitools/apigen/archetypecore/core/persistence/executor/TupleMapper.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
import lombok.Getter;
55
import lombok.extern.slf4j.Slf4j;
66
import org.apiaddicts.apitools.apigen.archetypecore.core.persistence.ApigenAbstractPersistable;
7-
import org.apache.commons.beanutils.BeanUtils;
87
import org.apache.commons.beanutils.PropertyUtils;
98
import org.springframework.util.StringUtils;
109

1110
import jakarta.persistence.Tuple;
1211
import java.io.Serializable;
12+
import java.lang.reflect.Field;
1313
import java.util.*;
14+
import java.util.concurrent.ConcurrentHashMap;
1415
import java.util.stream.Collectors;
1516
import java.util.stream.IntStream;
1617

@@ -23,6 +24,7 @@ public class TupleMapper {
2324
private final EntityInfo entityData;
2425
private final EntityLookup lookup;
2526
private List<EntityAttributesGroup> groups;
27+
private static final Map<Class<?>, Map<String, Field>> fieldCache = new ConcurrentHashMap<>();
2628

2729
public TupleMapper(List<String> fields, EntityInfo entityData, Class<?> clazz) {
2830
this.clazz = clazz;
@@ -151,7 +153,21 @@ private void addIfAbsentObject(ApigenAbstractPersistable<?> entity, String attri
151153

152154
private void setFieldValue(ApigenAbstractPersistable<?> instance, String field, Object value) {
153155
try {
154-
BeanUtils.copyProperty(instance, field, value);
156+
Class<?> clazz = instance.getClass();
157+
Map<String, Field> fields = fieldCache.computeIfAbsent(clazz, cls -> {
158+
Map<String, Field> map = new ConcurrentHashMap<>();
159+
for (Field f : cls.getDeclaredFields()) {
160+
f.setAccessible(true);
161+
map.put(f.getName(), f);
162+
}
163+
return map;
164+
});
165+
Field f = fields.get(field);
166+
if (f != null) {
167+
f.set(instance, value);
168+
} else {
169+
throw new NoSuchFieldException("Field " + field + " not found in " + clazz.getName());
170+
}
155171
} catch (Exception e) {
156172
log.warn("Attribute '{}' of entity {} can not be set", instance.getClass(), e);
157173
}

archetype-parent-spring-boot/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
<properties>
4040

41-
<revision>1.1.0</revision>
41+
<revision>1.1.1</revision>
4242

4343
<java.version>21</java.version>
4444
<maven.compiler.source>21</maven.compiler.source>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
<properties>
4141

42-
<revision>1.1.0</revision>
42+
<revision>1.1.1</revision>
4343

4444
<java.version>21</java.version>
4545
<maven.compiler.source>21</maven.compiler.source>

0 commit comments

Comments
 (0)