Skip to content

Commit 46aa3d1

Browse files
authored
spring-boot: add JacksonHibernateConfiguration (#31817)
1 parent 56b79cc commit 46aa3d1

File tree

8 files changed

+294
-21
lines changed

8 files changed

+294
-21
lines changed

generators/java/support/add-java-annotation.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@ const addJavaAnnotationToContent = (content: string, annotationDef: JavaAnnotati
4747
if (packageName) {
4848
content = addJavaImport(content, `${packageName}.${annotation}`);
4949
}
50-
const annotationToAdd = parameters ? `${annotation}(${parameters()})` : annotation;
51-
if (!new RegExp(escapeRegExp(`\n@${annotationToAdd}\n`)).test(content)) {
52-
if (new RegExp(escapeRegExp(`\n@${annotation}(`)).test(content)) {
53-
throw new Error(`Annotation already exists: ${annotation} replace is not implemented yet.`);
54-
}
50+
const annotationWithParametersMatches = content.match(new RegExp(`@${annotation}\\((?<oldParameters>[^)]*)\\)`));
51+
const annotationToAdd = parameters ? `${annotation}(${parameters(annotationWithParametersMatches?.groups?.oldParameters)})` : annotation;
52+
if (annotationWithParametersMatches) {
53+
content = content.replace(new RegExp(`@${annotation}\\((?<oldParameters>[^)]*)\\)`), `@${annotationToAdd}`);
54+
} else if (!new RegExp(escapeRegExp(`\n@${annotationToAdd}\n`)).test(content)) {
5555
// add the annotation before class or interface
5656
content = content.replace(/\n([a-w ]*(class|@?interface|enum) )/, `\n@${annotationToAdd}\n$1`);
5757
}

generators/server/__snapshots__/generator.spec.ts.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,9 @@ exports[`generator - server with entities should match files snapshot 1`] = `
629629
"src/main/java/com/mycompany/myapp/config/JacksonConfiguration.java": {
630630
"stateCleared": "modified",
631631
},
632+
"src/main/java/com/mycompany/myapp/config/JacksonHibernateConfiguration.java": {
633+
"stateCleared": "modified",
634+
},
632635
"src/main/java/com/mycompany/myapp/config/LiquibaseConfiguration.java": {
633636
"stateCleared": "modified",
634637
},

generators/server/support/__snapshots__/needles.spec.ts.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ exports[`generator - server - support - needles generated project should match s
113113
"src/main/java/com/mycompany/myapp/config/JacksonConfiguration.java": {
114114
"stateCleared": "modified",
115115
},
116+
"src/main/java/com/mycompany/myapp/config/JacksonHibernateConfiguration.java": {
117+
"stateCleared": "modified",
118+
},
116119
"src/main/java/com/mycompany/myapp/config/LoggingAspectConfiguration.java": {
117120
"stateCleared": "modified",
118121
},

generators/spring-boot/templates/src/main/java/_package_/config/JacksonConfiguration.java.ejs

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@
1818
-%>
1919
package <%= packageName %>.config;
2020

21-
<%_ if (databaseTypeSql && !reactive) { _%>
22-
import com.fasterxml.jackson.datatype.hibernate6.Hibernate6Module;
23-
import com.fasterxml.jackson.datatype.hibernate6.Hibernate6Module.Feature;
24-
<%_ } _%>
2521
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
2622
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
2723

@@ -44,14 +40,4 @@ public class JacksonConfiguration {
4440
public Jdk8Module jdk8TimeModule() {
4541
return new Jdk8Module();
4642
}
47-
<%_ if (databaseTypeSql && !reactive) { _%>
48-
49-
/*
50-
* Support for Hibernate types in Jackson.
51-
*/
52-
@Bean
53-
public Hibernate6Module hibernate6Module() {
54-
return new Hibernate6Module().configure(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS, true);
55-
}
56-
<%_ } _%>
5743
}

0 commit comments

Comments
 (0)