generator-jhipster 8.0.0 → 8.1.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 +61 -57
- package/dist/cli/environment-builder.mjs +11 -4
- package/dist/cli/program.mjs +1 -1
- package/dist/generators/angular/cleanup.mjs +7 -0
- package/dist/generators/angular/files-angular.mjs +3 -4
- package/dist/generators/angular/generator.mjs +2 -15
- package/dist/generators/angular/needle-api/needle-client-angular.mjs +2 -8
- package/dist/generators/angular/resources/package.json +23 -23
- package/dist/generators/angular/support/translate-angular.mjs +2 -2
- package/dist/generators/angular/templates/README.md.jhi.client.angular.ejs +1 -1
- package/dist/generators/angular/templates/angular.json.ejs +3 -7
- package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +6 -4
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +39 -33
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +44 -36
- package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +24 -23
- package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +74 -62
- package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +12 -4
- package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +54 -48
- package/dist/generators/angular/templates/src/main/webapp/app/admin/admin.routes.ts.ejs +74 -0
- package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +15 -5
- package/dist/generators/angular/templates/src/main/webapp/app/admin/docs/docs.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +20 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +10 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +9 -3
- package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +12 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +13 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +13 -9
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +13 -5
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +21 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +16 -7
- package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +11 -4
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +20 -11
- package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +48 -34
- package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +73 -0
- package/dist/generators/angular/templates/src/main/webapp/app/app.config.ts.ejs +67 -0
- package/dist/generators/angular/templates/src/main/webapp/app/app.routes.ts.ejs +85 -0
- package/dist/generators/angular/templates/src/main/webapp/app/core/microfrontend/index.ts.ejs +5 -4
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/alert.service.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/data-util.service.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/core/util/event-manager.service.spec.ts.ejs +12 -12
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.model.ts.ejs +4 -4
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +3 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +26 -14
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +38 -25
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +5 -12
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +55 -21
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +2 -2
- package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.ts.ejs +10 -10
- package/dist/generators/angular/templates/src/main/webapp/app/entities/entity.routes.ts.ejs +25 -0
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +21 -17
- package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +5 -2
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +5 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +97 -78
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +6 -4
- package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert-error.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/alert/alert.component.html.ejs +6 -2
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +11 -7
- package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +1 -1
- package/dist/generators/angular/templates/src/main/webapp/app/shared/sort/sort-by.directive.spec.ts.ejs +3 -3
- package/dist/generators/angular/templates/src/main/webapp/bootstrap.ts.ejs +5 -5
- package/dist/generators/angular/templates/src/main/webapp/content/scss/global.scss.ejs +1 -1
- package/dist/generators/angular/templates/webpack/webpack.microfrontend.js.ejs +2 -2
- package/dist/generators/app/README.md +108 -0
- package/dist/generators/app/USAGE +3 -0
- package/dist/generators/app/command.mjs +3 -3
- package/dist/generators/app/generator.mjs +11 -0
- package/dist/generators/base/command.mjs +0 -11
- package/dist/generators/base-application/generator.mjs +5 -6
- package/dist/generators/base-application/support/entities.mjs +2 -2
- package/dist/generators/base-application/support/index.mjs +1 -0
- package/dist/generators/base-application/support/prepare-entity.mjs +0 -1
- package/dist/generators/base-application/support/prepare-relationship.mjs +4 -0
- package/dist/generators/base-application/support/update-application-entities-transform.mjs +52 -0
- package/dist/generators/base-core/generator.mjs +17 -4
- package/dist/generators/base-entity-changes/generator.mjs +1 -1
- package/dist/generators/bootstrap/command.mjs +6 -0
- package/dist/generators/bootstrap/generator.mjs +27 -9
- package/dist/generators/bootstrap-application/generator.mjs +1 -19
- package/dist/generators/bootstrap-application-base/command.mjs +30 -0
- package/dist/generators/bootstrap-application-base/generator.mjs +27 -5
- package/dist/generators/bootstrap-application-base/index.mjs +1 -0
- package/dist/generators/bootstrap-application-base/support/export-jdl-transform.mjs +61 -0
- package/dist/generators/bootstrap-application-base/support/import-jdl-transform.mjs +64 -0
- package/dist/generators/bootstrap-application-base/support/index.mjs +2 -0
- package/dist/generators/client/command.mjs +2 -0
- package/dist/generators/client/resources/package.json +4 -4
- package/dist/generators/client/support/entity-definition.mjs +3 -3
- package/dist/generators/client/templates/README.md.jhi.client.ejs +2 -2
- package/dist/generators/client/templates/src/main/webapp/index.html.ejs +2 -2
- package/dist/generators/common/command.mjs +2 -0
- package/dist/generators/common/resources/package.json +3 -3
- package/dist/generators/common/templates/sonar-project.properties.ejs +1 -1
- package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/entity/_entity_.cy.ts.ejs +0 -1
- package/dist/generators/docker/generator.mjs +1 -1
- package/dist/generators/docker/templates/docker/cassandra.yml.ejs +2 -2
- package/dist/generators/docker/templates/docker/keycloak.yml.ejs +1 -1
- package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +4 -1
- package/dist/generators/docker-compose/generator.mjs +4 -11
- package/dist/generators/docker-compose/templates/docker-compose.yml.ejs +1 -1
- package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +4 -1
- package/dist/generators/export-jdl/generator.mjs +1 -1
- package/dist/generators/feign-client/cleanup.mjs +12 -0
- package/dist/generators/feign-client/files.mjs +35 -0
- package/dist/generators/feign-client/generator.mjs +65 -0
- package/dist/generators/feign-client/index.mjs +19 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizationHeaderUtil.java.ejs +174 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/AuthorizedFeignClient.java.ejs +72 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuth2InterceptedFeignConfiguration.java.ejs +35 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/OAuthIdpTokenResponseDTO.java.ejs +161 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/TokenRelayRequestInterceptor.java.ejs +42 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/client/UserFeignClientInterceptor_jwt.java.ejs +36 -0
- package/dist/generators/feign-client/templates/src/main/java/_package_/config/FeignConfiguration.java.ejs +45 -0
- package/dist/generators/feign-client/templates/src/test/java/_package_/client/AuthorizationHeaderUtilTest.java.ejs +263 -0
- package/dist/generators/generate-blueprint/command.mjs +1 -1
- package/dist/generators/generate-blueprint/resources/package.json +1 -1
- package/dist/generators/generate-blueprint/templates/vitest.config.ts.ejs +1 -1
- package/dist/generators/generator-constants.mjs +9 -5
- package/dist/generators/generator-list.mjs +1 -0
- package/dist/generators/git/generator.mjs +3 -5
- package/dist/generators/gradle/constants.mjs +1 -1
- package/dist/generators/java/command.mjs +6 -0
- package/dist/generators/java/entity-files.mjs +4 -0
- package/dist/generators/java/generator.mjs +3 -2
- package/dist/generators/java/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +30 -0
- package/dist/generators/jdl/generator.mjs +18 -23
- package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +4 -1
- package/dist/generators/kubernetes/templates/keycloak/keycloak.yml.ejs +1 -1
- package/dist/generators/languages/generator.mjs +24 -15
- package/dist/generators/languages/prompts.mjs +3 -1
- package/dist/generators/languages/support/translate.mjs +1 -1
- package/dist/generators/languages/templates/entity/i18n/entity_pt-br.json.ejs +1 -1
- package/dist/generators/liquibase/README.md +19 -0
- package/dist/generators/project-name/generator.mjs +14 -19
- package/dist/generators/project-name/support/name-resolver.mjs +35 -6
- package/dist/generators/react/resources/package.json +24 -24
- package/dist/generators/react/templates/src/main/webapp/app/config/notification-middleware.spec.ts.ejs +4 -4
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-detail.tsx.ejs +1 -2
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.tsx.ejs +12 -13
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.tsx.ejs +3 -8
- package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder_/_entityModel_.model.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/layout/header/header.scss.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/reducers/reducer.utils.ts.ejs +1 -1
- package/dist/generators/react/templates/src/main/webapp/app/shared/util/date-utils.ts.ejs +1 -1
- package/dist/generators/server/cleanup.mjs +5 -0
- package/dist/generators/server/command.mjs +13 -2
- package/dist/generators/server/entity-files.mjs +3 -3
- package/dist/generators/server/files.mjs +2 -38
- package/dist/generators/server/generator.mjs +35 -19
- package/dist/generators/server/jdl/application-definition.mjs +5 -2
- package/dist/generators/server/options/feign-client.mjs +24 -0
- package/dist/generators/server/options/index.mjs +1 -0
- package/dist/generators/server/resources/Dockerfile +16 -16
- package/dist/generators/server/resources/gradle/libs.versions.toml +4 -4
- package/dist/generators/server/resources/pom.xml +11 -11
- package/dist/generators/server/support/config.mjs +1 -0
- package/dist/generators/server/support/prepare-entity.mjs +4 -1
- package/dist/generators/server/templates/build.gradle.ejs +1 -2
- package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -21
- package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +5 -15
- package/dist/generators/server/templates/pom.xml.ejs +1 -4
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/get_all_template.ejs +7 -7
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/_partials_entity_/search_template.ejs +4 -4
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/repository/_entityClass_Repository.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/service/mapper/_entityClass_Mapper.java.ejs +2 -2
- package/dist/generators/server/templates/src/main/java/_package_/_entityPackage_/web/rest/_entityClass_Resource.java.ejs +3 -3
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +20 -2
- package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_reactive.java.ejs +4 -1
- package/dist/generators/server/templates/src/main/java/_package_/security/oauth2/CustomClaimConverter.java.ejs +1 -5
- package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs +48 -12
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs +1 -1
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_imperative.java.ejs +4 -13
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/LogoutResource_reactive.java.ejs +5 -11
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/PublicUserResource.java.ejs +3 -3
- package/dist/generators/server/templates/src/main/java/_package_/web/rest/UserResource.java.ejs +6 -6
- package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +8 -7
- package/dist/generators/server/templates/src/test/java/_package_/TechnicalStructureTest.java.ejs +1 -1
- package/dist/generators/server/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +8 -8
- package/dist/generators/server/templates/src/test/java/_package_/web/rest/errors/ExceptionTranslatorTestController.java.ejs +2 -2
- package/dist/generators/spring-cache/internal/dependencies.mjs +1 -1
- package/dist/generators/spring-cache/templates/gradle/cache.gradle.ejs +1 -1
- package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheFactoryConfiguration.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_imperative.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/main/java/_package_/web/rest/KafkaResource_reactive.java.ejs +1 -1
- package/dist/generators/spring-cloud-stream/templates/src/test/java/_package_/web/rest/KafkaResourceIT_reactive.java.ejs +3 -0
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.elastic_search.ejs +1 -1
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/_entityPackage_/repository/search/_entityClass_SearchRepository.java.ejs +1 -1
- package/dist/generators/spring-data-elasticsearch/templates/src/main/java/_package_/repository/search/UserSearchRepository.java.ejs +4 -4
- package/dist/generators/spring-data-neo4j/generator.mjs +43 -1
- package/dist/generators/spring-data-neo4j/templates/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.spring_data_neo4j.ejs +1 -1
- package/dist/generators/spring-data-relational/README.md +7 -0
- package/dist/generators/spring-data-relational/generator.mjs +2 -1
- package/dist/generators/spring-data-relational/internal/dependencies.mjs +29 -8
- package/dist/generators/spring-data-relational/support/database-data.mjs +4 -0
- package/dist/generators/spring-data-relational/templates/src/main/java/_package_/repository/EntityManager_reactive.java.ejs +49 -8
- package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
- package/dist/generators/upgrade/generator.mjs +3 -3
- package/dist/generators/vue/resources/package.json +21 -21
- package/dist/generators/vue/templates/package.json.ejs +1 -0
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-details.vue.ejs +1 -2
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.spec.ts.ejs +1 -1
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.component.ts.ejs +3 -3
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +2 -15
- package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_.vue.ejs +2 -7
- package/dist/jdl/converters/jdl-to-json/jdl-to-json-basic-entity-converter.js +1 -0
- package/dist/jdl/converters/json-to-jdl-converter.js +1 -1
- package/dist/jdl/converters/json-to-jdl-entity-converter.js +1 -0
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/entity-converter.js +5 -0
- package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +0 -27
- package/dist/jdl/exporters/jhipster-entity-exporter.js +3 -2
- package/dist/jdl/jhipster/default-application-options.js +1 -1
- package/dist/jdl/jhipster/field-types.js +1 -1
- package/dist/jdl/jhipster/json-entity.js +6 -0
- package/dist/jdl/models/jdl-entity.js +16 -1
- package/dist/jdl/models/jdl-field.js +13 -0
- package/dist/jdl/models/jdl-object.js +3 -3
- package/dist/jdl/models/jdl-relationship.js +23 -5
- package/dist/jdl/parsing/lexer/application-tokens.js +1 -1
- package/dist/testing/helpers.mjs +10 -3
- package/dist/types/cli/environment-builder.d.mts +2 -0
- package/dist/types/generators/angular/needle-api/needle-client-angular.d.mts +0 -1
- package/dist/types/generators/base/api.d.mts +12 -0
- package/dist/types/generators/base/support/needles.d.mts +1 -1
- package/dist/types/generators/base-application/generator.d.mts +2 -2
- package/dist/types/generators/base-application/support/index.d.mts +1 -0
- package/dist/types/generators/base-application/support/update-application-entities-transform.d.mts +4 -0
- package/dist/types/generators/base-application/types/relationship.d.mts +4 -0
- package/dist/types/generators/base-core/generator.d.mts +7 -1
- package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.mts +8 -0
- package/dist/types/generators/bootstrap-application-base/support/import-jdl-transform.d.mts +6 -0
- package/dist/types/generators/bootstrap-application-base/support/index.d.mts +2 -0
- package/dist/types/generators/client/support/entity-definition.d.mts +2 -2
- package/dist/types/generators/feign-client/types-export.d.ts +1 -0
- package/dist/types/generators/generator-constants.d.mts +52 -48
- package/dist/types/generators/generator-list.d.mts +1 -0
- package/dist/types/generators/project-name/support/name-resolver.d.mts +9 -1
- package/dist/types/generators/server/options/feign-client.d.mts +21 -0
- package/dist/types/generators/server/options/index.d.mts +1 -0
- package/dist/types/jdl/converters/json-to-jdl-converter.d.ts +1 -0
- package/dist/types/jdl/converters/parsed-jdl-to-jdl-object/option-converter.d.ts +1 -1
- package/dist/types/jdl/jhipster/json-entity.d.ts +2 -0
- package/dist/types/jdl/models/jdl-entity.d.ts +1 -0
- package/dist/types/jdl/models/jdl-relationship.d.ts +0 -18
- package/dist/types/jdl/types/types.d.mts +2 -2
- package/package.json +27 -27
|
@@ -8,29 +8,29 @@
|
|
|
8
8
|
|
|
9
9
|
<properties>
|
|
10
10
|
<!-- Dependency versions -->
|
|
11
|
-
<archunit-junit5.version>1.1
|
|
11
|
+
<archunit-junit5.version>1.2.1</archunit-junit5.version>
|
|
12
12
|
<awaitility.version>4.2.0</awaitility.version>
|
|
13
13
|
<blockhound-junit-platform.version>1.0.8.RELEASE</blockhound-junit-platform.version>
|
|
14
14
|
<commons-beanutils.version>1.9.4</commons-beanutils.version>
|
|
15
15
|
<gatling.version>3.9.5</gatling.version>
|
|
16
16
|
<h2.version>2.2.224</h2.version>
|
|
17
17
|
<hazelcast-hibernate53.version>5.1.0</hazelcast-hibernate53.version>
|
|
18
|
-
<hazelcast-spring.version>5.3.
|
|
18
|
+
<hazelcast-spring.version>5.3.6</hazelcast-spring.version>
|
|
19
19
|
<jackson-databind-nullable.version>0.2.6</jackson-databind-nullable.version>
|
|
20
20
|
<jaxb-runtime.version>4.0.4</jaxb-runtime.version>
|
|
21
|
-
<junit-platform-launcher.version>1.10.
|
|
21
|
+
<junit-platform-launcher.version>1.10.1</junit-platform-launcher.version>
|
|
22
22
|
<liquibase.version>4.24.0</liquibase.version>
|
|
23
23
|
<mapstruct.version>1.5.5.Final</mapstruct.version>
|
|
24
|
-
<micrometer-context-propagation.version>1.0
|
|
24
|
+
<micrometer-context-propagation.version>1.1.0</micrometer-context-propagation.version>
|
|
25
25
|
<picocli.version>4.7.5</picocli.version>
|
|
26
26
|
<spring-pulsar.version>0.2.0</spring-pulsar.version>
|
|
27
27
|
<typesafe.version>1.4.3</typesafe.version>
|
|
28
28
|
<validation-api.version>3.0.2</validation-api.version>
|
|
29
29
|
|
|
30
30
|
<!-- Plugin versions -->
|
|
31
|
-
<checkstyle.version>10.12.
|
|
31
|
+
<checkstyle.version>10.12.5</checkstyle.version>
|
|
32
32
|
<checksum-maven-plugin.version>1.11</checksum-maven-plugin.version>
|
|
33
|
-
<frontend-maven-plugin.version>1.
|
|
33
|
+
<frontend-maven-plugin.version>1.15.0</frontend-maven-plugin.version>
|
|
34
34
|
<gatling-maven-plugin.version>4.6.0</gatling-maven-plugin.version>
|
|
35
35
|
<git-commit-id-maven-plugin.version>7.0.0</git-commit-id-maven-plugin.version>
|
|
36
36
|
<jib-maven-plugin.version>3.4.0</jib-maven-plugin.version>
|
|
@@ -42,20 +42,20 @@
|
|
|
42
42
|
<maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
|
|
43
43
|
<maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version>
|
|
44
44
|
<maven-enforcer-plugin.version>3.4.1</maven-enforcer-plugin.version>
|
|
45
|
-
<maven-failsafe-plugin.version>3.2.
|
|
45
|
+
<maven-failsafe-plugin.version>3.2.2</maven-failsafe-plugin.version>
|
|
46
46
|
<maven-idea-plugin.version>2.2.1</maven-idea-plugin.version>
|
|
47
47
|
<maven-jar-plugin.version>3.3.0</maven-jar-plugin.version>
|
|
48
|
-
<maven-javadoc-plugin.version>3.6.
|
|
48
|
+
<maven-javadoc-plugin.version>3.6.3</maven-javadoc-plugin.version>
|
|
49
49
|
<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
|
|
50
50
|
<maven-site-plugin.version>3.12.1</maven-site-plugin.version>
|
|
51
|
-
<maven-surefire-plugin.version>3.2.
|
|
51
|
+
<maven-surefire-plugin.version>3.2.2</maven-surefire-plugin.version>
|
|
52
52
|
<maven-war-plugin.version>3.4.0</maven-war-plugin.version>
|
|
53
53
|
<modernizer-maven-plugin.version>2.7.0</modernizer-maven-plugin.version>
|
|
54
54
|
<nohttp-checkstyle.version>0.0.11</nohttp-checkstyle.version>
|
|
55
|
-
<openapi-generator-maven-plugin.version>7.0
|
|
55
|
+
<openapi-generator-maven-plugin.version>7.1.0</openapi-generator-maven-plugin.version>
|
|
56
56
|
<properties-maven-plugin.version>1.2.1</properties-maven-plugin.version>
|
|
57
57
|
<sonar-maven-plugin.version>3.10.0.2594</sonar-maven-plugin.version>
|
|
58
|
-
<spotless-maven-plugin.version>2.
|
|
58
|
+
<spotless-maven-plugin.version>2.41.1</spotless-maven-plugin.version>
|
|
59
59
|
</properties>
|
|
60
60
|
|
|
61
61
|
<dependencyManagement>
|
|
@@ -49,6 +49,7 @@ export const loadServerConfig = ({ config, application }) => {
|
|
|
49
49
|
'embeddableLaunchScript',
|
|
50
50
|
'enableGradleEnterprise',
|
|
51
51
|
'gradleEnterpriseHost',
|
|
52
|
+
'feignClient',
|
|
52
53
|
]), {
|
|
53
54
|
packageFolder: ({ packageFolder }) => (packageFolder ? normalizePathEnd(packageFolder) : packageFolder),
|
|
54
55
|
gradleEnterpriseHost: ({ gradleEnterpriseHost }) => !gradleEnterpriseHost || gradleEnterpriseHost.startsWith('https://') ? gradleEnterpriseHost : `https://${gradleEnterpriseHost}`,
|
|
@@ -81,7 +81,10 @@ export function preparePostEntityServerDerivedProperties(entity) {
|
|
|
81
81
|
.filter(relationship => relationship.ignoreOtherSideProperty === undefined)
|
|
82
82
|
.forEach(relationship => {
|
|
83
83
|
relationship.ignoreOtherSideProperty =
|
|
84
|
-
|
|
84
|
+
entity.databaseType !== 'neo4j' &&
|
|
85
|
+
!relationship.embedded &&
|
|
86
|
+
!!relationship.otherEntity &&
|
|
87
|
+
relationship.otherEntity.relationships.length > 0;
|
|
85
88
|
});
|
|
86
89
|
entity.relationshipsContainOtherSideIgnore = entity.relationships.some(relationship => relationship.ignoreOtherSideProperty);
|
|
87
90
|
entity.importApiModelProperty =
|
|
@@ -266,7 +266,7 @@ dependencies {
|
|
|
266
266
|
// to use a SNAPSHOT release instead of a stable release
|
|
267
267
|
implementation "tech.jhipster:jhipster-framework"
|
|
268
268
|
implementation "jakarta.annotation:jakarta.annotation-api"
|
|
269
|
-
<%_
|
|
269
|
+
<%_ /* This is useful for major Spring Boot migration */
|
|
270
270
|
if (addSpringMilestoneRepository) { _%>
|
|
271
271
|
runtimeOnly "org.springframework.boot:spring-boot-properties-migrator"
|
|
272
272
|
<%_ } _%>
|
|
@@ -421,7 +421,6 @@ if (addSpringMilestoneRepository) { _%>
|
|
|
421
421
|
implementation "org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j"
|
|
422
422
|
<%_ } _%>
|
|
423
423
|
implementation "org.springframework.retry:spring-retry"
|
|
424
|
-
implementation "org.springframework.cloud:spring-cloud-starter-openfeign"
|
|
425
424
|
<%_ } _%>
|
|
426
425
|
<%_ if (serviceDiscoveryAny) { _%>
|
|
427
426
|
implementation "org.springframework.cloud:spring-cloud-starter-bootstrap"
|
|
@@ -49,29 +49,11 @@ dependencies {
|
|
|
49
49
|
implementation "com.h2database:h2"
|
|
50
50
|
<%_ } _%>
|
|
51
51
|
<%_ } _%>
|
|
52
|
-
<%_ if (devDatabaseTypeMysql) { _%>
|
|
52
|
+
<%_ if (devDatabaseTypeMariadb || devDatabaseTypeMssql || devDatabaseTypePostgres || devDatabaseTypeMysql) { _%>
|
|
53
53
|
<%_ if (reactive) { _%>
|
|
54
|
-
implementation
|
|
54
|
+
implementation "<%- prodDatabaseDriver.r2dbc.groupId %>:<%- prodDatabaseDriver.r2dbc.artifactId %>"
|
|
55
55
|
<%_ } _%>
|
|
56
|
-
implementation "
|
|
57
|
-
<%_ } _%>
|
|
58
|
-
<%_ if (devDatabaseTypePostgres) { _%>
|
|
59
|
-
<%_ if (reactive) { _%>
|
|
60
|
-
implementation "org.postgresql:r2dbc-postgresql"
|
|
61
|
-
<%_ } _%>
|
|
62
|
-
implementation "org.postgresql:postgresql"
|
|
63
|
-
<%_ } _%>
|
|
64
|
-
<%_ if (devDatabaseTypeMariadb) { _%>
|
|
65
|
-
<%_ if (reactive) { _%>
|
|
66
|
-
implementation "org.mariadb:r2dbc-mariadb"
|
|
67
|
-
<%_ } _%>
|
|
68
|
-
implementation "org.mariadb.jdbc:mariadb-java-client"
|
|
69
|
-
<%_ } _%>
|
|
70
|
-
<%_ if (devDatabaseTypeMssql) { _%>
|
|
71
|
-
<%_ if (reactive) { _%>
|
|
72
|
-
implementation "io.r2dbc:r2dbc-mssql"
|
|
73
|
-
<%_ } _%>
|
|
74
|
-
implementation "com.microsoft.sqlserver:mssql-jdbc"
|
|
56
|
+
implementation "<%- prodDatabaseDriver.jdbc.groupId %>:<%- prodDatabaseDriver.jdbc.artifactId %>"
|
|
75
57
|
<%_ } _%>
|
|
76
58
|
<%_ if (devDatabaseTypeOracle) { _%>
|
|
77
59
|
implementation "com.oracle.database.jdbc:ojdbc8"
|
|
@@ -41,32 +41,22 @@ configurations {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
dependencies {
|
|
44
|
-
<%_ if (prodDatabaseTypeMysql) { _%>
|
|
44
|
+
<%_ if (prodDatabaseTypeMariadb || prodDatabaseTypeMssql || prodDatabaseTypeMysql || prodDatabaseTypePostgresql) { _%>
|
|
45
45
|
<%_ if (reactive) { _%>
|
|
46
|
-
implementation "
|
|
46
|
+
implementation "<%- prodDatabaseDriver.r2dbc.groupId %>:<%- prodDatabaseDriver.r2dbc.artifactId %>"
|
|
47
47
|
<%_ } _%>
|
|
48
|
-
implementation "
|
|
48
|
+
implementation "<%- prodDatabaseDriver.jdbc.groupId %>:<%- prodDatabaseDriver.jdbc.artifactId %>"
|
|
49
|
+
<%_ } _%>
|
|
50
|
+
<%_ if (prodDatabaseTypeMysql) { _%>
|
|
49
51
|
testImplementation "org.testcontainers:mysql"
|
|
50
52
|
<%_ } _%>
|
|
51
53
|
<%_ if (prodDatabaseTypePostgresql) { _%>
|
|
52
|
-
<%_ if (reactive) { _%>
|
|
53
|
-
implementation "org.postgresql:r2dbc-postgresql"
|
|
54
|
-
<%_ } _%>
|
|
55
|
-
implementation "org.postgresql:postgresql"
|
|
56
54
|
testImplementation "org.testcontainers:postgresql"
|
|
57
55
|
<%_ } _%>
|
|
58
56
|
<%_ if (prodDatabaseTypeMariadb) { _%>
|
|
59
|
-
<%_ if (reactive) { _%>
|
|
60
|
-
implementation "org.mariadb:r2dbc-mariadb"
|
|
61
|
-
<%_ } _%>
|
|
62
|
-
implementation "org.mariadb.jdbc:mariadb-java-client"
|
|
63
57
|
testImplementation "org.testcontainers:mariadb"
|
|
64
58
|
<%_ } _%>
|
|
65
59
|
<%_ if (prodDatabaseTypeMssql) { _%>
|
|
66
|
-
<%_ if (reactive) { _%>
|
|
67
|
-
implementation "io.r2dbc:r2dbc-mssql"
|
|
68
|
-
<%_ } _%>
|
|
69
|
-
implementation "com.microsoft.sqlserver:mssql-jdbc"
|
|
70
60
|
testImplementation "org.testcontainers:mssqlserver"
|
|
71
61
|
<%_ } _%>
|
|
72
62
|
<%_ if (prodDatabaseTypeOracle) { _%>
|
|
@@ -319,10 +319,6 @@
|
|
|
319
319
|
<groupId>org.springframework.retry</groupId>
|
|
320
320
|
<artifactId>spring-retry</artifactId>
|
|
321
321
|
</dependency>
|
|
322
|
-
<dependency>
|
|
323
|
-
<groupId>org.springframework.cloud</groupId>
|
|
324
|
-
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
|
325
|
-
</dependency>
|
|
326
322
|
<%_ } _%>
|
|
327
323
|
<%_ if (serviceDiscoveryAny) { _%>
|
|
328
324
|
<dependency>
|
|
@@ -477,6 +473,7 @@
|
|
|
477
473
|
<configuration>
|
|
478
474
|
<source>${java.version}</source>
|
|
479
475
|
<target>${java.version}</target>
|
|
476
|
+
<parameters>true</parameters>
|
|
480
477
|
<annotationProcessorPaths>
|
|
481
478
|
<path>
|
|
482
479
|
<groupId>org.springframework.boot</groupId>
|
|
@@ -35,7 +35,7 @@ _%>
|
|
|
35
35
|
return ResponseEntity.ok().body(entityList);
|
|
36
36
|
<%_ } else { _%>
|
|
37
37
|
Page<<%= instanceType %>> page = <%= entityInstance %>QueryService.findByCriteria(criteria, pageable);
|
|
38
|
-
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (!reactive) { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } else { %>
|
|
38
|
+
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (!reactive) { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } else { %>ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders())<% } %>, page);
|
|
39
39
|
return ResponseEntity.ok().headers(headers).body(page.getContent());
|
|
40
40
|
<%_ } _%>
|
|
41
41
|
<%_ } else { _%>
|
|
@@ -47,7 +47,7 @@ _%>
|
|
|
47
47
|
ResponseEntity.ok()
|
|
48
48
|
.headers(
|
|
49
49
|
PaginationUtil.generatePaginationHttpHeaders(
|
|
50
|
-
|
|
50
|
+
ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()),
|
|
51
51
|
new PageImpl<>(countWithEntities.getT2(), pageable, countWithEntities.getT1())
|
|
52
52
|
)
|
|
53
53
|
).body(countWithEntities.getT2())
|
|
@@ -75,7 +75,7 @@ _%>
|
|
|
75
75
|
}
|
|
76
76
|
<%_ } else { _%>
|
|
77
77
|
<%_ if (paginationNo) { _%>
|
|
78
|
-
public <% if (reactive) { %>Mono<<% } %>List<<%= instanceType %>><% if (reactive) { %>><% } %> getAll<%= entityClassPlural %>(<% if (fieldsContainNoOwnerOneToOne) { %>@RequestParam(required = false) String filter<% } %><% if (implementsEagerLoadApis && fieldsContainNoOwnerOneToOne) { %>,<% } %><% if (implementsEagerLoadApis) { %>@RequestParam(required = false, defaultValue = "true") boolean eagerload<% } %>) {<%- include('get_all_stream_template', {viaService: viaService}); -%>
|
|
78
|
+
public <% if (reactive) { %>Mono<<% } %>List<<%= instanceType %>><% if (reactive) { %>><% } %> getAll<%= entityClassPlural %>(<% if (fieldsContainNoOwnerOneToOne) { %>@RequestParam(name = "filter", required = false) String filter<% } %><% if (implementsEagerLoadApis && fieldsContainNoOwnerOneToOne) { %>,<% } %><% if (implementsEagerLoadApis) { %>@RequestParam(name = "eagerload", required = false, defaultValue = "true") boolean eagerload<% } %>) {<%- include('get_all_stream_template', {viaService: viaService}); -%>
|
|
79
79
|
log.debug("REST request to get all <%= entityClassPlural %>");
|
|
80
80
|
<%_ if (viaService) { _%>
|
|
81
81
|
return <%= entityInstance %>Service.findAll()<% if (reactive) { %>.collectList()<% } %>;
|
|
@@ -96,7 +96,7 @@ _%>
|
|
|
96
96
|
return <%= entityInstance %>Repository.findAll()<% if (reactive) { %>.collectList()<% } %>;
|
|
97
97
|
<%_ } _%>
|
|
98
98
|
<%_ } else { _%>
|
|
99
|
-
public <% if (reactive) { %>Mono<ResponseEntity<List<<%= instanceType %>>>><% } else { %>ResponseEntity<List<<%= instanceType %>>><% } %> getAll<%= entityClassPlural %>(@org.springdoc.core.annotations.ParameterObject Pageable pageable<% if (reactive) { %>, ServerHttpRequest request<% } %><% if (fieldsContainNoOwnerOneToOne) { %>, @RequestParam(required = false) String filter<% } %><% if (implementsEagerLoadApis) { %>, @RequestParam(required = false, defaultValue = "true") boolean eagerload<% } %>) {<%- include('get_all_stream_template', {viaService: viaService}); -%>
|
|
99
|
+
public <% if (reactive) { %>Mono<ResponseEntity<List<<%= instanceType %>>>><% } else { %>ResponseEntity<List<<%= instanceType %>>><% } %> getAll<%= entityClassPlural %>(@org.springdoc.core.annotations.ParameterObject Pageable pageable<% if (reactive) { %>, ServerHttpRequest request<% } %><% if (fieldsContainNoOwnerOneToOne) { %>, @RequestParam(name = "filter", required = false) String filter<% } %><% if (implementsEagerLoadApis) { %>, @RequestParam(name = "eagerload", required = false, defaultValue = "true") boolean eagerload<% } %>) {<%- include('get_all_stream_template', {viaService: viaService}); -%>
|
|
100
100
|
log.debug("REST request to get a page of <%= entityClassPlural %>");
|
|
101
101
|
<%_ if (reactive) { _%>
|
|
102
102
|
return <%= entityInstance %><%= viaService ? 'Service.countAll' : 'Repository.count' %>().zipWith(<%= entityInstance %><%= viaService ? 'Service.findAll' : 'Repository.findAllBy' %>(pageable)<%= reactiveEntityToDto %>.collectList())
|
|
@@ -104,7 +104,7 @@ _%>
|
|
|
104
104
|
ResponseEntity.ok()
|
|
105
105
|
.headers(
|
|
106
106
|
PaginationUtil.generatePaginationHttpHeaders(
|
|
107
|
-
|
|
107
|
+
ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()),
|
|
108
108
|
new PageImpl<>(countWithEntities.getT2(), pageable, countWithEntities.getT1())
|
|
109
109
|
)
|
|
110
110
|
).body(countWithEntities.getT2())
|
|
@@ -117,10 +117,10 @@ _%>
|
|
|
117
117
|
} else {
|
|
118
118
|
page = <%= entityInstance %><%= viaService ? 'Service' : 'Repository' %>.findAll(pageable)<%= reactiveEntityToDto %>;
|
|
119
119
|
}
|
|
120
|
-
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>
|
|
120
|
+
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders())<% } else { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } %>, page);
|
|
121
121
|
<%_ } else { _%>
|
|
122
122
|
Page<<%= instanceType %>> page = <%= entityInstance %><%= viaService ? 'Service' : 'Repository' %>.findAll(pageable)<%= reactiveEntityToDto %>;
|
|
123
|
-
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>
|
|
123
|
+
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders())<% } else { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } %>, page);
|
|
124
124
|
<%_ } _%>
|
|
125
125
|
return ResponseEntity.ok().headers(headers).body(page.getContent());
|
|
126
126
|
<%_ } _%>
|
|
@@ -24,17 +24,17 @@
|
|
|
24
24
|
const entityToDtoReference = mapper + '::' + 'toDto';
|
|
25
25
|
const entityListToDtoListReference = mapper + '.' + 'toDto';
|
|
26
26
|
if (paginationNo) { %>
|
|
27
|
-
public <% if (reactive) { %>Mono<<% } %>List<<%= instanceType %>><% if (reactive) { %>><% } %> search<%= entityClassPlural %>(@RequestParam String query) {
|
|
27
|
+
public <% if (reactive) { %>Mono<<% } %>List<<%= instanceType %>><% if (reactive) { %>><% } %> search<%= entityClassPlural %>(@RequestParam("query") String query) {
|
|
28
28
|
log.debug("REST request to search <%= entityClassPlural %> for query {}", query);<%- include('search_stream_template', {viaService: viaService, fromResource: true}); -%>
|
|
29
29
|
<% } else { %>
|
|
30
|
-
public <% if (reactive) { %>Mono<<% } %>ResponseEntity<<%= listOrFlux %><<%= instanceType %>>><% if (reactive) { %>><% } %> search<%= entityClassPlural %>(@RequestParam String query, @org.springdoc.core.annotations.ParameterObject Pageable pageable<% if (reactive) { %>, ServerHttpRequest request<% } %>) {
|
|
30
|
+
public <% if (reactive) { %>Mono<<% } %>ResponseEntity<<%= listOrFlux %><<%= instanceType %>>><% if (reactive) { %>><% } %> search<%= entityClassPlural %>(@RequestParam("query") String query, @org.springdoc.core.annotations.ParameterObject Pageable pageable<% if (reactive) { %>, ServerHttpRequest request<% } %>) {
|
|
31
31
|
log.debug("REST request to search for a page of <%= entityClassPlural %> for query {}", query);
|
|
32
32
|
<%_ if (reactive) { _%>
|
|
33
33
|
return <%= entityInstance %><%= viaService ?
|
|
34
34
|
'Service.' + (searchEngineElasticsearch ? 'searchCount' : 'countAll') :
|
|
35
35
|
(searchEngineElasticsearch ? 'Search' : '') + 'Repository.count' %>()
|
|
36
36
|
.map(total -> new PageImpl<>(new ArrayList<>(), pageable, total))
|
|
37
|
-
.map(page -> PaginationUtil.generatePaginationHttpHeaders(
|
|
37
|
+
.map(page -> PaginationUtil.generatePaginationHttpHeaders(ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders()), page))
|
|
38
38
|
.map(headers -> ResponseEntity.ok().headers(headers).body(<%= entityInstance %><%= viaService ? 'Service' : (searchEngineElasticsearch ? 'Search' : '') + 'Repository' %>.search(query, pageable)<% if (!viaService && dtoMapstruct) { %>.map(<%= entityToDtoReference %>)<% } %>));
|
|
39
39
|
<%_ } else { _%>
|
|
40
40
|
try {
|
|
@@ -43,7 +43,7 @@ if (paginationNo) { %>
|
|
|
43
43
|
<%_ } else { _%>
|
|
44
44
|
Page<<%= persistClass %>> page = <%= entityInstance %><% if (searchEngineElasticsearch) { %>Search<% } %>Repository.search(query, pageable);
|
|
45
45
|
<%_ } _%>
|
|
46
|
-
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>
|
|
46
|
+
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(<% if (reactive) { %>ForwardedHeaderUtils.adaptFromForwardedHeaders(request.getURI(), request.getHeaders())<% } else { %>ServletUriComponentsBuilder.fromCurrentRequest()<% } %>, page);
|
|
47
47
|
return ResponseEntity.ok().headers(headers).body(<% if (!viaService && dtoMapstruct) { %><%= entityListToDtoListReference %>(<% } %>page.getContent()<% if (!viaService && dtoMapstruct) { %>)<% } %>);
|
|
48
48
|
} catch (RuntimeException e) {
|
|
49
49
|
<% if (searchEngineElasticsearch) { %>
|
|
@@ -70,7 +70,7 @@ public interface <%= entityClass %>Repository extends <% if (containsBagRelation
|
|
|
70
70
|
<%_ for (const relationship of relationships) { _%>
|
|
71
71
|
<%_ if (relationship.relationshipManyToOne && relationship.otherEntityUser && databaseTypeSql) { _%>
|
|
72
72
|
|
|
73
|
-
@Query("select <%= entityInstanceDbSafe %> from <%= persistClass %> <%= entityInstanceDbSafe %> where <%= entityInstanceDbSafe %>.<%= relationship.relationshipFieldName %>.login = ?#{
|
|
73
|
+
@Query("select <%= entityInstanceDbSafe %> from <%= persistClass %> <%= entityInstanceDbSafe %> where <%= entityInstanceDbSafe %>.<%= relationship.relationshipFieldName %>.login = ?#{authentication.name}")
|
|
74
74
|
List<<%= persistClass %>> findBy<%= relationship.relationshipNameCapitalized %>IsCurrentUser();
|
|
75
75
|
<%_ } _%>
|
|
76
76
|
<%_ } _%>
|
|
@@ -63,7 +63,7 @@ import java.util.UUID;
|
|
|
63
63
|
@Mapper(componentModel = "spring")
|
|
64
64
|
public interface <%= entityClass %>Mapper extends EntityMapper<<%= dtoClass %>, <%= persistClass %>> {
|
|
65
65
|
<%_ if (!embedded) { _%>
|
|
66
|
-
<%_ var renMapAnotEnt = false;
|
|
66
|
+
<%_ var renMapAnotEnt = false; /*Render Mapping Annotation during Entity to DTO conversion?*/ _%>
|
|
67
67
|
<%_ for (relationship of dtoRelationships) { _%>
|
|
68
68
|
<%_
|
|
69
69
|
renMapAnotEnt = true;
|
|
@@ -80,7 +80,7 @@ public interface <%= entityClass %>Mapper extends EntityMapper<<%= dtoClass %>,
|
|
|
80
80
|
<%= dtoClass %> toDto(<%= persistClass %> s);
|
|
81
81
|
<%_ } _%>
|
|
82
82
|
|
|
83
|
-
<%_ var renMapAnotDto = false;
|
|
83
|
+
<%_ var renMapAnotDto = false; /*Render Mapping Annotation during DTO to Entity conversion?*/ _%>
|
|
84
84
|
<%_ if(primaryKey.ids.length > 1) { _%>
|
|
85
85
|
<%_ renMapAnotDto = true; _%>
|
|
86
86
|
<%_ for (const id of primaryKey.ids) { _%>
|
|
@@ -74,7 +74,7 @@ import org.springframework.http.HttpHeaders;
|
|
|
74
74
|
import org.springframework.http.server.reactive.ServerHttpRequest;
|
|
75
75
|
<%_ } _%>
|
|
76
76
|
<%_ if (reactive) { _%>
|
|
77
|
-
import org.springframework.web.util.
|
|
77
|
+
import org.springframework.web.util.ForwardedHeaderUtils;
|
|
78
78
|
<%_ } else { _%>
|
|
79
79
|
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
|
|
80
80
|
<%_ } _%>
|
|
@@ -398,7 +398,7 @@ public class <%= entityClass %>Resource {
|
|
|
398
398
|
<%_ if (databaseTypeSql && isUsingMapsId && !viaService) { _%>
|
|
399
399
|
@Transactional(readOnly = true)
|
|
400
400
|
<%_ } _%>
|
|
401
|
-
public <% if (reactive) { %>Mono<<% } %>ResponseEntity<<%= instanceType %>><% if (reactive) { %>><% } %> get<%= entityClass %>(@PathVariable <%= primaryKey.type %> id) {
|
|
401
|
+
public <% if (reactive) { %>Mono<<% } %>ResponseEntity<<%= instanceType %>><% if (reactive) { %>><% } %> get<%= entityClass %>(@PathVariable("id") <%= primaryKey.type %> id) {
|
|
402
402
|
log.debug("REST request to get <%= entityClass %> : {}", id);<%- include('../../_partials_entity_/get_template', {viaService, returnDirectly:false, implementsEagerLoadApis}); -%>
|
|
403
403
|
return ResponseUtil.wrapOrNotFound(<%= instanceName %>);
|
|
404
404
|
}
|
|
@@ -411,7 +411,7 @@ public class <%= entityClass %>Resource {
|
|
|
411
411
|
* @return the {@link ResponseEntity} with status {@code 204 (NO_CONTENT)}.
|
|
412
412
|
*/
|
|
413
413
|
@DeleteMapping("/{id}")
|
|
414
|
-
public <% if (reactive) { %>Mono<<% } %>ResponseEntity<Void><% if (reactive) { %>><% } %> delete<%= entityClass %>(@PathVariable <%= primaryKey.type %> id) {
|
|
414
|
+
public <% if (reactive) { %>Mono<<% } %>ResponseEntity<Void><% if (reactive) { %>><% } %> delete<%= entityClass %>(@PathVariable("id") <%= primaryKey.type %> id) {
|
|
415
415
|
log.debug("REST request to delete <%= entityClass %> : {}", id);
|
|
416
416
|
<%- include('../../_partials_entity_/delete_template', {viaService: viaService, fromResource: true}); -%>
|
|
417
417
|
<%_ if (reactive) { _%>
|
|
@@ -62,11 +62,18 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
|
62
62
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
63
63
|
<%_ } _%>
|
|
64
64
|
<%_ if (authenticationTypeOauth2) { _%>
|
|
65
|
+
import static org.springframework.security.oauth2.core.oidc.StandardClaimNames.PREFERRED_USERNAME;
|
|
66
|
+
|
|
65
67
|
import <%= packageName %>.security.oauth2.AudienceValidator;
|
|
66
68
|
import <%= packageName %>.security.SecurityUtils;
|
|
67
69
|
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
|
70
|
+
import org.springframework.security.oauth2.client.userinfo.OAuth2UserService;
|
|
71
|
+
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest;
|
|
72
|
+
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService;
|
|
68
73
|
import org.springframework.security.oauth2.core.DelegatingOAuth2TokenValidator;
|
|
69
74
|
import org.springframework.security.oauth2.core.OAuth2TokenValidator;
|
|
75
|
+
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
|
|
76
|
+
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
|
70
77
|
import org.springframework.security.oauth2.jwt.*;
|
|
71
78
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;
|
|
72
79
|
import org.springframework.beans.factory.annotation.Value;
|
|
@@ -261,14 +268,14 @@ public class SecurityConfiguration {
|
|
|
261
268
|
.oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()));
|
|
262
269
|
<%_ } else if (authenticationTypeOauth2) { _%>
|
|
263
270
|
<%_ if (applicationTypeMonolith) { _%>
|
|
264
|
-
.oauth2Login(
|
|
271
|
+
.oauth2Login(oauth2 -> oauth2.userInfoEndpoint(userInfo -> userInfo.oidcUserService(this.oidcUserService())))
|
|
265
272
|
<%_ } else if (applicationTypeMicroservice) { _%>
|
|
266
273
|
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
|
|
267
274
|
<%_ } _%>
|
|
268
275
|
.oauth2ResourceServer(oauth2 -> oauth2
|
|
269
276
|
.jwt(jwt -> jwt
|
|
270
277
|
.jwtAuthenticationConverter(authenticationConverter())))
|
|
271
|
-
.oauth2Client();
|
|
278
|
+
.oauth2Client(withDefaults());
|
|
272
279
|
<%_ } _%>
|
|
273
280
|
<%_ if (devDatabaseTypeH2Any) { _%>
|
|
274
281
|
if (env.acceptsProfiles(Profiles.of(JHipsterConstants.SPRING_PROFILE_DEVELOPMENT))) {
|
|
@@ -291,9 +298,20 @@ public class SecurityConfiguration {
|
|
|
291
298
|
Converter<Jwt, AbstractAuthenticationToken> authenticationConverter() {
|
|
292
299
|
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
|
|
293
300
|
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(new JwtGrantedAuthorityConverter());
|
|
301
|
+
jwtAuthenticationConverter.setPrincipalClaimName(PREFERRED_USERNAME);
|
|
294
302
|
return jwtAuthenticationConverter;
|
|
295
303
|
}
|
|
304
|
+
|
|
305
|
+
OAuth2UserService<OidcUserRequest, OidcUser> oidcUserService() {
|
|
306
|
+
final OidcUserService delegate = new OidcUserService();
|
|
307
|
+
|
|
308
|
+
return userRequest -> {
|
|
309
|
+
OidcUser oidcUser = delegate.loadUser(userRequest);
|
|
310
|
+
return new DefaultOidcUser(oidcUser.getAuthorities(), oidcUser.getIdToken(), oidcUser.getUserInfo(), PREFERRED_USERNAME);
|
|
311
|
+
};
|
|
312
|
+
}
|
|
296
313
|
<%_ if (!applicationTypeMicroservice) { _%>
|
|
314
|
+
|
|
297
315
|
/**
|
|
298
316
|
* Map authorities from "groups" or "roles" claim in ID Token.
|
|
299
317
|
*
|
|
@@ -20,6 +20,8 @@ package <%= packageName %>.config;
|
|
|
20
20
|
|
|
21
21
|
import <%= packageName %>.security.AuthoritiesConstants;
|
|
22
22
|
<%_ if (authenticationTypeOauth2) { _%>
|
|
23
|
+
import static org.springframework.security.oauth2.core.oidc.StandardClaimNames.PREFERRED_USERNAME;
|
|
24
|
+
|
|
23
25
|
import <%= packageName %>.security.SecurityUtils;
|
|
24
26
|
import <%= packageName %>.security.oauth2.AudienceValidator;
|
|
25
27
|
import <%= packageName %>.security.oauth2.JwtGrantedAuthorityConverter;
|
|
@@ -339,6 +341,7 @@ public class SecurityConfiguration {
|
|
|
339
341
|
Converter<Jwt, Mono<AbstractAuthenticationToken>> jwtAuthenticationConverter() {
|
|
340
342
|
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
|
|
341
343
|
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(new JwtGrantedAuthorityConverter());
|
|
344
|
+
jwtAuthenticationConverter.setPrincipalClaimName(PREFERRED_USERNAME);
|
|
342
345
|
return new ReactiveJwtAuthenticationConverterAdapter(jwtAuthenticationConverter);
|
|
343
346
|
}
|
|
344
347
|
|
|
@@ -363,7 +366,7 @@ public class SecurityConfiguration {
|
|
|
363
366
|
}
|
|
364
367
|
});
|
|
365
368
|
|
|
366
|
-
return new DefaultOidcUser(mappedAuthorities, user.getIdToken(), user.getUserInfo());
|
|
369
|
+
return new DefaultOidcUser(mappedAuthorities, user.getIdToken(), user.getUserInfo(), PREFERRED_USERNAME);
|
|
367
370
|
});
|
|
368
371
|
};
|
|
369
372
|
}
|
|
@@ -80,7 +80,7 @@ public class CustomClaimConverter implements Converter<Map<String, Object>, Map<
|
|
|
80
80
|
// Retrieve and set the token
|
|
81
81
|
String token = bearerTokenResolver.resolve(((ServletRequestAttributes) attributes).getRequest());
|
|
82
82
|
HttpHeaders headers = new HttpHeaders();
|
|
83
|
-
headers.
|
|
83
|
+
headers.setBearerAuth(token);
|
|
84
84
|
|
|
85
85
|
// Retrieve user info from OAuth provider if not already loaded
|
|
86
86
|
ObjectNode user = users.get(claims.get("sub").toString(), s -> {
|
|
@@ -126,8 +126,4 @@ public class CustomClaimConverter implements Converter<Map<String, Object>, Map<
|
|
|
126
126
|
}
|
|
127
127
|
return convertedClaims;
|
|
128
128
|
}
|
|
129
|
-
|
|
130
|
-
private String buildBearer(String token) {
|
|
131
|
-
return "Bearer " + token;
|
|
132
|
-
}
|
|
133
129
|
}
|
package/dist/generators/server/templates/src/main/java/_package_/service/MailService.java.ejs
CHANGED
|
@@ -29,21 +29,29 @@ import jakarta.mail.internet.MimeMessage;
|
|
|
29
29
|
|
|
30
30
|
import org.slf4j.Logger;
|
|
31
31
|
import org.slf4j.LoggerFactory;
|
|
32
|
-
import org.springframework.beans.factory.annotation.Autowired;
|
|
33
32
|
import org.springframework.context.MessageSource;
|
|
34
|
-
import org.springframework.context.annotation.Lazy;
|
|
35
33
|
import org.springframework.mail.MailException;
|
|
36
34
|
import org.springframework.mail.javamail.JavaMailSender;
|
|
37
35
|
import org.springframework.mail.javamail.MimeMessageHelper;
|
|
38
|
-
import org.springframework.scheduling.annotation.Async;
|
|
39
36
|
import org.springframework.stereotype.Service;
|
|
40
37
|
import org.thymeleaf.context.Context;
|
|
41
38
|
import org.thymeleaf.spring6.SpringTemplateEngine;
|
|
39
|
+
<%_ if (reactive) { _%>
|
|
40
|
+
import reactor.core.publisher.Mono;
|
|
41
|
+
<%_ } else { _%>
|
|
42
|
+
import org.springframework.scheduling.annotation.Async;
|
|
43
|
+
<%_ } _%>
|
|
44
|
+
<%_
|
|
45
|
+
const localSendEmailFromTemplateApi = reactive ? 'sendEmailFromTemplate' : 'sendEmailFromTemplateSync';
|
|
46
|
+
_%>
|
|
47
|
+
|
|
42
48
|
|
|
43
49
|
/**
|
|
44
|
-
* Service for sending emails.
|
|
50
|
+
* Service for sending emails asynchronously.
|
|
51
|
+
<%_ if (!reactive) { _%>
|
|
45
52
|
* <p>
|
|
46
53
|
* We use the {@link Async} annotation to send emails asynchronously.
|
|
54
|
+
<%_ } _%>
|
|
47
55
|
*/
|
|
48
56
|
@Service
|
|
49
57
|
public class MailService {
|
|
@@ -62,10 +70,6 @@ public class MailService {
|
|
|
62
70
|
|
|
63
71
|
private final SpringTemplateEngine templateEngine;
|
|
64
72
|
|
|
65
|
-
@Autowired
|
|
66
|
-
@Lazy
|
|
67
|
-
private MailService self;
|
|
68
|
-
|
|
69
73
|
public MailService(JHipsterProperties jHipsterProperties, JavaMailSender javaMailSender,
|
|
70
74
|
MessageSource messageSource, SpringTemplateEngine templateEngine) {
|
|
71
75
|
|
|
@@ -75,8 +79,21 @@ public class MailService {
|
|
|
75
79
|
this.templateEngine = templateEngine;
|
|
76
80
|
}
|
|
77
81
|
|
|
82
|
+
<%_ if (!reactive) { _%>
|
|
78
83
|
@Async
|
|
84
|
+
<%_ } _%>
|
|
79
85
|
public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
|
|
86
|
+
<%_ if (reactive) { _%>
|
|
87
|
+
Mono.defer(() -> {
|
|
88
|
+
this.sendEmailSync(to, subject, content, isMultipart, isHtml);
|
|
89
|
+
return Mono.empty();
|
|
90
|
+
}).subscribe();
|
|
91
|
+
<%_ } else { _%>
|
|
92
|
+
this.sendEmailSync(to, subject, content, isMultipart, isHtml);
|
|
93
|
+
<%_ } _%>
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
private void sendEmailSync(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
|
|
80
97
|
log.debug("Send email[multipart '{}' and html '{}'] to '{}' with subject '{}' and content={}",
|
|
81
98
|
isMultipart, isHtml, to, subject, content);
|
|
82
99
|
|
|
@@ -95,8 +112,21 @@ public class MailService {
|
|
|
95
112
|
}
|
|
96
113
|
}
|
|
97
114
|
|
|
115
|
+
<%_ if (!reactive) { _%>
|
|
98
116
|
@Async
|
|
117
|
+
<%_ } _%>
|
|
99
118
|
public void sendEmailFromTemplate(<%= user.persistClass %> user, String templateName, String titleKey) {
|
|
119
|
+
<%_ if (reactive) { _%>
|
|
120
|
+
Mono.defer(() -> {
|
|
121
|
+
this.sendEmailFromTemplateSync(user, templateName, titleKey);
|
|
122
|
+
return Mono.empty();
|
|
123
|
+
}).subscribe();
|
|
124
|
+
<%_ } else { _%>
|
|
125
|
+
this.sendEmailFromTemplateSync(user, templateName, titleKey);
|
|
126
|
+
<%_ } _%>
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
private void sendEmailFromTemplateSync(<%= user.persistClass %> user, String templateName, String titleKey) {
|
|
100
130
|
if (user.getEmail() == null) {
|
|
101
131
|
log.debug("Email doesn't exist for user '{}'", user.getLogin());
|
|
102
132
|
return;
|
|
@@ -107,26 +137,32 @@ public class MailService {
|
|
|
107
137
|
context.setVariable(BASE_URL, jHipsterProperties.getMail().getBaseUrl());
|
|
108
138
|
String content = templateEngine.process(templateName, context);
|
|
109
139
|
String subject = messageSource.getMessage(titleKey, null, locale);
|
|
110
|
-
|
|
140
|
+
this.sendEmailSync(user.getEmail(), subject, content, false, true);
|
|
111
141
|
}
|
|
112
142
|
<%_ if (!authenticationTypeOauth2) { _%>
|
|
113
143
|
|
|
144
|
+
<%_ if (!reactive) { _%>
|
|
114
145
|
@Async
|
|
146
|
+
<%_ } _%>
|
|
115
147
|
public void sendActivationEmail(<%= user.persistClass %> user) {
|
|
116
148
|
log.debug("Sending activation email to '{}'", user.getEmail());
|
|
117
|
-
|
|
149
|
+
this.<%- localSendEmailFromTemplateApi %>(user, "mail/activationEmail", "email.activation.title");
|
|
118
150
|
}
|
|
119
151
|
|
|
152
|
+
<%_ if (!reactive) { _%>
|
|
120
153
|
@Async
|
|
154
|
+
<%_ } _%>
|
|
121
155
|
public void sendCreationEmail(<%= user.persistClass %> user) {
|
|
122
156
|
log.debug("Sending creation email to '{}'", user.getEmail());
|
|
123
|
-
|
|
157
|
+
this.<%- localSendEmailFromTemplateApi %>(user, "mail/creationEmail", "email.activation.title");
|
|
124
158
|
}
|
|
125
159
|
|
|
160
|
+
<%_ if (!reactive) { _%>
|
|
126
161
|
@Async
|
|
162
|
+
<%_ } _%>
|
|
127
163
|
public void sendPasswordResetMail(<%= user.persistClass %> user) {
|
|
128
164
|
log.debug("Sending password reset email to '{}'", user.getEmail());
|
|
129
|
-
|
|
165
|
+
this.<%- localSendEmailFromTemplateApi %>(user, "mail/passwordResetEmail", "email.reset.title");
|
|
130
166
|
}
|
|
131
167
|
<%_ } _%>
|
|
132
168
|
}
|
package/dist/generators/server/templates/src/main/java/_package_/web/rest/AccountResource.java.ejs
CHANGED
|
@@ -264,7 +264,7 @@ public class AccountResource {
|
|
|
264
264
|
* @throws IllegalArgumentException if the series couldn't be URL decoded.
|
|
265
265
|
*/
|
|
266
266
|
@DeleteMapping("/account/sessions/{series}")
|
|
267
|
-
public void invalidateSession(@PathVariable String series) {
|
|
267
|
+
public void invalidateSession(@PathVariable("series") String series) {
|
|
268
268
|
String decodedSeries = URLDecoder.decode(series, StandardCharsets.UTF_8);
|
|
269
269
|
SecurityUtils.getCurrentUserLogin()
|
|
270
270
|
.flatMap(userRepository::findOneByLogin)
|
|
@@ -52,21 +52,12 @@ public class LogoutResource {
|
|
|
52
52
|
@AuthenticationPrincipal(expression = "idToken") OidcIdToken idToken) {
|
|
53
53
|
StringBuilder logoutUrl = new StringBuilder();
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
logoutUrl.append(issuerUri.endsWith("/") ? issuerUri + "v2/logout" : issuerUri + "/v2/logout");
|
|
58
|
-
} else {
|
|
59
|
-
logoutUrl.append(this.registration.getProviderDetails().getConfigurationMetadata().get("end_session_endpoint").toString());
|
|
60
|
-
}
|
|
61
|
-
|
|
55
|
+
logoutUrl.append(this.registration.getProviderDetails().getConfigurationMetadata().get("end_session_endpoint").toString());
|
|
56
|
+
|
|
62
57
|
String originUrl = request.getHeader(HttpHeaders.ORIGIN);
|
|
63
58
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
} else {
|
|
67
|
-
logoutUrl.append("?id_token_hint=").append(idToken.getTokenValue()).append("&post_logout_redirect_uri=").append(originUrl);
|
|
68
|
-
}
|
|
69
|
-
|
|
59
|
+
logoutUrl.append("?id_token_hint=").append(idToken.getTokenValue()).append("&post_logout_redirect_uri=").append(originUrl);
|
|
60
|
+
|
|
70
61
|
request.getSession().invalidate();
|
|
71
62
|
return ResponseEntity.ok().body(Map.of("logoutUrl", logoutUrl.toString()));
|
|
72
63
|
}
|