generator-jhipster 7.7.0 → 7.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/generators/app/index.js +10 -0
- package/generators/ci-cd/index.js +1 -1
- package/generators/ci-cd/templates/github-actions.yml.ejs +4 -4
- package/generators/client/files-common.js +1 -2
- package/generators/client/files-react.js +25 -2
- package/generators/client/index.js +1 -1
- package/generators/client/needle-api/needle-client-react.js +11 -8
- package/generators/client/templates/angular/angular.json.ejs +1 -9
- package/generators/client/templates/angular/jest.conf.js.ejs +1 -1
- package/generators/client/templates/angular/package.json +17 -18
- package/generators/client/templates/angular/package.json.ejs +1 -1
- package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +1 -1
- package/generators/client/templates/angular/src/main/webapp/app/core/util/data-util.service.ts.ejs +1 -1
- package/generators/client/templates/angular/src/main/webapp/app/core/util/parse-links.service.ts.ejs +1 -1
- package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +12 -1
- package/generators/client/templates/common/package.json +7 -6
- package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +2 -3
- package/generators/client/templates/react/.eslintrc.json.ejs +1 -1
- package/generators/client/templates/react/jest.conf.js.ejs +1 -1
- package/generators/client/templates/react/package.json +30 -31
- package/generators/client/templates/react/package.json.ejs +1 -0
- package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/config/store.ts.ejs +53 -6
- package/generators/client/templates/react/src/main/webapp/app/config/translation-middleware.ts.ejs +58 -0
- package/generators/client/templates/react/src/main/webapp/app/entities/menu.tsx.ejs +45 -0
- package/generators/client/templates/react/src/main/webapp/app/entities/reducers.ts.ejs +25 -0
- package/generators/client/templates/react/src/main/webapp/app/entities/routes.tsx.ejs +47 -0
- package/generators/client/templates/react/src/main/webapp/app/index.tsx.ejs +7 -7
- package/generators/client/templates/react/src/main/webapp/app/main.tsx.ejs +19 -0
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/logs/logs.tsx.ejs +1 -1
- package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +2 -1
- package/generators/client/templates/react/src/main/webapp/app/modules/login/login-modal.tsx.ejs +5 -1
- package/generators/client/templates/react/src/main/webapp/app/routes.tsx.ejs +24 -7
- package/generators/client/templates/react/src/main/webapp/app/shared/error/error-loading.tsx.ejs +15 -0
- package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/entities.tsx.ejs +34 -6
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/index.ts.ejs +9 -2
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs +9 -3
- package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.ts.ejs +21 -5
- package/generators/client/templates/react/src/main/webapp/app/typings.d.ts.ejs +15 -0
- package/generators/client/templates/react/src/main/webapp/microfrontends/entities-menu.tsx.ejs +3 -0
- package/generators/client/templates/react/src/main/webapp/microfrontends/entities-routes.tsx.ejs +3 -0
- package/generators/client/templates/react/tsconfig.json.ejs +3 -3
- package/generators/client/templates/react/tsconfig.test.json.ejs +9 -1
- package/generators/client/templates/react/webpack/webpack.common.js.ejs +6 -13
- package/generators/client/templates/react/webpack/webpack.dev.js.ejs +7 -8
- package/generators/client/templates/react/webpack/webpack.microfrontend.js.jhi.react.ejs +99 -0
- package/generators/client/templates/react/webpack/webpack.prod.js.ejs +31 -21
- package/generators/client/templates/vue/package.json +16 -17
- package/generators/client/templates/vue/package.json.ejs +1 -1
- package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +1 -0
- package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +1 -1
- package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +2 -2
- package/generators/client/templates/vue/tsconfig.json.ejs +0 -3
- package/generators/client/templates/vue/webpack/webpack.common.js.ejs +6 -2
- package/generators/common/templates/package.json +2 -2
- package/generators/docker-compose/index.js +9 -5
- package/generators/entity/index.js +34 -19
- package/generators/entity-client/index.js +8 -0
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +1 -1
- package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +1 -1
- package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +1 -0
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +3 -3
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-detail.tsx.ejs +5 -4
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +19 -18
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.reducer.ts.ejs +2 -2
- package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +21 -20
- package/generators/entity-i18n/templates/i18n/entity_fr.json.ejs +1 -1
- package/generators/entity-server/files.js +30 -10
- package/generators/entity-server/index.js +19 -1
- package/generators/entity-server/templates/couchbase/src/main/java/package/domain/Entity.java.jhi.spring_data_couchbase.ejs +1 -1
- package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +31 -8
- package/generators/entity-server/templates/partials/update_template.ejs +77 -0
- package/generators/entity-server/templates/reactive/partials/save_template.ejs +1 -1
- package/generators/entity-server/templates/reactive/partials/update_template.ejs +41 -0
- package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +5 -5
- package/generators/entity-server/templates/src/main/java/package/common/get_template.ejs +1 -1
- package/generators/entity-server/templates/src/main/java/package/common/inject_template.ejs +13 -4
- package/generators/entity-server/templates/src/main/java/package/common/patch_template.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +2 -1
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.javax_lifecycle_events.ejs +31 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_persistable.ejs +54 -0
- package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_reactive.ejs +1 -1
- package/generators/entity-server/templates/src/main/java/package/domain/EntityCallback.java.ejs +43 -0
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +6 -6
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +13 -16
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationshipsImpl.java.ejs +4 -3
- package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +15 -23
- package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +2 -2
- package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +12 -25
- package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +10 -2
- package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +21 -5
- package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +61 -90
- package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +6 -4
- package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +28 -15
- package/generators/generator-base-private.js +1 -1
- package/generators/generator-base.js +29 -0
- package/generators/generator-constants.js +5 -5
- package/generators/generator-transforms.js +0 -1
- package/generators/gradle/constants.cjs +1 -1
- package/generators/maven/files.cjs +0 -1
- package/generators/maven/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
- package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +18 -2
- package/generators/maven/templates/mvnw +13 -7
- package/generators/maven/templates/mvnw.cmd +19 -13
- package/generators/maven/templates/pom.xml.jhi.ejs +1 -1
- package/generators/server/cleanup.js +19 -3
- package/generators/server/files.js +101 -17
- package/generators/server/index.js +11 -5
- package/generators/server/needle-api/needle-server-gradle.js +38 -0
- package/generators/server/templates/.mvn/jvm.config +1 -0
- package/generators/server/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
- package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +18 -2
- package/generators/server/templates/build.gradle.ejs +7 -5
- package/generators/server/templates/couchbase/src/main/java/package/repository/JHipsterCouchbaseRepository.java.ejs +24 -1
- package/generators/server/templates/devcontainer/Dockerfile.ejs +25 -0
- package/generators/server/templates/devcontainer/devcontainer.json.ejs +64 -0
- package/generators/server/templates/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/generators/server/templates/gradle.properties.ejs +4 -4
- package/generators/server/templates/mvnw +13 -7
- package/generators/server/templates/mvnw.cmd +19 -13
- package/generators/server/templates/pom.xml.ejs +19 -17
- package/generators/server/templates/settings.gradle.ejs +6 -4
- package/generators/server/templates/src/main/docker/app.yml.ejs +2 -6
- package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +2 -1
- package/generators/server/templates/src/main/docker/mysql.yml.ejs +1 -0
- package/generators/server/templates/src/main/java/package/config/AsyncConfiguration.java.ejs +6 -0
- package/generators/{client/templates/react/src/main/webapp/app/entities/index.tsx.ejs → server/templates/src/main/java/package/config/KafkaSseConsumer.java.ejs} +8 -14
- package/generators/server/templates/src/main/java/package/config/KafkaSseProducer.java.ejs +30 -0
- package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +12 -10
- package/generators/server/templates/src/main/java/package/repository/EntityManager.java.ejs +3 -3
- package/generators/server/templates/src/main/java/package/security/jwt/JWTFilter.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +1 -1
- package/generators/server/templates/src/main/java/package/web/rest/KafkaResource.java.ejs +60 -108
- package/generators/server/templates/src/main/java/package/web/rest/KafkaResource_reactive.java.ejs +74 -0
- package/generators/server/templates/src/main/resources/config/application.yml.ejs +26 -22
- package/generators/server/templates/src/test/java/package/CassandraKeyspaceIT.java.ejs +3 -4
- package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +9 -3
- package/generators/server/templates/src/test/java/package/TechnicalStructureTest.java.ejs +0 -3
- package/generators/server/templates/src/test/java/package/config/CassandraTestContainer.java.ejs +122 -0
- package/generators/server/templates/src/test/java/package/config/EmbeddedCassandra.java.ejs +11 -0
- package/generators/server/templates/src/test/java/package/config/EmbeddedKafka.java.ejs +11 -0
- package/generators/server/templates/src/test/java/package/config/EmbeddedMongo.java.ejs +11 -0
- package/generators/server/templates/src/test/java/package/config/KafkaTestContainer.java.ejs +38 -0
- package/generators/server/templates/src/test/java/package/config/MongoDbTestContainer.java.ejs +67 -0
- package/generators/server/templates/src/test/java/package/config/TestContainersSpringContextCustomizerFactory.java.ejs +114 -0
- package/generators/server/templates/src/test/java/package/cucumber/CucumberIT.java.ejs +3 -10
- package/generators/server/templates/src/test/java/package/security/DomainUserDetailsServiceIT.java.ejs +1 -4
- package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +5 -5
- package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +2 -4
- package/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs +1 -4
- package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +3 -3
- package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_oauth2.java.ejs +1 -4
- package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_skipUserManagement.java.ejs +1 -4
- package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT.java.ejs +52 -123
- package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT_reactive.java.ejs +99 -0
- package/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs +7 -10
- package/generators/server/templates/src/test/java/package/web/rest/UserJWTControllerIT.java.ejs +1 -4
- package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +2 -5
- package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs +1 -4
- package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -4
- package/generators/server/templates/src/test/resources/META-INF/spring.factories.ejs +1 -1
- package/generators/server/templates/src/test/resources/config/application.yml.ejs +21 -20
- package/generators/server/templates/src/test/resources/testcontainers.properties.ejs +1 -0
- package/generators/workspaces/index.js +2 -1
- package/package.json +15 -15
- package/utils/entity.js +2 -0
- package/utils/field.js +8 -3
- package/utils/relationship.js +10 -1
- package/generators/entity-server/templates/src/main/java/package/repository/search/SortToSortBuilderListConverter.java.ejs +0 -25
- package/generators/maven/templates/.mvn/wrapper/MavenWrapperDownloader.java +0 -117
- package/generators/server/templates/.mvn/wrapper/MavenWrapperDownloader.java +0 -117
- package/generators/server/templates/src/main/java/package/config/KafkaProperties.java.ejs +0 -68
- package/generators/server/templates/src/test/java/package/AbstractCassandraTest.java.ejs +0 -125
- package/generators/server/templates/src/test/java/package/MongoDbTestContainerExtension.java.ejs +0 -37
- package/generators/server/templates/src/test/java/package/TestContainersSpringContextCustomizerFactory.java.ejs +0 -24
|
@@ -29,11 +29,6 @@ import org.springframework.data.domain.Page;
|
|
|
29
29
|
import org.springframework.data.domain.PageImpl;
|
|
30
30
|
<%_ } _%>
|
|
31
31
|
import org.springframework.data.domain.Pageable;
|
|
32
|
-
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
|
33
|
-
import org.elasticsearch.search.sort.SortBuilder;
|
|
34
|
-
import java.util.List;
|
|
35
|
-
import org.springframework.data.domain.PageRequest;
|
|
36
|
-
|
|
37
32
|
|
|
38
33
|
<%_ } _%>
|
|
39
34
|
<%_ if (reactive) { _%>
|
|
@@ -65,7 +60,7 @@ public interface <%= entityClass %>SearchRepository extends <% if (reactive) {%>
|
|
|
65
60
|
<%_ if (reactive) { _%>
|
|
66
61
|
|
|
67
62
|
interface <%= entityClass %>SearchRepositoryInternal {
|
|
68
|
-
Flux<<%=
|
|
63
|
+
Flux<<%= persistClass %>> search(String query<% if (!paginationNo) { %>, Pageable pageable<% } %>);
|
|
69
64
|
}
|
|
70
65
|
|
|
71
66
|
class <%= entityClass %>SearchRepositoryInternalImpl implements <%= entityClass %>SearchRepositoryInternal {
|
|
@@ -77,21 +72,13 @@ class <%= entityClass %>SearchRepositoryInternalImpl implements <%= entityClass
|
|
|
77
72
|
}
|
|
78
73
|
|
|
79
74
|
@Override
|
|
80
|
-
public Flux<<%=
|
|
81
|
-
<%_ if (!paginationNo) { _%>
|
|
82
|
-
List<SortBuilder<?>> builders = new SortToSortBuilderListConverter().convert(pageable.getSort());
|
|
83
|
-
|
|
84
|
-
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder().withQuery(queryStringQuery(query))
|
|
85
|
-
.withPageable(PageRequest.of(pageable.getPageNumber(), pageable.getPageSize()));
|
|
86
|
-
|
|
87
|
-
queryBuilder.withSorts(builders);
|
|
88
|
-
|
|
89
|
-
NativeSearchQuery nativeSearchQuery = queryBuilder.build();
|
|
90
|
-
<%_ } else { _%>
|
|
75
|
+
public Flux<<%= persistClass %>> search(String query<% if (!paginationNo) { %>, Pageable pageable<% } %>) {
|
|
91
76
|
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryStringQuery(query));
|
|
92
|
-
<%_
|
|
77
|
+
<%_ if (!paginationNo) { _%>
|
|
78
|
+
nativeSearchQuery.setPageable(pageable);
|
|
79
|
+
<%_ }_%>
|
|
93
80
|
return reactiveElasticsearchTemplate
|
|
94
|
-
.search(nativeSearchQuery, <%=
|
|
81
|
+
.search(nativeSearchQuery, <%= persistClass %>.class)
|
|
95
82
|
.map(SearchHit::getContent);
|
|
96
83
|
}
|
|
97
84
|
}
|
|
@@ -99,9 +86,9 @@ class <%= entityClass %>SearchRepositoryInternalImpl implements <%= entityClass
|
|
|
99
86
|
|
|
100
87
|
interface <%= entityClass %>SearchRepositoryInternal {
|
|
101
88
|
<%_ if (paginationNo) { _%>
|
|
102
|
-
Stream<<%=
|
|
89
|
+
Stream<<%= persistClass %>> search(String query);
|
|
103
90
|
<%_ } else { _%>
|
|
104
|
-
Page<<%=
|
|
91
|
+
Page<<%= persistClass %>> search(String query, Pageable pageable);
|
|
105
92
|
<%_ } _%>
|
|
106
93
|
}
|
|
107
94
|
|
|
@@ -115,19 +102,19 @@ class <%= entityClass %>SearchRepositoryInternalImpl implements <%= entityClass
|
|
|
115
102
|
|
|
116
103
|
<%_ if (paginationNo) { _%>
|
|
117
104
|
@Override
|
|
118
|
-
public Stream<<%=
|
|
105
|
+
public Stream<<%= persistClass %>> search(String query) {
|
|
119
106
|
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryStringQuery(query));
|
|
120
107
|
return elasticsearchTemplate
|
|
121
|
-
.search(nativeSearchQuery, <%=
|
|
108
|
+
.search(nativeSearchQuery, <%= persistClass %>.class)
|
|
122
109
|
.map(SearchHit::getContent)
|
|
123
110
|
.stream();
|
|
124
111
|
}
|
|
125
112
|
<%_ } else { _%>
|
|
126
113
|
@Override
|
|
127
|
-
public Page<<%=
|
|
114
|
+
public Page<<%= persistClass %>> search(String query, Pageable pageable) {
|
|
128
115
|
NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryStringQuery(query));
|
|
129
116
|
nativeSearchQuery.setPageable(pageable);
|
|
130
|
-
List<<%=
|
|
117
|
+
List<<%= persistClass %>> hits = elasticsearchTemplate.search(nativeSearchQuery, <%= persistClass %>.class).map(SearchHit::getContent)
|
|
131
118
|
.stream()
|
|
132
119
|
.collect(Collectors.toList());
|
|
133
120
|
|
package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs
CHANGED
|
@@ -30,7 +30,7 @@ import <%= entityAbsolutePackage %>.service.dto.<%= dtoClass %>;
|
|
|
30
30
|
<%_ } else { _%>
|
|
31
31
|
import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
|
|
32
32
|
<%_ } _%>
|
|
33
|
-
<%_ if (!paginationNo ||
|
|
33
|
+
<%_ if (!paginationNo || implementsEagerLoadApis) { _%>
|
|
34
34
|
|
|
35
35
|
<%_ if (!reactive) { _%>
|
|
36
36
|
import org.springframework.data.domain.Page;
|
|
@@ -65,6 +65,14 @@ public interface <%= entityClass %>Service {
|
|
|
65
65
|
*/
|
|
66
66
|
<% if (reactive) { %>Mono<<% } %><%= instanceType %><% if (reactive) { %>><% } %> save(<%= instanceType %> <%= instanceName %>);
|
|
67
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Updates a <%= entityInstance %>.
|
|
70
|
+
*
|
|
71
|
+
* @param <%= instanceName %> the entity to update.
|
|
72
|
+
* @return the persisted entity.
|
|
73
|
+
*/
|
|
74
|
+
<% if (reactive) { %>Mono<<% } %><%= instanceType %><% if (reactive) { %>><% } %> update(<%= instanceType %> <%= instanceName %>);
|
|
75
|
+
|
|
68
76
|
/**
|
|
69
77
|
* Partially updates a <%= entityInstance %>.
|
|
70
78
|
*
|
|
@@ -90,7 +98,7 @@ public interface <%= entityClass %>Service {
|
|
|
90
98
|
<%= listOrFlux %><<%= instanceType %>> findAllWhere<%= relationship.relationshipNameCapitalized %>IsNull();
|
|
91
99
|
<%_ } } _%>
|
|
92
100
|
|
|
93
|
-
<%_ if (
|
|
101
|
+
<%_ if (implementsEagerLoadApis) { _%>
|
|
94
102
|
/**
|
|
95
103
|
* Get all the <%= entityInstancePlural %> with eager load of many-to-many relationships.
|
|
96
104
|
*
|
|
@@ -51,7 +51,7 @@ import <%= entityAbsolutePackage %>.service.mapper.<%= entityClass %>Mapper;
|
|
|
51
51
|
import org.slf4j.Logger;
|
|
52
52
|
import org.slf4j.LoggerFactory;
|
|
53
53
|
|
|
54
|
-
<%_ if (!paginationNo ||
|
|
54
|
+
<%_ if (!paginationNo || implementsEagerLoadApis) { _%>
|
|
55
55
|
<%_ if (!reactive) { _%>
|
|
56
56
|
import org.springframework.data.domain.Page;
|
|
57
57
|
<%_ } _%>
|
|
@@ -112,7 +112,23 @@ public class <%= serviceClassName %><% if (serviceImpl) { %> implements <%= enti
|
|
|
112
112
|
<%_ } _%>
|
|
113
113
|
public <% if (reactive) { %>Mono<<% } %><%= instanceType %><% if (reactive) { %>><% } %> save(<%= instanceType %> <%= instanceName %>) {
|
|
114
114
|
log.debug("Request to save <%= entityClass %> : {}", <%= instanceName %>);
|
|
115
|
-
<%- include('/partials/save_template', {asEntity, asDto, viaService: false, returnDirectly: true, isUsingMapsId: isUsingMapsId, mapsIdAssoc: mapsIdAssoc, isController: false}); -%>
|
|
115
|
+
<%- include('/partials/save_template', {asEntity, asDto, viaService: false, returnDirectly: true, isUsingMapsId: isUsingMapsId, mapsIdAssoc: mapsIdAssoc, isController: false, isPersisted: false}); -%>
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
<%_ if (!serviceImpl) { _%>
|
|
119
|
+
/**
|
|
120
|
+
* Update a <%= entityInstance %>.
|
|
121
|
+
*
|
|
122
|
+
* @param <%= instanceName %> the entity to save.
|
|
123
|
+
* @return the persisted entity.
|
|
124
|
+
*/
|
|
125
|
+
<%_ } _%>
|
|
126
|
+
<%_ if (serviceImpl) { _%>
|
|
127
|
+
@Override
|
|
128
|
+
<%_ } _%>
|
|
129
|
+
public <% if (reactive) { %>Mono<<% } %><%= instanceType %><% if (reactive) { %>><% } %> update(<%= instanceType %> <%= instanceName %>) {
|
|
130
|
+
log.debug("Request to save <%= entityClass %> : {}", <%= instanceName %>);
|
|
131
|
+
<%- include('/partials/update_template', {updatableEntity, viaService: false, returnDirectly: true, isUsingMapsId: isUsingMapsId, mapsIdAssoc: mapsIdAssoc, isController: false, isPersisted: requiresPersistableImplementation}); -%>
|
|
116
132
|
}
|
|
117
133
|
|
|
118
134
|
<%_ if (!serviceImpl) { _%>
|
|
@@ -150,7 +166,7 @@ public class <%= serviceClassName %><% if (serviceImpl) { %> implements <%= enti
|
|
|
150
166
|
public <% if (paginationNo) { %><%= listOrFlux %><% } else { %><%= pageOrFlux %><% } %><<%= instanceType %>> findAll(<% if (!paginationNo) { %>Pageable pageable<% } %>) {
|
|
151
167
|
log.debug("Request to get all <%= entityClassPlural %>");
|
|
152
168
|
<%_ if (paginationNo) { _%>
|
|
153
|
-
return <%= entityInstance %>Repository.<% if (
|
|
169
|
+
return <%= entityInstance %>Repository.<% if (implementsEagerLoadApis) { %>findAllWithEagerRelationships<% } else { %>findAll<% } %>()<% if (dtoMapstruct) { %><% if (!reactive) { %>.stream()<% } %>
|
|
154
170
|
.map(<%= entityToDtoReference %>)<% if (!reactive) { %>
|
|
155
171
|
.collect(Collectors.toCollection(LinkedList::new))<% } } %>;
|
|
156
172
|
<%_ } else { _%>
|
|
@@ -159,7 +175,7 @@ public class <%= serviceClassName %><% if (serviceImpl) { %> implements <%= enti
|
|
|
159
175
|
<%_ } _%>
|
|
160
176
|
}
|
|
161
177
|
|
|
162
|
-
<%_ if (
|
|
178
|
+
<%_ if (implementsEagerLoadApis) { _%>
|
|
163
179
|
|
|
164
180
|
<%_ if (!serviceImpl) { _%>
|
|
165
181
|
/**
|
|
@@ -213,7 +229,7 @@ public class <%= serviceClassName %><% if (serviceImpl) { %> implements <%= enti
|
|
|
213
229
|
@Transactional(readOnly = true)
|
|
214
230
|
<%_ } _%>
|
|
215
231
|
public <%= optionalOrMono %><<%= instanceType %>> findOne(<%= primaryKey.type %> id) {
|
|
216
|
-
log.debug("Request to get <%= entityClass %> : {}", id);<%- include('../../common/get_template', {asEntity, asDto, viaService: false, returnDirectly:true,
|
|
232
|
+
log.debug("Request to get <%= entityClass %> : {}", id);<%- include('../../common/get_template', {asEntity, asDto, viaService: false, returnDirectly:true, implementsEagerLoadApis}); -%>
|
|
217
233
|
}
|
|
218
234
|
|
|
219
235
|
<%_ if (!serviceImpl) { _%>
|
|
@@ -19,30 +19,34 @@
|
|
|
19
19
|
package <%= entityAbsolutePackage %>.service.mapper;
|
|
20
20
|
|
|
21
21
|
<%_
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
22
|
+
const uuidMapMethod = dtoReferences.some(reference => reference.valueReference && reference.valueReference.field && reference.valueReference.field.fieldTypeUUID);
|
|
23
|
+
const byteMapMethod = dtoReferences.some(reference => reference.valueReference && reference.valueReference.field && reference.valueReference.field.fieldTypeBytes);
|
|
24
|
+
const dtoRelationships = dtoReferences.filter(reference => reference.relationship && !reference.relationship.otherEntity.embedded).map(reference => reference.relationship);
|
|
25
|
+
let otherEntitiesFields = otherEntities
|
|
26
|
+
.filter(otherEntity => dtoRelationships.some(relationship => relationship.otherEntity === otherEntity))
|
|
27
|
+
.map(otherEntity =>
|
|
28
|
+
dtoRelationships
|
|
29
|
+
.filter(relationship => relationship.otherEntity == otherEntity)
|
|
30
|
+
.map(({relatedField, collection}) => ({otherEntity, relatedField, collection}))
|
|
31
|
+
)
|
|
32
|
+
.flat();
|
|
33
|
+
otherEntitiesFields.forEach(a => {
|
|
34
|
+
a.collection = a.collection || otherEntitiesFields.some(b => a.otherEntity === b.otherEntity && a.relatedField === b.relatedField && b.collection == true)
|
|
35
|
+
});
|
|
36
|
+
otherEntitiesFields = _.uniqWith(otherEntitiesFields, (a, b) => a.otherEntity === b.otherEntity && a.collection === b.collection && a.relatedField === b.relatedField);
|
|
31
37
|
_%>
|
|
32
38
|
|
|
33
|
-
<%_ if (
|
|
34
|
-
r.relationship.otherRelationship &&
|
|
35
|
-
r.relationship.otherRelationship.reference.collection &&
|
|
36
|
-
r.relationship.relationshipManyToMany
|
|
37
|
-
) || otherDtoReferences.some(r => r.collection)) { _%>
|
|
39
|
+
<%_ if (dtoRelationships.some(r => r.collection)) { _%>
|
|
38
40
|
import java.util.Set;
|
|
41
|
+
import java.util.stream.Collectors;
|
|
39
42
|
<%_ } _%>
|
|
40
43
|
|
|
41
44
|
import <%= entityAbsoluteClass %>;
|
|
42
45
|
import <%= entityAbsolutePackage %>.service.dto.<%= dtoClass %>;
|
|
43
46
|
|
|
44
|
-
<%_ for (const otherEntity of _.uniq(
|
|
45
|
-
import <%=
|
|
47
|
+
<%_ for (const otherEntity of _.uniq(dtoRelationships.map(relationship => relationship.otherEntity).filter(otherEntity => otherEntity !== entity))) { _%>
|
|
48
|
+
import <%= otherEntity.entityAbsoluteClass %>;
|
|
49
|
+
import <%= otherEntity.entityAbsolutePackage %>.service.dto.<%= otherEntity.dtoClass %>;
|
|
46
50
|
<%_ } _%>
|
|
47
51
|
|
|
48
52
|
import org.mapstruct.*;
|
|
@@ -55,100 +59,67 @@ import java.util.UUID;
|
|
|
55
59
|
/**
|
|
56
60
|
* Mapper for the entity {@link <%= persistClass %>} and its DTO {@link <%= dtoClass %>}.
|
|
57
61
|
*/
|
|
58
|
-
@Mapper(componentModel = "spring"
|
|
62
|
+
@Mapper(componentModel = "spring")
|
|
59
63
|
public interface <%= entityClass %>Mapper extends EntityMapper<<%= dtoClass %>, <%= persistClass %>> {
|
|
60
|
-
<%_
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
<%_ if (!embedded) { _%>
|
|
65
|
+
<%_ var renMapAnotEnt = false; //Render Mapping Annotation during Entity to DTO conversion? _%>
|
|
66
|
+
<%_ for (relationship of dtoRelationships) { _%>
|
|
67
|
+
<%_
|
|
64
68
|
renMapAnotEnt = true;
|
|
65
|
-
let qualifiedByName =
|
|
66
|
-
qualifiedByName = qualifiedByName + (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
let qualifiedByName = relationship.otherEntity.entityInstance + _.upperFirst(relationship.otherEntityField);
|
|
70
|
+
qualifiedByName = qualifiedByName + (relationship.collection ? 'Set' : '');
|
|
71
|
+
_%>
|
|
72
|
+
@Mapping(target = "<%= relationship.propertyName %>", source = "<%= relationship.propertyName %>", qualifiedByName="<%= qualifiedByName %>")
|
|
73
|
+
<%_ } _%>
|
|
74
|
+
<%_ for (const field of fields.filter(field => field.mapstructExpression)) {
|
|
70
75
|
renMapAnotEnt = true; _%>
|
|
71
|
-
@Mapping( target = "<%=
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
@Mapping( target = "<%= field.propertyName %>", expression = "<%- field.mapstructExpression %>")
|
|
77
|
+
<%_ } _%>
|
|
78
|
+
<%_ if (renMapAnotEnt) { _%>
|
|
74
79
|
<%= dtoClass %> toDto(<%= persistClass %> s);
|
|
75
|
-
<%_ } %>
|
|
76
|
-
<%_ } %>
|
|
77
|
-
<%_ /***** Id mapping *****/
|
|
78
|
-
const otherIdReferences = otherDtoReferences.filter(r => !r.relatedReference || r.relatedReference.id);
|
|
79
|
-
if (!embedded && otherIdReferences.length > 0) {
|
|
80
|
-
if (otherIdReferences.some(r => !r.collection)) { _%>
|
|
81
|
-
|
|
82
|
-
@Named("<%= primaryKey.name %>")
|
|
83
|
-
@BeanMapping(ignoreByDefault = true)
|
|
84
|
-
<%_ let renMapAnotEnt = false; //Render Mapping Annotation during Entity to DTO conversion?
|
|
85
|
-
for (reference of dtoReferences.filter(reference => reference.id)) {
|
|
86
|
-
renMapAnotEnt = true; _%>
|
|
87
|
-
@Mapping(target = "<%= reference.name %>", source = "<%= reference.name %>")
|
|
88
|
-
<%_ } _%>
|
|
89
|
-
<%_ if (renMapAnotEnt) { _%>
|
|
90
|
-
<%= dtoClass %> toDtoId(<%= persistClass %> <%= persistInstance %>);
|
|
91
|
-
<%_ } _%>
|
|
92
80
|
<%_ } _%>
|
|
93
|
-
<%_ if (otherIdReferences.some(r => r.collection)) { _%>
|
|
94
81
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
<%_
|
|
98
|
-
for (
|
|
99
|
-
|
|
100
|
-
@Mapping(target = "<%= reference.name %>", source = "<%= reference.name %>")
|
|
101
|
-
<%_ } _%>
|
|
102
|
-
<%_ if (renMapAnotEnt === true) { _%>
|
|
103
|
-
Set<<%= dtoClass %>> toDtoIdSet(Set<<%= persistClass %>> <%= persistInstance %>);
|
|
82
|
+
<%_ var renMapAnotDto = false; //Render Mapping Annotation during DTO to Entity conversion? _%>
|
|
83
|
+
<%_ if(primaryKey.ids.length > 1) { _%>
|
|
84
|
+
<%_ renMapAnotDto = true; _%>
|
|
85
|
+
<%_ for (const id of primaryKey.ids) { _%>
|
|
86
|
+
@Mapping(target = "id.<%= id.name %>", source = "<%= id.nameDotted %>")
|
|
104
87
|
<%_ } _%>
|
|
105
88
|
<%_ } _%>
|
|
106
|
-
<%_
|
|
107
|
-
<%_ if (!
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if(primaryKey.ids.length > 1) {
|
|
111
|
-
renMapAnotDto = true;
|
|
112
|
-
primaryKey.ids.forEach(id => { _%>
|
|
113
|
-
|
|
114
|
-
@Mapping(target = "id.<%= id.name %>", source = "<%= id.nameDotted %>")
|
|
115
|
-
<%_ })
|
|
116
|
-
}
|
|
117
|
-
for (reference of dtoReferences.filter(reference => reference.relationship)) {
|
|
118
|
-
if (reference.owned === false) {
|
|
119
|
-
renMapAnotDto = true; _%>
|
|
120
|
-
@Mapping(target = "<%= reference.name %>", ignore = true)
|
|
89
|
+
<%_ for (relationship of dtoRelationships) { _%>
|
|
90
|
+
<%_ if (!relationship.ownerSide) { _%>
|
|
91
|
+
<%_ renMapAnotDto = true; _%>
|
|
92
|
+
@Mapping(target = "<%= relationship.propertyName %>", ignore = true)
|
|
121
93
|
<%_ }
|
|
122
|
-
if (
|
|
94
|
+
if (relationship.collection && fluentMethods) {
|
|
123
95
|
renMapAnotDto = true; _%>
|
|
124
|
-
@Mapping(target = "remove<%=
|
|
96
|
+
@Mapping(target = "remove<%= relationship.relationshipNameCapitalized %>", ignore = true)
|
|
125
97
|
<%_ } _%>
|
|
126
98
|
<%_ } _%>
|
|
127
99
|
<%_ if (renMapAnotDto) { _%>
|
|
128
100
|
<%= persistClass %> toEntity(<%= dtoClass %> <%= dtoInstance %>);
|
|
129
101
|
<%_ } _%>
|
|
130
|
-
<%_
|
|
131
|
-
|
|
132
|
-
for (const otherReference of otherDtoReferences.filter(r => r.relatedReference && !r.relatedReference.id)) {
|
|
133
|
-
const reference = otherReference.relationship.otherRelationship && otherReference.relationship.otherRelationship.reference;
|
|
134
|
-
const collection = otherReference.collection;
|
|
135
|
-
const mapperName = otherReference.relationship.otherEntityField + (collection ? 'Set' : '');
|
|
136
|
-
if (addedMappers.includes(mapperName)) continue;
|
|
137
|
-
addedMappers.push(mapperName);
|
|
138
|
-
const backReferenceDtoClass = collection ? `Set<${dtoClass}>` : dtoClass;
|
|
139
|
-
const backReferenceEntityClass = collection ? `Set<${persistClass}>` : persistClass; _%>
|
|
102
|
+
<%_ for (const {otherEntity, relatedField, collection} of otherEntitiesFields) { _%>
|
|
103
|
+
<%_ const mapperName = otherEntity.entityInstance + _.upperFirst(relatedField.propertyName); _%>
|
|
140
104
|
|
|
141
105
|
@Named("<%= mapperName %>")
|
|
142
106
|
@BeanMapping(ignoreByDefault = true)
|
|
143
|
-
<%_
|
|
144
|
-
@Mapping(target = "<%=
|
|
145
|
-
<%_ }); _%>
|
|
146
|
-
<%_ if (otherReference.relationship.relatedField && !otherReference.relationship.relatedField.id) { _%>
|
|
147
|
-
@Mapping(target = "<%= otherReference.relationship.relatedField.reference.name %>", source = "<%= otherReference.relationship.relatedField.reference.name %>")
|
|
107
|
+
<%_ for (const field of otherEntity.primaryKey.fields) { _%>
|
|
108
|
+
@Mapping(target = "<%= field.propertyName %>", source = "<%= field.propertyName %>")
|
|
148
109
|
<%_ } _%>
|
|
149
|
-
|
|
150
|
-
|
|
110
|
+
<%_ if (!relatedField.id) { _%>
|
|
111
|
+
@Mapping(target = "<%= relatedField.propertyName %>", source = "<%= relatedField.propertyName %>")
|
|
112
|
+
<%_ } _%>
|
|
113
|
+
<%- otherEntity.dtoClass %> toDto<%= _.upperFirst(mapperName) %>(<%- otherEntity.persistClass %> <%= otherEntity.persistInstance %>);
|
|
114
|
+
<%_ if (collection) { %>
|
|
115
|
+
<%_ const collectionMapperName = otherEntity.entityInstance + _.upperFirst(relatedField.propertyName) + 'Set'; _%>
|
|
151
116
|
|
|
117
|
+
@Named("<%= collectionMapperName %>")
|
|
118
|
+
default Set<<%- otherEntity.dtoClass %>> toDto<%= _.upperFirst(mapperName) %>Set(Set<<%- otherEntity.persistClass %>> <%= otherEntity.persistInstance %>) {
|
|
119
|
+
return <%= otherEntity.persistInstance %>.stream().map(this:: toDto<%= _.upperFirst(mapperName) %>).collect(Collectors.toSet());
|
|
120
|
+
}
|
|
121
|
+
<%_ } _%>
|
|
122
|
+
<%_ } _%>
|
|
152
123
|
<%_ if (uuidMapMethod) { _%>
|
|
153
124
|
|
|
154
125
|
default String map(UUID value) {
|
package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs
CHANGED
|
@@ -183,8 +183,10 @@ public class <%= entityClass %>Resource {
|
|
|
183
183
|
<%_ } _%>
|
|
184
184
|
<% } %>
|
|
185
185
|
<%_ } _%>
|
|
186
|
-
<%_
|
|
186
|
+
<%_ if (!isUsingMapsId) { _%>
|
|
187
|
+
<%_ for (field of primaryKey.fields.filter(f => f.autoGenerateByService)) { _%>
|
|
187
188
|
<%= instanceName %>.set<%= field.fieldNameCapitalized %>(UUID.randomUUID());
|
|
189
|
+
<%_ } _%>
|
|
188
190
|
<%_ } _%>
|
|
189
191
|
<%- include('/partials/save_template', {asEntity, asDto, viaService: viaService, returnDirectly: false, isUsingMapsId: isUsingMapsId, mapsIdAssoc: mapsIdAssoc, isController: true}); -%>
|
|
190
192
|
<%_ if (reactive) { _%>
|
|
@@ -253,7 +255,7 @@ public class <%= entityClass %>Resource {
|
|
|
253
255
|
<%_ } _%>
|
|
254
256
|
<% } %>
|
|
255
257
|
<%_ } _%>
|
|
256
|
-
<%- include('/partials/
|
|
258
|
+
<%- include('/partials/update_template', {updatableEntity, viaService: viaService, returnDirectly: false, isUsingMapsId: false, mapsIdAssoc: mapsIdAssoc, isController: true, isPersisted: requiresPersistableImplementation}); -%>
|
|
257
259
|
<%_ if (reactive) { _%>
|
|
258
260
|
.switchIfEmpty(Mono.error(new ResponseStatusException(HttpStatus.NOT_FOUND)))
|
|
259
261
|
.map(result -> ResponseEntity.ok()
|
|
@@ -346,7 +348,7 @@ public class <%= entityClass %>Resource {
|
|
|
346
348
|
* @param request a {@link ServerHttpRequest} request.
|
|
347
349
|
<%_ } _%>
|
|
348
350
|
<%_ } _%>
|
|
349
|
-
<%_ if (!jpaMetamodelFiltering &&
|
|
351
|
+
<%_ if (!jpaMetamodelFiltering && implementsEagerLoadApis) { _%>
|
|
350
352
|
* @param eagerload flag to eager load entities from relationships (This is applicable for many-to-many).
|
|
351
353
|
<%_ } _%>
|
|
352
354
|
<%_ if (jpaMetamodelFiltering) { _%>
|
|
@@ -392,7 +394,7 @@ public class <%= entityClass %>Resource {
|
|
|
392
394
|
@Transactional(readOnly = true)
|
|
393
395
|
<%_ } _%>
|
|
394
396
|
public <% if (reactive) { %>Mono<<% } %>ResponseEntity<<%= instanceType %>><% if (reactive) { %>><% } %> get<%= entityClass %>(@PathVariable <%= primaryKey.type %> id) {
|
|
395
|
-
log.debug("REST request to get <%= entityClass %> : {}", id);<%- include('../../common/get_template', {asEntity, asDto, viaService, returnDirectly:false,
|
|
397
|
+
log.debug("REST request to get <%= entityClass %> : {}", id);<%- include('../../common/get_template', {asEntity, asDto, viaService, returnDirectly:false, implementsEagerLoadApis}); -%>
|
|
396
398
|
return ResponseUtil.wrapOrNotFound(<%= instanceName %>);
|
|
397
399
|
}
|
|
398
400
|
<%_ if (!readOnly) { _%>
|
package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs
CHANGED
|
@@ -60,9 +60,6 @@ _%>
|
|
|
60
60
|
<%_ if (entityAbsolutePackage !== packageName) { _%>
|
|
61
61
|
import <%= packageName %>.web.rest.TestUtil;
|
|
62
62
|
<% } %>
|
|
63
|
-
<%_ if (databaseTypeCassandra) { _%>
|
|
64
|
-
import <%= packageName %>.AbstractCassandraTest;
|
|
65
|
-
<%_ } _%>
|
|
66
63
|
import <%= packageName %>.IntegrationTest;
|
|
67
64
|
import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
|
|
68
65
|
<%_
|
|
@@ -92,7 +89,7 @@ import <%= entityAbsolutePackage %>.repository.<%= mapsIdAssoc.otherEntityNameCa
|
|
|
92
89
|
<%_ if (searchEngineElasticsearch) { _%>
|
|
93
90
|
import <%= entityAbsolutePackage %>.repository.search.<%= entityClass %>SearchRepository;
|
|
94
91
|
<%_ } _%>
|
|
95
|
-
<%_ if (!serviceNo &&
|
|
92
|
+
<%_ if (!serviceNo && implementsEagerLoadApis) { _%>
|
|
96
93
|
import <%= entityAbsolutePackage %>.service.<%= entityClass %>Service;
|
|
97
94
|
<%_ } _%>
|
|
98
95
|
<%_ if (dtoMapstruct) { _%>
|
|
@@ -108,7 +105,7 @@ import org.junit.jupiter.api.AfterEach;
|
|
|
108
105
|
<%_ } _%>
|
|
109
106
|
import org.junit.jupiter.api.BeforeEach;
|
|
110
107
|
import org.junit.jupiter.api.Test;
|
|
111
|
-
<%_ if (searchEngineElasticsearch ||
|
|
108
|
+
<%_ if (searchEngineElasticsearch || implementsEagerLoadApis || cacheProviderRedis || databaseTypeNeo4j || reactiveSqlTestContainers) { _%>
|
|
112
109
|
import org.mockito.Mock;
|
|
113
110
|
import org.junit.jupiter.api.extension.ExtendWith;
|
|
114
111
|
import org.mockito.junit.jupiter.MockitoExtension;
|
|
@@ -119,7 +116,7 @@ import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWeb
|
|
|
119
116
|
<%_ } else { _%>
|
|
120
117
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
|
121
118
|
<%_ } _%>
|
|
122
|
-
<%_ if (searchEngineElasticsearch && !paginationNo ||
|
|
119
|
+
<%_ if (searchEngineElasticsearch && !paginationNo || implementsEagerLoadApis) { _%>
|
|
123
120
|
import org.springframework.data.domain.PageImpl;
|
|
124
121
|
import org.springframework.data.domain.PageRequest;
|
|
125
122
|
<%_ } _%>
|
|
@@ -141,7 +138,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
141
138
|
<%_ if (fieldsContainBlob) { _%>
|
|
142
139
|
import org.springframework.util.Base64Utils;
|
|
143
140
|
<%_ } _%>
|
|
144
|
-
<%_ if (reactive && (
|
|
141
|
+
<%_ if (reactive && (implementsEagerLoadApis || searchEngineElasticsearch)) { _%>
|
|
145
142
|
import reactor.core.publisher.Flux;
|
|
146
143
|
import reactor.core.publisher.Mono;
|
|
147
144
|
<%_ } _%>
|
|
@@ -173,7 +170,7 @@ import java.time.ZoneId;
|
|
|
173
170
|
<%_ if (fieldsContainInstant) { _%>
|
|
174
171
|
import java.time.temporal.ChronoUnit;
|
|
175
172
|
<%_ } _%>
|
|
176
|
-
<%_ if (
|
|
173
|
+
<%_ if (!reactive && implementsEagerLoadApis) { _%>
|
|
177
174
|
import java.util.ArrayList;
|
|
178
175
|
<%_ } _%>
|
|
179
176
|
<%_ if (searchEngineElasticsearch && !reactive) { _%>
|
|
@@ -209,7 +206,7 @@ import static org.springframework.security.test.web.reactive.server.SecurityMock
|
|
|
209
206
|
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
|
|
210
207
|
<%_ } _%>
|
|
211
208
|
<%_ } _%>
|
|
212
|
-
<%_ if (searchEngineElasticsearch ||
|
|
209
|
+
<%_ if (searchEngineElasticsearch || implementsEagerLoadApis) { _%>
|
|
213
210
|
import static org.mockito.Mockito.*;
|
|
214
211
|
<%_ } _%>
|
|
215
212
|
<%_ if (!reactive) { _%>
|
|
@@ -226,7 +223,7 @@ import <%= entityAbsolutePackage %>.domain.enumeration.<%= field.fieldType %>;
|
|
|
226
223
|
* Integration tests for the {@link <%= entityClass %>Resource} REST controller.
|
|
227
224
|
*/
|
|
228
225
|
@IntegrationTest
|
|
229
|
-
<%_ if (cacheProviderRedis || searchEngineElasticsearch ||
|
|
226
|
+
<%_ if (cacheProviderRedis || searchEngineElasticsearch || implementsEagerLoadApis) { _%>
|
|
230
227
|
@ExtendWith(MockitoExtension.class)
|
|
231
228
|
<%_ } _%>
|
|
232
229
|
<%_ if (reactive) { _%>
|
|
@@ -235,7 +232,7 @@ import <%= entityAbsolutePackage %>.domain.enumeration.<%= field.fieldType %>;
|
|
|
235
232
|
@AutoConfigureMockMvc
|
|
236
233
|
<%_ } _%>
|
|
237
234
|
@WithMockUser
|
|
238
|
-
class <%= entityClass %>ResourceIT
|
|
235
|
+
class <%= entityClass %>ResourceIT {
|
|
239
236
|
<%_
|
|
240
237
|
for (field of fields.filter(field => !field.id && !field.transient)) {
|
|
241
238
|
const defaultValueName = 'DEFAULT_' + field.fieldNameUnderscored.toUpperCase();
|
|
@@ -432,7 +429,7 @@ if (field.fieldTypeString || field.blobContentTypeText) {
|
|
|
432
429
|
@Autowired
|
|
433
430
|
private UserRepository userRepository;
|
|
434
431
|
<%_ } _%>
|
|
435
|
-
<%_ if (
|
|
432
|
+
<%_ if (implementsEagerLoadApis) { _%>
|
|
436
433
|
|
|
437
434
|
@Mock
|
|
438
435
|
private <%= entityClass %>Repository <%= entityInstance %>RepositoryMock;
|
|
@@ -442,7 +439,7 @@ if (field.fieldTypeString || field.blobContentTypeText) {
|
|
|
442
439
|
@Autowired
|
|
443
440
|
private <%= entityClass %>Mapper <%= entityInstance %>Mapper;
|
|
444
441
|
<%_ } if (!serviceNo) { _%>
|
|
445
|
-
<%_ if (
|
|
442
|
+
<%_ if (implementsEagerLoadApis) { _%>
|
|
446
443
|
|
|
447
444
|
@Mock
|
|
448
445
|
private <%= entityClass %>Service <%= entityInstance %>ServiceMock;
|
|
@@ -481,11 +478,16 @@ if (field.fieldTypeString || field.blobContentTypeText) {
|
|
|
481
478
|
*/
|
|
482
479
|
public static <%= persistClass %> create<% if (fieldStatus === 'UPDATED_') { _%>Updated<%_ } %>Entity(<% if (databaseTypeSql) { %>EntityManager em<% } %>) {
|
|
483
480
|
<%_ if (fluentMethods) { _%>
|
|
484
|
-
<%= persistClass %> <%= persistInstance %> = new <%= persistClass %>()<%
|
|
481
|
+
<%= persistClass %> <%= persistInstance %> = new <%= persistClass %>()<%_ if (reactive && databaseTypeSql && primaryKey.typeUUID && !isUsingMapsId) { _%>
|
|
482
|
+
.<%= primaryKey.name %>(UUID.randomUUID())
|
|
483
|
+
<%_ } _%><% for (field of fields.filter(field => !field.id && !field.transient)) { %>
|
|
485
484
|
.<%= field.fieldName %>(<%= fieldStatus + field.fieldNameUnderscored.toUpperCase() %>)<% if (field.fieldTypeBinary && !field.blobContentTypeText) { %>
|
|
486
485
|
.<%= field.fieldName %>ContentType(<%= fieldStatus + field.fieldNameUnderscored.toUpperCase() %>_CONTENT_TYPE)<% } %><% } %>;
|
|
487
486
|
<%_ } else { _%>
|
|
488
487
|
<%= persistClass %> <%= persistInstance %> = new <%= persistClass %>();
|
|
488
|
+
<%_ if (reactive && databaseTypeSql && primaryKey.typeUUID && !isUsingMapsId) { _%>
|
|
489
|
+
<%= persistInstance %>.set<%= primaryKey.fields[0].fieldInJavaBeanMethod %>(UUID.randomUUID());
|
|
490
|
+
<%_ } _%>
|
|
489
491
|
<%_ for (field of fields.filter(field => !field.id && !field.transient)) { _%>
|
|
490
492
|
<%= persistInstance %>.set<%= field.fieldInJavaBeanMethod %>(<%= fieldStatus + field.fieldNameUnderscored.toUpperCase() %>);
|
|
491
493
|
<%_ if (field.fieldTypeBinary && !field.blobContentTypeText) { _%>
|
|
@@ -517,13 +519,17 @@ if (field.fieldTypeString || field.blobContentTypeText) {
|
|
|
517
519
|
<%_ } else { _%>
|
|
518
520
|
<%= asEntity(otherEntityNameCapitalized) %> <%= otherEntityName %>;
|
|
519
521
|
<%_ if (databaseTypeSql && !reactive) { _%>
|
|
522
|
+
<%_ if (!isUsingMapsId || fieldStatus !== "UPDATED_") { _%>
|
|
520
523
|
if (TestUtil.findAll(em, <%= asEntity(otherEntityNameCapitalized) %>.class).isEmpty()) {
|
|
524
|
+
<%_ } _%>
|
|
521
525
|
<%= otherEntityName %> = <%= createEntityPrefix %><%= otherEntityNameCapitalized %>ResourceIT.create<% if (fieldStatus === 'UPDATED_') { %>Updated<% } %>Entity(em)<%= createEntityPostfix %>;
|
|
522
526
|
em.persist(<%= otherEntityName %>);
|
|
523
527
|
em.flush();
|
|
528
|
+
<%_ if (!isUsingMapsId || fieldStatus !== "UPDATED_") { _%>
|
|
524
529
|
} else {
|
|
525
530
|
<%= otherEntityName %> = TestUtil.findAll(em, <%= asEntity(otherEntityNameCapitalized) %>.class).get(0);
|
|
526
531
|
}
|
|
532
|
+
<%_ } _%>
|
|
527
533
|
<%_ } else { _%>
|
|
528
534
|
<%= otherEntityName %> = <%= createEntityPrefix %><%= otherEntityNameCapitalized %>ResourceIT.create<% if (fieldStatus === 'UPDATED_') { %>Updated<% } %>Entity(<% if (databaseType === 'sql') { %>em<% } %>)<%= createEntityPostfix %>;
|
|
529
535
|
<%_ } _%>
|
|
@@ -597,6 +603,13 @@ _%>
|
|
|
597
603
|
// Configure the mock search repository
|
|
598
604
|
when(mock<%= entityClass %>SearchRepository.save(any()))
|
|
599
605
|
.thenAnswer(invocation -> Mono.just(invocation.getArgument(0)));
|
|
606
|
+
<%_ } _%>
|
|
607
|
+
<%_
|
|
608
|
+
// overwrite the id field again with null
|
|
609
|
+
// the create method here is supposed to be used for other tests as well,
|
|
610
|
+
// which may expect an id to be set (at least in the reactive stack)
|
|
611
|
+
if (reactive && databaseTypeSql && primaryKey.typeUUID && !isUsingMapsId) { _%>
|
|
612
|
+
<%= persistInstance %>.set<%= primaryKey.nameCapitalized %>(null);
|
|
600
613
|
<%_ } _%>
|
|
601
614
|
// Create the <%= entityClass %>
|
|
602
615
|
<%_ if (dtoMapstruct) { _%>
|
|
@@ -887,7 +900,7 @@ _%>
|
|
|
887
900
|
if (field.fieldTypeZonedDateTime) { %>)<% } else
|
|
888
901
|
if (!field.fieldTypeString) { %>.toString()<% } %>))<%= !reactive ? ')' : '' %><%_ } _%>;
|
|
889
902
|
}
|
|
890
|
-
<% if (
|
|
903
|
+
<% if (implementsEagerLoadApis && !databaseTypeNeo4j && !databaseTypeCouchbase) { %>
|
|
891
904
|
@SuppressWarnings({"unchecked"})
|
|
892
905
|
void getAll<%= entityClassPlural %>WithEagerRelationshipsIsEnabled() <% if (!reactive) { %>throws Exception <% } %>{
|
|
893
906
|
<%_ if (!serviceNo) { _%>
|
|
@@ -808,7 +808,7 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
|
|
|
808
808
|
} else {
|
|
809
809
|
const javaVersion = stderr.match(/(?:java|openjdk) version "(.*)"/)[1];
|
|
810
810
|
if (!javaVersion.match(new RegExp(`(${JAVA_COMPATIBLE_VERSIONS.map(ver => `^${ver}`).join('|')})`))) {
|
|
811
|
-
const [latest, ...others] = JAVA_COMPATIBLE_VERSIONS.reverse();
|
|
811
|
+
const [latest, ...others] = JAVA_COMPATIBLE_VERSIONS.concat().reverse();
|
|
812
812
|
this.warning(
|
|
813
813
|
`Java ${others.reverse().join(', ')} or ${latest} are not found on your computer. Your Java version is: ${chalk.yellow(
|
|
814
814
|
javaVersion
|
|
@@ -1136,6 +1136,16 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
|
|
|
1136
1136
|
this.needleApi.serverGradle.addPlugin(group, name, version);
|
|
1137
1137
|
}
|
|
1138
1138
|
|
|
1139
|
+
/**
|
|
1140
|
+
* A new Gradle plugin to plugin management block in settings.gradle
|
|
1141
|
+
*
|
|
1142
|
+
* @param {string} id - plugin id
|
|
1143
|
+
* @param {string} version - explicit plugin version number
|
|
1144
|
+
*/
|
|
1145
|
+
addGradlePluginToPluginManagement(id, version) {
|
|
1146
|
+
this.needleApi.serverGradle.addPluginToPluginManagement(id, version);
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1139
1149
|
/**
|
|
1140
1150
|
* Add Gradle plugin to the plugins block
|
|
1141
1151
|
*
|
|
@@ -1201,6 +1211,17 @@ module.exports = class JHipsterBaseGenerator extends PrivateBase {
|
|
|
1201
1211
|
this.needleApi.serverGradle.addMavenRepository(url, username, password);
|
|
1202
1212
|
}
|
|
1203
1213
|
|
|
1214
|
+
/**
|
|
1215
|
+
* Add a remote Maven repository to the Gradle plugin management block in settings.gradle
|
|
1216
|
+
*
|
|
1217
|
+
* @param {string} url - url of the repository
|
|
1218
|
+
* @param {string} username - (optional) username of the repository credentials
|
|
1219
|
+
* @param {string} password - (optional) password of the repository credentials
|
|
1220
|
+
*/
|
|
1221
|
+
addGradlePluginManagementRepository(url, username, password) {
|
|
1222
|
+
this.needleApi.serverGradle.addPluginManagementRepository(url, username, password);
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1204
1225
|
/**
|
|
1205
1226
|
* Generate a date to be used by Liquibase changelogs.
|
|
1206
1227
|
*
|
|
@@ -2719,6 +2740,14 @@ templates: ${JSON.stringify(existingTemplates, null, 2)}`;
|
|
|
2719
2740
|
this.jhipsterConfig.pkType = options.pkType;
|
|
2720
2741
|
}
|
|
2721
2742
|
|
|
2743
|
+
if (options.cacheProvider !== undefined) {
|
|
2744
|
+
this.jhipsterConfig.cacheProvider = options.cacheProvider;
|
|
2745
|
+
}
|
|
2746
|
+
|
|
2747
|
+
if (options.enableHibernateCache !== undefined) {
|
|
2748
|
+
this.jhipsterConfig.enableHibernateCache = options.enableHibernateCache;
|
|
2749
|
+
}
|
|
2750
|
+
|
|
2722
2751
|
if (options.microfrontend) {
|
|
2723
2752
|
this.jhipsterConfig.microfrontend = options.microfrontend;
|
|
2724
2753
|
}
|