generator-jhipster 8.2.1 → 8.4.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.
Files changed (478) hide show
  1. package/dist/cli/environment-builder.mjs +3 -3
  2. package/dist/cli/jhipster-command.mjs +1 -2
  3. package/dist/cli/jhipster.cjs +0 -0
  4. package/dist/generators/angular/command.js +5 -0
  5. package/dist/generators/angular/generator.js +70 -9
  6. package/dist/generators/angular/index.js +1 -0
  7. package/dist/generators/angular/needle-api/needle-client-angular.js +3 -3
  8. package/dist/generators/angular/resources/package.json +15 -12
  9. package/dist/generators/angular/support/index.js +0 -1
  10. package/dist/generators/angular/support/translate-angular.js +142 -8
  11. package/dist/generators/angular/templates/package.json.ejs +0 -10
  12. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.html.ejs +4 -4
  13. package/dist/generators/angular/templates/src/main/webapp/app/account/activate/activate.component.ts.ejs +1 -1
  14. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.html.ejs +1 -1
  15. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
  16. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.html.ejs +19 -27
  17. package/dist/generators/angular/templates/src/main/webapp/app/account/password/password.component.ts.ejs +1 -1
  18. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +19 -26
  19. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +1 -1
  20. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +11 -16
  21. package/dist/generators/angular/templates/src/main/webapp/app/account/password-reset/init/password-reset-init.component.ts.ejs +1 -1
  22. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.html.ejs +32 -47
  23. package/dist/generators/angular/templates/src/main/webapp/app/account/register/register.component.ts.ejs +1 -1
  24. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.html.ejs +7 -8
  25. package/dist/generators/angular/templates/src/main/webapp/app/account/sessions/sessions.component.ts.ejs +1 -1
  26. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.html.ejs +21 -32
  27. package/dist/generators/angular/templates/src/main/webapp/app/account/settings/settings.component.ts.ejs +1 -1
  28. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +4 -4
  29. package/dist/generators/angular/templates/src/main/webapp/app/admin/configuration/configuration.service.ts.ejs +1 -1
  30. package/dist/generators/angular/templates/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +7 -7
  31. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.component.html.ejs +7 -12
  32. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/health.model.ts.ejs +9 -5
  33. package/dist/generators/angular/templates/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +5 -9
  34. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.html.ejs +5 -5
  35. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +3 -3
  36. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.ts.ejs +3 -3
  37. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.html.ejs +5 -5
  38. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +12 -12
  39. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.ts.ejs +4 -4
  40. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +36 -36
  41. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.ts.ejs +4 -4
  42. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +2 -2
  43. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.ts.ejs +3 -3
  44. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +33 -33
  45. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.ts.ejs +3 -3
  46. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +8 -8
  47. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +8 -8
  48. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.ts.ejs +4 -4
  49. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +13 -13
  50. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.ts.ejs +3 -3
  51. package/dist/generators/angular/templates/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +4 -4
  52. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +6 -6
  53. package/dist/generators/angular/templates/src/main/webapp/app/admin/tracker/tracker.component.ts.ejs +2 -1
  54. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +4 -4
  55. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +26 -26
  56. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +3 -3
  57. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.ts.ejs +2 -2
  58. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +16 -18
  59. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +1 -2
  60. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +21 -35
  61. package/dist/generators/angular/templates/src/main/webapp/app/app.component.ts.ejs +1 -1
  62. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +0 -2
  63. package/dist/generators/angular/templates/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +7 -7
  64. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/delete/_entityFile_-delete-dialog.component.html.ejs +4 -4
  65. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.html.ejs +25 -25
  66. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.spec.ts.ejs +3 -3
  67. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/detail/_entityFile_-detail.component.ts.ejs +2 -2
  68. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.html.ejs +14 -14
  69. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/list/_entityFile_.component.spec.ts.ejs +0 -2
  70. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/route/_entityFile_-routing-resolve.service.spec.ts.ejs +1 -2
  71. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-form.service.ts.ejs +10 -6
  72. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.html.ejs +18 -25
  73. package/dist/generators/angular/templates/src/main/webapp/app/entities/_entityFolder_/update/_entityFile_-update.component.spec.ts.ejs +0 -2
  74. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.html.ejs +14 -15
  75. package/dist/generators/angular/templates/src/main/webapp/app/home/home.component.spec.ts.ejs +1 -5
  76. package/dist/generators/angular/templates/src/main/webapp/app/layouts/error/error.component.html.ejs +1 -1
  77. package/dist/generators/angular/templates/src/main/webapp/app/layouts/footer/footer.component.html.ejs +1 -1
  78. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +11 -18
  79. package/dist/generators/angular/templates/src/main/webapp/app/layouts/main/main.component.ts.ejs +1 -1
  80. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +21 -21
  81. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +0 -2
  82. package/dist/generators/angular/templates/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +1 -1
  83. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.html.ejs +12 -13
  84. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.spec.ts.ejs +1 -2
  85. package/dist/generators/angular/templates/src/main/webapp/app/login/login.component.ts.ejs +1 -1
  86. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.html.ejs +3 -3
  87. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.component.ts.ejs +1 -1
  88. package/dist/generators/angular/templates/webpack/webpack.custom.js.ejs +1 -1
  89. package/dist/generators/app/generator.js +4 -22
  90. package/dist/generators/app/support/config.js +1 -3
  91. package/dist/generators/base/generator.js +21 -2
  92. package/dist/generators/base/shared-data.js +1 -2
  93. package/dist/generators/base/support/basename.js +1 -2
  94. package/dist/generators/base/support/needles.js +3 -5
  95. package/dist/generators/base/support/string.js +2 -2
  96. package/dist/generators/base-application/generator.js +4 -4
  97. package/dist/generators/base-application/support/entity.js +1 -2
  98. package/dist/generators/base-application/support/enum.js +2 -2
  99. package/dist/generators/base-application/support/prepare-entity.js +1 -1
  100. package/dist/generators/base-application/support/prepare-field.js +6 -7
  101. package/dist/generators/base-application/support/relationship.js +1 -2
  102. package/dist/generators/base-application/support/task-type-inference.js +6 -0
  103. package/dist/generators/base-core/generator.js +86 -14
  104. package/dist/generators/base-entity-changes/generator.js +24 -0
  105. package/dist/generators/base-workspaces/internal/deployments.js +2 -2
  106. package/dist/generators/base-workspaces/internal/docker-dependencies.js +2 -2
  107. package/dist/generators/bootstrap/generator.js +4 -5
  108. package/dist/generators/bootstrap/internal/transform-utils.js +4 -0
  109. package/dist/generators/bootstrap/support/eslint-transform.js +2 -1
  110. package/dist/generators/bootstrap/support/java-unused-imports-transform.js +2 -1
  111. package/dist/generators/bootstrap/support/prettier-worker.js +2 -4
  112. package/dist/generators/bootstrap-application/generator.js +3 -4
  113. package/dist/generators/bootstrap-application-base/generator.js +46 -6
  114. package/dist/generators/bootstrap-application-base/utils.js +3 -3
  115. package/dist/generators/bootstrap-application-client/generator.js +2 -3
  116. package/dist/generators/bootstrap-application-server/generator.js +22 -19
  117. package/dist/generators/bootstrap-workspaces/generator.js +1 -2
  118. package/dist/generators/ci-cd/command.js +1 -2
  119. package/dist/generators/ci-cd/generator.js +2 -7
  120. package/dist/generators/client/command.js +1 -2
  121. package/dist/generators/client/generator.js +11 -33
  122. package/dist/generators/client/needle-api/needle-client-vue.js +2 -2
  123. package/dist/generators/client/resources/package.json +6 -6
  124. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +2 -2
  125. package/dist/generators/common/command.js +13 -0
  126. package/dist/generators/common/generator.js +17 -8
  127. package/dist/generators/common/resources/package.json +1 -1
  128. package/dist/generators/cucumber/generator.js +17 -10
  129. package/dist/generators/cucumber/templates/buildSrc/src/main/groovy/jhipster.cucumber-conventions.gradle.ejs +1 -5
  130. package/dist/generators/cypress/generator.js +2 -3
  131. package/dist/generators/cypress/templates/src/test/javascript/cypress/e2e/administration/administration.cy.ts.ejs +10 -0
  132. package/dist/generators/docker/generator.js +4 -6
  133. package/dist/generators/docker/templates/docker/realm-config/jhipster-realm.json.ejs +0 -32
  134. package/dist/generators/docker/utils.js +2 -3
  135. package/dist/generators/docker-compose/generator.js +5 -10
  136. package/dist/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +0 -32
  137. package/dist/generators/entities/generator.js +4 -4
  138. package/dist/generators/entity/generator.js +10 -9
  139. package/dist/generators/entity/prompts.js +12 -12
  140. package/dist/generators/export-jdl/generator.js +0 -5
  141. package/dist/generators/feign-client/generator.js +3 -4
  142. package/dist/generators/gatling/generator.js +2 -3
  143. package/dist/generators/gatling/templates/buildSrc/src/main/groovy/jhipster.gatling-conventions.gradle.ejs +1 -1
  144. package/dist/generators/generate-blueprint/files.js +1 -0
  145. package/dist/generators/generate-blueprint/generator.js +3 -4
  146. package/dist/generators/generate-blueprint/resources/package.json +1 -1
  147. package/dist/generators/generate-blueprint/templates/.blueprint/generate-sample/generator.mjs.ejs +3 -2
  148. package/dist/generators/generate-blueprint/templates/generators/generator/command.mjs.ejs +19 -1
  149. package/dist/generators/generate-blueprint/templates/vitest.test-setup.ts.ejs +6 -0
  150. package/dist/generators/generator-constants.js +5 -2
  151. package/dist/generators/git/generator.js +3 -5
  152. package/dist/generators/gradle/command.js +32 -0
  153. package/dist/generators/gradle/constants.js +0 -1
  154. package/dist/generators/gradle/files.js +2 -8
  155. package/dist/generators/gradle/generator.js +85 -13
  156. package/dist/generators/gradle/generators/code-quality/generator.js +86 -0
  157. package/dist/generators/{java/cleanup.js → gradle/generators/code-quality/index.js} +1 -5
  158. package/dist/generators/gradle/generators/jib/generator.js +64 -0
  159. package/dist/generators/{app/prompts.js → gradle/generators/jib/index.js} +1 -15
  160. package/dist/generators/gradle/generators/node-gradle/generator.js +64 -0
  161. package/dist/generators/gradle/generators/node-gradle/index.js +19 -0
  162. package/dist/generators/gradle/generators/node-gradle/templates/buildSrc/src/main/groovy/jhipster.node-gradle-conventions.gradle.ejs +101 -0
  163. package/dist/generators/gradle/index.js +1 -0
  164. package/dist/generators/gradle/internal/needles.js +9 -3
  165. package/dist/generators/gradle/templates/buildSrc/build.gradle.ejs +3 -2
  166. package/dist/generators/gradle/templates/buildSrc/gradle/libs.versions.toml.ejs +8 -1
  167. package/dist/generators/gradle/templates/gradle/wrapper/{gradle-wrapper.properties.ejs → gradle-wrapper.properties} +1 -1
  168. package/dist/generators/heroku/generator.js +2 -7
  169. package/dist/generators/init/generator.js +3 -4
  170. package/dist/generators/init/resources/.node-version +1 -0
  171. package/dist/generators/java/command.js +2 -38
  172. package/dist/generators/java/generator.js +5 -260
  173. package/dist/generators/java/generators/bootstrap/command.js +35 -0
  174. package/dist/generators/java/generators/bootstrap/generator.js +178 -0
  175. package/dist/generators/java/generators/bootstrap/index.js +20 -0
  176. package/dist/generators/java/generators/build-tool/command.js +42 -0
  177. package/dist/generators/java/generators/build-tool/generator.js +143 -0
  178. package/dist/generators/java/generators/build-tool/index.js +20 -0
  179. package/dist/generators/java/generators/code-quality/command.js +5 -0
  180. package/dist/generators/java/generators/code-quality/generator.js +91 -0
  181. package/dist/generators/java/generators/code-quality/index.js +20 -0
  182. package/dist/generators/java/generators/domain/command.js +30 -0
  183. package/dist/generators/java/{entity-files.js → generators/domain/entity-files.js} +1 -1
  184. package/dist/generators/java/generators/domain/generator.js +169 -0
  185. package/dist/generators/java/generators/domain/index.js +20 -0
  186. package/dist/generators/java/generators/jib/command.js +5 -0
  187. package/dist/generators/java/generators/jib/generator.js +97 -0
  188. package/dist/generators/java/generators/jib/index.js +20 -0
  189. package/dist/generators/{server → java/generators/jib}/templates/src/main/docker/jib/entrypoint.sh.ejs +2 -0
  190. package/dist/generators/java/generators/node/command.js +5 -0
  191. package/dist/generators/java/generators/node/generator.js +97 -0
  192. package/dist/generators/java/generators/node/index.js +20 -0
  193. package/dist/generators/java/support/index.js +1 -0
  194. package/dist/generators/jdl/generator.js +6 -13
  195. package/dist/generators/kubernetes/generator.js +1 -6
  196. package/dist/generators/kubernetes/kubernetes-base.js +3 -3
  197. package/dist/generators/kubernetes/templates/keycloak/keycloak-configmap.yml.ejs +0 -32
  198. package/dist/generators/kubernetes-helm/generator.js +1 -6
  199. package/dist/generators/kubernetes-knative/generator.js +1 -6
  200. package/dist/generators/languages/entity-files.js +3 -2
  201. package/dist/generators/languages/files.js +2 -2
  202. package/dist/generators/languages/generator.js +6 -15
  203. package/dist/generators/languages/support/translate.js +34 -9
  204. package/dist/generators/languages/templates/src/main/webapp/i18n/al/home.json.ejs +19 -0
  205. package/dist/generators/languages/templates/src/main/webapp/i18n/ar-ly/home.json.ejs +19 -0
  206. package/dist/generators/languages/templates/src/main/webapp/i18n/az-Latn-az/home.json.ejs +19 -0
  207. package/dist/generators/languages/templates/src/main/webapp/i18n/bg/home.json.ejs +19 -0
  208. package/dist/generators/languages/templates/src/main/webapp/i18n/bn/home.json.ejs +19 -0
  209. package/dist/generators/languages/templates/src/main/webapp/i18n/by/home.json.ejs +19 -0
  210. package/dist/generators/languages/templates/src/main/webapp/i18n/ca/home.json.ejs +19 -0
  211. package/dist/generators/languages/templates/src/main/webapp/i18n/cs/home.json.ejs +19 -0
  212. package/dist/generators/languages/templates/src/main/webapp/i18n/da/home.json.ejs +19 -0
  213. package/dist/generators/languages/templates/src/main/webapp/i18n/de/global.json.ejs +2 -2
  214. package/dist/generators/languages/templates/src/main/webapp/i18n/de/home.json.ejs +19 -0
  215. package/dist/generators/languages/templates/src/main/webapp/i18n/el/home.json.ejs +19 -0
  216. package/dist/generators/languages/templates/src/main/webapp/i18n/en/home.json.ejs +19 -0
  217. package/dist/generators/languages/templates/src/main/webapp/i18n/es/home.json.ejs +19 -0
  218. package/dist/generators/languages/templates/src/main/webapp/i18n/et/home.json.ejs +19 -0
  219. package/dist/generators/languages/templates/src/main/webapp/i18n/fa/home.json.ejs +19 -0
  220. package/dist/generators/languages/templates/src/main/webapp/i18n/fi/home.json.ejs +19 -0
  221. package/dist/generators/languages/templates/src/main/webapp/i18n/fr/home.json.ejs +19 -0
  222. package/dist/generators/languages/templates/src/main/webapp/i18n/gl/home.json.ejs +19 -0
  223. package/dist/generators/languages/templates/src/main/webapp/i18n/hi/home.json.ejs +19 -0
  224. package/dist/generators/languages/templates/src/main/webapp/i18n/hr/home.json.ejs +19 -0
  225. package/dist/generators/languages/templates/src/main/webapp/i18n/hu/home.json.ejs +19 -0
  226. package/dist/generators/languages/templates/src/main/webapp/i18n/hy/home.json.ejs +19 -0
  227. package/dist/generators/languages/templates/src/main/webapp/i18n/id/home.json.ejs +19 -0
  228. package/dist/generators/languages/templates/src/main/webapp/i18n/it/home.json.ejs +19 -0
  229. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/home.json.ejs +19 -0
  230. package/dist/generators/languages/templates/src/main/webapp/i18n/ko/home.json.ejs +19 -0
  231. package/dist/generators/languages/templates/src/main/webapp/i18n/kr-Latn-kr/home.json.ejs +19 -0
  232. package/dist/generators/languages/templates/src/main/webapp/i18n/mr/home.json.ejs +19 -0
  233. package/dist/generators/languages/templates/src/main/webapp/i18n/my/home.json.ejs +19 -0
  234. package/dist/generators/languages/templates/src/main/webapp/i18n/nl/home.json.ejs +19 -0
  235. package/dist/generators/languages/templates/src/main/webapp/i18n/pa/{home.json → home.json.ejs} +2 -2
  236. package/dist/generators/languages/templates/src/main/webapp/i18n/pl/home.json.ejs +19 -0
  237. package/dist/generators/languages/templates/src/main/webapp/i18n/pt-br/home.json.ejs +19 -0
  238. package/dist/generators/languages/templates/src/main/webapp/i18n/pt-pt/home.json.ejs +19 -0
  239. package/dist/generators/languages/templates/src/main/webapp/i18n/ro/home.json.ejs +19 -0
  240. package/dist/generators/languages/templates/src/main/webapp/i18n/ru/home.json.ejs +19 -0
  241. package/dist/generators/languages/templates/src/main/webapp/i18n/si/{home.json → home.json.ejs} +6 -6
  242. package/dist/generators/languages/templates/src/main/webapp/i18n/sk/home.json.ejs +19 -0
  243. package/dist/generators/languages/templates/src/main/webapp/i18n/sr/home.json.ejs +19 -0
  244. package/dist/generators/languages/templates/src/main/webapp/i18n/sv/home.json.ejs +19 -0
  245. package/dist/generators/languages/templates/src/main/webapp/i18n/ta/home.json.ejs +19 -0
  246. package/dist/generators/languages/templates/src/main/webapp/i18n/te/{home.json → home.json.ejs} +1 -1
  247. package/dist/generators/languages/templates/src/main/webapp/i18n/th/home.json.ejs +19 -0
  248. package/dist/generators/languages/templates/src/main/webapp/i18n/tr/home.json.ejs +19 -0
  249. package/dist/generators/languages/templates/src/main/webapp/i18n/ua/home.json.ejs +19 -0
  250. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/home.json.ejs +19 -0
  251. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/home.json.ejs +19 -0
  252. package/dist/generators/languages/templates/src/main/webapp/i18n/vi/home.json.ejs +19 -0
  253. package/dist/generators/languages/templates/src/main/webapp/i18n/zh-cn/home.json.ejs +19 -0
  254. package/dist/generators/languages/templates/src/main/webapp/i18n/zh-tw/home.json.ejs +19 -0
  255. package/dist/generators/languages/translation-data.js +4 -5
  256. package/dist/generators/liquibase/generator.js +126 -36
  257. package/dist/generators/liquibase/support/maven-plugin.js +6 -0
  258. package/dist/generators/liquibase/support/prepare-field.js +16 -1
  259. package/dist/generators/liquibase/support/relationship.js +1 -0
  260. package/dist/generators/liquibase/templates/gradle/liquibase.gradle.ejs +3 -6
  261. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs +1 -1
  262. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs +3 -3
  263. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +26 -1
  264. package/dist/generators/liquibase/templates/src/main/resources/config/liquibase/fake-data/table_entity.csv.ejs +3 -3
  265. package/dist/generators/maven/generator.js +14 -6
  266. package/dist/generators/maven/generators/code-quality/command.js +5 -0
  267. package/dist/generators/maven/generators/code-quality/generator.js +268 -0
  268. package/dist/generators/maven/generators/code-quality/index.js +20 -0
  269. package/dist/generators/maven/generators/frontend-plugin/command.js +5 -0
  270. package/dist/generators/maven/generators/frontend-plugin/generator.js +295 -0
  271. package/dist/generators/maven/generators/frontend-plugin/index.js +20 -0
  272. package/dist/generators/maven/generators/jib/command.js +5 -0
  273. package/dist/generators/maven/generators/jib/generator.js +136 -0
  274. package/dist/generators/maven/generators/jib/index.js +20 -0
  275. package/dist/generators/maven/internal/xml-store.js +1 -2
  276. package/dist/generators/maven/support/dependabot-maven.js +12 -2
  277. package/dist/generators/maven/support/pom-store.js +1 -2
  278. package/dist/generators/project-name/generator.js +9 -11
  279. package/dist/generators/react/generator.js +25 -6
  280. package/dist/generators/react/needle-api/needle-client-react.js +2 -2
  281. package/dist/generators/react/resources/package.json +27 -24
  282. package/dist/generators/react/templates/package.json.ejs +1 -7
  283. package/dist/generators/react/templates/src/main/webapp/app/modules/administration/tracker/tracker.tsx.ejs +2 -2
  284. package/dist/generators/react/templates/src/main/webapp/app/modules/home/home.tsx.ejs +7 -7
  285. package/dist/generators/react/templates/webpack/webpack.microfrontend.js.jhi.react.ejs +0 -8
  286. package/dist/generators/server/command.js +2 -34
  287. package/dist/generators/server/generator.js +35 -204
  288. package/dist/generators/server/jdl/application-definition.js +1 -2
  289. package/dist/generators/server/resources/Dockerfile +13 -13
  290. package/dist/generators/server/resources/build.gradle +1 -0
  291. package/dist/generators/server/resources/gradle/libs.versions.toml +27 -9
  292. package/dist/generators/server/resources/pom.xml +9 -27
  293. package/dist/generators/server/support/prepare-field.js +8 -4
  294. package/dist/generators/server/support/prepare-relationship.js +7 -2
  295. package/dist/generators/server/templates/build.gradle.ejs +29 -143
  296. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +3 -3
  297. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +2 -2
  298. package/dist/generators/server/templates/gradle.properties.ejs +0 -7
  299. package/dist/generators/server/templates/pom.xml.ejs +23 -448
  300. package/dist/generators/server/templates/settings.gradle.ejs +0 -4
  301. package/dist/generators/server/templates/src/main/java/_package_/config/SecurityConfiguration_imperative.java.ejs +71 -9
  302. package/dist/generators/server/templates/src/main/java/_package_/web/filter/SpaWebFilter_imperative.java.ejs +4 -1
  303. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +16 -5
  304. package/dist/generators/server/templates/src/main/resources/config/bootstrap.yml.ejs +1 -1
  305. package/dist/generators/server/templates/src/main/resources/static/index_microservices.html.ejs +8 -8
  306. package/dist/generators/server/templates/src/test/java/_package_/IntegrationTest.java.ejs +0 -2
  307. package/dist/generators/server/templates/src/test/java/_package_/config/TestContainersSpringContextCustomizerFactory.java.ejs +71 -46
  308. package/dist/generators/server/templates/src/test/java/_package_/security/jwt/AuthenticationIntegrationTest.java.ejs +0 -3
  309. package/dist/generators/server/templates/src/test/resources/config/application.yml.ejs +1 -1
  310. package/dist/generators/spring-boot/cleanup.js +3 -0
  311. package/dist/generators/spring-boot/command.js +40 -2
  312. package/dist/generators/spring-boot/entity-files.js +2 -2
  313. package/dist/generators/spring-boot/files.js +3 -43
  314. package/dist/generators/spring-boot/generator.js +115 -37
  315. package/dist/generators/{server → spring-boot}/prompts.js +6 -48
  316. package/dist/generators/spring-boot/resources/spring-boot-dependencies.pom +125 -125
  317. package/dist/generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs +2 -2
  318. package/dist/generators/spring-cache/generator.js +11 -6
  319. package/dist/generators/spring-cache/internal/dependencies.js +5 -0
  320. package/dist/generators/spring-cache/resources/build.gradle +1 -0
  321. package/dist/generators/spring-cache/resources/gradle/libs.versions.toml +15 -0
  322. package/dist/generators/spring-cache/templates/src/main/java/_package_/config/CacheConfiguration.java.ejs +4 -0
  323. package/dist/generators/spring-cache/templates/src/test/java/_package_/config/RedisTestContainersSpringContextCustomizerFactory.java.ejs +29 -13
  324. package/dist/generators/spring-cloud/generators/gateway/command.js +5 -0
  325. package/dist/generators/spring-cloud/generators/gateway/generator.js +146 -0
  326. package/dist/generators/spring-cloud/generators/gateway/index.js +20 -0
  327. package/dist/generators/spring-cloud-stream/generator.js +2 -3
  328. package/dist/generators/spring-cloud-stream/generators/kafka/generator.js +2 -2
  329. package/dist/generators/spring-cloud-stream/generators/kafka/templates/src/test/java/_package_/config/KafkaTestContainersSpringContextCustomizerFactory.java.ejs +28 -12
  330. package/dist/generators/spring-cloud-stream/generators/pulsar/generator.js +2 -2
  331. package/dist/generators/spring-cloud-stream/generators/pulsar/templates/src/test/java/_package_/config/PulsarTestContainersSpringContextCustomizerFactory.java.ejs +33 -17
  332. package/dist/generators/spring-data-cassandra/generator.js +5 -6
  333. package/dist/generators/spring-data-cassandra/templates/src/test/java/_package_/config/CassandraTestContainersSpringContextCustomizerFactory.java.ejs +33 -17
  334. package/dist/generators/spring-data-couchbase/generator.js +3 -4
  335. package/dist/generators/spring-data-elasticsearch/generator.js +3 -5
  336. package/dist/generators/spring-data-mongodb/generator.js +5 -5
  337. package/dist/generators/spring-data-neo4j/generator.js +11 -5
  338. package/dist/generators/spring-data-neo4j/templates/src/test/java/_package_/config/Neo4jTestContainersSpringContextCustomizerFactory.java.ejs +32 -16
  339. package/dist/generators/spring-data-relational/generator.js +6 -7
  340. package/dist/generators/spring-data-relational/support/h2-reserved-keywords.js +22 -0
  341. package/dist/generators/spring-data-relational/templates/src/test/java/_package_/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +47 -32
  342. package/dist/generators/spring-websocket/generator.js +2 -3
  343. package/dist/generators/upgrade/generator.js +4 -7
  344. package/dist/generators/vue/generator.js +4 -4
  345. package/dist/generators/vue/resources/package.json +24 -21
  346. package/dist/generators/vue/templates/package.json.ejs +3 -3
  347. package/dist/generators/vue/templates/src/main/webapp/app/account/account.service.spec.ts.ejs +1 -1
  348. package/dist/generators/vue/templates/src/main/webapp/app/account/account.service.ts.ejs +1 -1
  349. package/dist/generators/vue/templates/src/main/webapp/app/account/change-password/change-password.vue.ejs +1 -1
  350. package/dist/generators/vue/templates/src/main/webapp/app/account/login-form/login-form.vue.ejs +1 -1
  351. package/dist/generators/vue/templates/src/main/webapp/app/account/register/register.vue.ejs +1 -1
  352. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/finish/reset-password-finish.vue.ejs +1 -1
  353. package/dist/generators/vue/templates/src/main/webapp/app/account/reset-password/init/reset-password-init.vue.ejs +1 -1
  354. package/dist/generators/vue/templates/src/main/webapp/app/account/settings/settings.vue.ejs +1 -1
  355. package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.service.ts.ejs +3 -3
  356. package/dist/generators/vue/templates/src/main/webapp/app/admin/tracker/tracker.vue.ejs +2 -2
  357. package/dist/generators/vue/templates/src/main/webapp/app/admin/user-management/user-management-edit.vue.ejs +1 -1
  358. package/dist/generators/vue/templates/src/main/webapp/app/core/home/home.vue.ejs +7 -7
  359. package/dist/generators/vue/templates/src/main/webapp/app/entities/_entityFolder_/_entityFile_-update.vue.ejs +1 -1
  360. package/dist/generators/vue/templates/src/main/webapp/app/main.ts.ejs +4 -3
  361. package/dist/generators/vue/templates/vite.config.mts.ejs +6 -0
  362. package/dist/generators/vue/templates/vitest.config.mts.ejs +1 -1
  363. package/dist/generators/vue/templates/webpack/webpack.microfrontend.js.jhi.vue.ejs +0 -9
  364. package/dist/generators/workspaces/generator.js +5 -4
  365. package/dist/jdl/converters/jdl-to-json/jdl-to-json-field-converter.js +2 -2
  366. package/dist/jdl/converters/jdl-to-json/jdl-to-json-relationship-converter.js +3 -3
  367. package/dist/jdl/converters/parsed-jdl-to-jdl-object/parsed-jdl-to-jdl-object-converter.js +2 -2
  368. package/dist/jdl/jdl-importer.js +1 -2
  369. package/dist/jdl/jhipster/default-application-options.js +1 -1
  370. package/dist/jdl/jhipster/field-types.js +2 -2
  371. package/dist/jdl/jhipster/relationship-types.js +1 -2
  372. package/dist/jdl/models/jdl-deployment.js +1 -2
  373. package/dist/jdl/parsing/api.js +2 -2
  374. package/dist/jdl/parsing/lexer/token-creator.js +1 -2
  375. package/dist/jdl/parsing/self-checks/parsing-system-checker.js +13 -13
  376. package/dist/jdl/parsing/validator.js +5 -5
  377. package/dist/testing/get-generator.js +1 -1
  378. package/dist/testing/helpers.js +34 -9
  379. package/dist/types/generators/angular/support/index.d.ts +0 -1
  380. package/dist/types/generators/angular/support/translate-angular.d.ts +7 -4
  381. package/dist/types/generators/app/support/config.d.ts +1 -1
  382. package/dist/types/generators/base/api.d.ts +8 -1
  383. package/dist/types/generators/base/generator.d.ts +1 -1
  384. package/dist/types/generators/base-application/generator.d.ts +4 -4
  385. package/dist/types/generators/base-application/support/task-type-inference.d.ts +3 -0
  386. package/dist/types/generators/base-application/support/update-application-entities-transform.d.ts +1 -1
  387. package/dist/types/generators/base-application/types.d.ts +15 -0
  388. package/dist/types/generators/base-core/generator.d.ts +33 -1
  389. package/dist/types/generators/base-entity-changes/types.d.ts +2 -0
  390. package/dist/types/generators/bootstrap/internal/transform-utils.d.ts +1 -0
  391. package/dist/types/generators/bootstrap/support/java-unused-imports-transform.d.ts +1 -1
  392. package/dist/types/generators/bootstrap-application-base/support/export-jdl-transform.d.ts +2 -2
  393. package/dist/types/generators/docker/utils.d.ts +7 -0
  394. package/dist/types/generators/generator-constants.d.ts +2 -20
  395. package/dist/types/generators/gradle/types.d.ts +21 -7
  396. package/dist/types/generators/java/support/index.d.ts +1 -0
  397. package/dist/types/generators/java/types.d.ts +37 -22
  398. package/dist/types/generators/languages/support/translate.d.ts +29 -0
  399. package/dist/types/generators/maven/support/dependabot-maven.d.ts +17 -1
  400. package/dist/types/generators/project-name/support/name-resolver.d.ts +1 -1
  401. package/dist/types/generators/server/types.d.ts +2 -0
  402. package/dist/types/generators/spring-data-relational/support/h2-reserved-keywords.d.ts +20 -0
  403. package/dist/types/jdl/converters/jdl-to-json/jdl-to-json-field-converter.d.ts +0 -18
  404. package/dist/types/testing/helpers.d.ts +6 -0
  405. package/dist/types/testing/support/matrix-utils.d.ts +1 -1
  406. package/package.json +19 -32
  407. package/dist/generators/java/files.js +0 -20
  408. package/dist/generators/languages/templates/src/main/webapp/i18n/al/home.json +0 -19
  409. package/dist/generators/languages/templates/src/main/webapp/i18n/ar-ly/home.json +0 -19
  410. package/dist/generators/languages/templates/src/main/webapp/i18n/az-Latn-az/home.json +0 -19
  411. package/dist/generators/languages/templates/src/main/webapp/i18n/bg/home.json +0 -19
  412. package/dist/generators/languages/templates/src/main/webapp/i18n/bn/home.json +0 -19
  413. package/dist/generators/languages/templates/src/main/webapp/i18n/by/home.json +0 -19
  414. package/dist/generators/languages/templates/src/main/webapp/i18n/ca/home.json +0 -19
  415. package/dist/generators/languages/templates/src/main/webapp/i18n/cs/home.json +0 -19
  416. package/dist/generators/languages/templates/src/main/webapp/i18n/da/home.json +0 -19
  417. package/dist/generators/languages/templates/src/main/webapp/i18n/de/home.json +0 -19
  418. package/dist/generators/languages/templates/src/main/webapp/i18n/el/home.json +0 -19
  419. package/dist/generators/languages/templates/src/main/webapp/i18n/en/home.json +0 -19
  420. package/dist/generators/languages/templates/src/main/webapp/i18n/es/home.json +0 -19
  421. package/dist/generators/languages/templates/src/main/webapp/i18n/et/home.json +0 -19
  422. package/dist/generators/languages/templates/src/main/webapp/i18n/fa/home.json +0 -19
  423. package/dist/generators/languages/templates/src/main/webapp/i18n/fi/home.json +0 -19
  424. package/dist/generators/languages/templates/src/main/webapp/i18n/fr/home.json +0 -19
  425. package/dist/generators/languages/templates/src/main/webapp/i18n/gl/home.json +0 -19
  426. package/dist/generators/languages/templates/src/main/webapp/i18n/hi/home.json +0 -19
  427. package/dist/generators/languages/templates/src/main/webapp/i18n/hr/home.json +0 -19
  428. package/dist/generators/languages/templates/src/main/webapp/i18n/hu/home.json +0 -19
  429. package/dist/generators/languages/templates/src/main/webapp/i18n/hy/home.json +0 -19
  430. package/dist/generators/languages/templates/src/main/webapp/i18n/id/home.json +0 -19
  431. package/dist/generators/languages/templates/src/main/webapp/i18n/it/home.json +0 -19
  432. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/home.json +0 -19
  433. package/dist/generators/languages/templates/src/main/webapp/i18n/ko/home.json +0 -19
  434. package/dist/generators/languages/templates/src/main/webapp/i18n/kr-Latn-kr/home.json +0 -19
  435. package/dist/generators/languages/templates/src/main/webapp/i18n/mr/home.json +0 -19
  436. package/dist/generators/languages/templates/src/main/webapp/i18n/my/home.json +0 -19
  437. package/dist/generators/languages/templates/src/main/webapp/i18n/nl/home.json +0 -19
  438. package/dist/generators/languages/templates/src/main/webapp/i18n/pl/home.json +0 -19
  439. package/dist/generators/languages/templates/src/main/webapp/i18n/pt-br/home.json +0 -19
  440. package/dist/generators/languages/templates/src/main/webapp/i18n/pt-pt/home.json +0 -19
  441. package/dist/generators/languages/templates/src/main/webapp/i18n/ro/home.json +0 -19
  442. package/dist/generators/languages/templates/src/main/webapp/i18n/ru/home.json +0 -19
  443. package/dist/generators/languages/templates/src/main/webapp/i18n/sk/home.json +0 -19
  444. package/dist/generators/languages/templates/src/main/webapp/i18n/sr/home.json +0 -19
  445. package/dist/generators/languages/templates/src/main/webapp/i18n/sv/home.json +0 -19
  446. package/dist/generators/languages/templates/src/main/webapp/i18n/ta/home.json +0 -19
  447. package/dist/generators/languages/templates/src/main/webapp/i18n/th/home.json +0 -19
  448. package/dist/generators/languages/templates/src/main/webapp/i18n/tr/home.json +0 -19
  449. package/dist/generators/languages/templates/src/main/webapp/i18n/ua/home.json +0 -19
  450. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/global.json +0 -148
  451. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/home.json +0 -19
  452. package/dist/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/home.json +0 -19
  453. package/dist/generators/languages/templates/src/main/webapp/i18n/vi/home.json +0 -19
  454. package/dist/generators/languages/templates/src/main/webapp/i18n/zh-cn/home.json +0 -19
  455. package/dist/generators/languages/templates/src/main/webapp/i18n/zh-tw/home.json +0 -19
  456. package/dist/generators/server/templates/src/main/java/_package_/config/LocaleConfiguration_imperative.java.ejs +0 -43
  457. package/dist/generators/server/templates/src/main/java/_package_/config/LocaleConfiguration_reactive.java.ejs +0 -184
  458. package/dist/generators/statistics.js +0 -223
  459. /package/dist/generators/{server → gradle/generators/code-quality}/templates/buildSrc/src/main/groovy/jhipster.code-quality-conventions.gradle.ejs +0 -0
  460. /package/dist/generators/{server → gradle/generators/jib}/templates/buildSrc/src/main/groovy/jhipster.docker-conventions.gradle.ejs +0 -0
  461. /package/dist/generators/java/{templates → generators/bootstrap/templates}/src/main/java/_package_/GeneratedByJHipster.java.ejs +0 -0
  462. /package/dist/generators/{server → java/generators/code-quality}/templates/checkstyle.xml.ejs +0 -0
  463. /package/dist/generators/java/{templates → generators/domain/templates}/_global_partials_entity_/field_validators.ejs +0 -0
  464. /package/dist/generators/java/{templates → generators/domain/templates}/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.ejs +0 -0
  465. /package/dist/generators/java/{templates → generators/domain/templates}/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jackson_identity_info.ejs +0 -0
  466. /package/dist/generators/java/{templates → generators/domain/templates}/src/main/java/_package_/_entityPackage_/domain/_persistClass_.java.jhi.jakarta_validation.ejs +0 -0
  467. /package/dist/generators/java/{templates → generators/domain/templates}/src/main/java/_package_/_entityPackage_/domain/enumeration/_enumName_.java.ejs +0 -0
  468. /package/dist/generators/java/{templates → generators/domain/templates}/src/test/java/_package_/_entityPackage_/domain/_persistClass_Asserts.java.ejs +0 -0
  469. /package/dist/generators/java/{templates → generators/domain/templates}/src/test/java/_package_/_entityPackage_/domain/_persistClass_Test.java.ejs +0 -0
  470. /package/dist/generators/java/{templates → generators/domain/templates}/src/test/java/_package_/_entityPackage_/domain/_persistClass_TestSamples.java.ejs +0 -0
  471. /package/dist/generators/java/{templates → generators/domain/templates}/src/test/java/_package_/domain/AssertUtils.java.ejs +0 -0
  472. /package/dist/generators/{server → java/generators/node}/templates/npmw +0 -0
  473. /package/dist/generators/{server → java/generators/node}/templates/npmw.cmd +0 -0
  474. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/main/java/_package_/security/jwt/JWTRelayGatewayFilterFactory.java.ejs +0 -0
  475. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/main/java/_package_/web/filter/ModifyServersOpenApiFilter.java.ejs +0 -0
  476. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/main/java/_package_/web/rest/GatewayResource.java.ejs +0 -0
  477. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/main/java/_package_/web/rest/vm/RouteVM.java.ejs +0 -0
  478. /package/dist/generators/{server → spring-cloud/generators/gateway}/templates/src/test/java/_package_/web/filter/ModifyServersOpenApiFilterTest.java.ejs +0 -0
@@ -54,6 +54,10 @@ import tech.jhipster.web.filter.CookieCsrfFilter;
54
54
  <%_ if (!skipClient) { _%>
55
55
  import <%= packageName %>.web.filter.SpaWebFilter;
56
56
  <%_ } _%>
57
+ <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
58
+ import jakarta.servlet.http.HttpServletRequest;
59
+ import jakarta.servlet.http.HttpServletResponse;
60
+ <%_ } _%>
57
61
  <%_ if (authenticationTypeJwt || (authenticationTypeOauth2 && applicationTypeMicroservice)) { _%>
58
62
  import org.springframework.security.config.http.SessionCreationPolicy;
59
63
  <%_ } _%>
@@ -84,6 +88,9 @@ import org.springframework.security.oauth2.core.oidc.user.OidcUserAuthority;
84
88
  <%_ } _%>
85
89
  import java.util.*;
86
90
  <%_ } _%>
91
+ <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
92
+ import java.util.function.Supplier;
93
+ <%_ } _%>
87
94
  <%_ if (authenticationTypeSession) { _%>
88
95
  import org.springframework.http.HttpStatus;
89
96
  import org.springframework.security.web.authentication.HttpStatusEntryPoint;
@@ -94,8 +101,7 @@ import org.springframework.security.web.authentication.RememberMeServices;
94
101
  <%_ } _%>
95
102
  <%_ } _%>
96
103
  <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
97
- import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
98
- import org.springframework.security.web.csrf.CsrfTokenRequestAttributeHandler;
104
+ import org.springframework.security.web.csrf.*;
99
105
  <%_ } _%>
100
106
  <%_ if (authenticationTypeOauth2) { _%>
101
107
  import <%= packageName %>.security.oauth2.JwtGrantedAuthorityConverter;
@@ -104,7 +110,7 @@ import <%= packageName %>.security.oauth2.JwtGrantedAuthorityConverter;
104
110
  import org.springframework.security.oauth2.server.resource.web.BearerTokenAuthenticationEntryPoint;
105
111
  import org.springframework.security.oauth2.server.resource.web.access.BearerTokenAccessDeniedHandler;
106
112
  <%_ } _%>
107
- <%_ if (authenticationTypeOauth2 && applicationTypeMonolith) { _%>
113
+ <%_ if (authenticationTypeOauth2 && !applicationTypeMicroservice) { _%>
108
114
  import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
109
115
  import org.springframework.boot.web.client.RestTemplateBuilder;
110
116
  import <%= packageName %>.security.oauth2.CustomClaimConverter;
@@ -112,6 +118,9 @@ import <%= packageName %>.security.oauth2.CustomClaimConverter;
112
118
  <%_ if(!skipClient) { _%>
113
119
  import org.springframework.security.web.header.writers.ReferrerPolicyHeaderWriter;
114
120
  <%_ } _%>
121
+ <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
122
+ import org.springframework.util.StringUtils;
123
+ <%_ } _%>
115
124
  import org.springframework.security.web.servlet.util.matcher.MvcRequestMatcher;
116
125
  import org.springframework.web.servlet.handler.HandlerMappingIntrospector;
117
126
 
@@ -126,7 +135,7 @@ public class SecurityConfiguration {
126
135
 
127
136
  private final Environment env;
128
137
  <%_ } _%>
129
-
138
+
130
139
  private final JHipsterProperties jHipsterProperties;
131
140
  <%_ if (authenticationTypeSession && generateUserManagement) { _%>
132
141
 
@@ -141,7 +150,7 @@ public class SecurityConfiguration {
141
150
  public SecurityConfiguration(<% if (devDatabaseTypeH2Any) { %>Environment env, <% } %><% if (authenticationTypeSession && generateUserManagement) { %>RememberMeServices rememberMeServices, <% } %> JHipsterProperties jHipsterProperties) {
142
151
  <%_ if (devDatabaseTypeH2Any) { _%>
143
152
  this.env = env;
144
- <%_ } _%>
153
+ <%_ } _%>
145
154
  <%_ if (authenticationTypeSession && generateUserManagement) { _%>
146
155
  this.rememberMeServices = rememberMeServices;
147
156
  <%_ } _%>
@@ -164,8 +173,7 @@ public class SecurityConfiguration {
164
173
  .csrf(csrf -> csrf
165
174
  <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
166
175
  .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
167
- // See https://stackoverflow.com/q/74447118/65681
168
- .csrfTokenRequestHandler(new CsrfTokenRequestAttributeHandler()))
176
+ .csrfTokenRequestHandler(new SpaCsrfTokenRequestHandler()))
169
177
  <%_ } else { _%>
170
178
  .disable())
171
179
  <%_ } _%>
@@ -221,6 +229,18 @@ public class SecurityConfiguration {
221
229
  <%_ } _%>
222
230
  .requestMatchers(mvc.pattern("/api/admin/**")).hasAuthority(AuthoritiesConstants.ADMIN)
223
231
  .requestMatchers(mvc.pattern("/api/**")).authenticated()
232
+ <%_ if (applicationTypeGateway) { _%>
233
+ <%_ if (microfrontend) { _%>
234
+ // microfrontend resources are loaded by webpack without authentication, they need to be public
235
+ .requestMatchers(mvc.pattern("/services/*/*.js")).permitAll()
236
+ .requestMatchers(mvc.pattern("/services/*/*.txt")).permitAll()
237
+ .requestMatchers(mvc.pattern("/services/*/*.json")).permitAll()
238
+ .requestMatchers(mvc.pattern("/services/*/*.js.map")).permitAll()
239
+ <%_ } _%>
240
+ .requestMatchers(mvc.pattern("/services/*/management/health/readiness")).permitAll()
241
+ .requestMatchers(mvc.pattern("/services/*/v3/api-docs")).hasAuthority(AuthoritiesConstants.ADMIN)
242
+ .requestMatchers(mvc.pattern("/services/**")).authenticated()
243
+ <%_ } _%>
224
244
  <%_ if (communicationSpringWebsocket) { _%>
225
245
  .requestMatchers(mvc.pattern("/websocket/**")).authenticated()
226
246
  <%_ } _%>
@@ -267,9 +287,9 @@ public class SecurityConfiguration {
267
287
  .accessDeniedHandler(new BearerTokenAccessDeniedHandler()))
268
288
  .oauth2ResourceServer(oauth2 -> oauth2.jwt(withDefaults()));
269
289
  <%_ } else if (authenticationTypeOauth2) { _%>
270
- <%_ if (applicationTypeMonolith) { _%>
290
+ <%_ if (!applicationTypeMicroservice) { _%>
271
291
  .oauth2Login(oauth2 -> oauth2.loginPage("/").userInfoEndpoint(userInfo -> userInfo.oidcUserService(this.oidcUserService())))
272
- <%_ } else if (applicationTypeMicroservice) { _%>
292
+ <%_ } else { _%>
273
293
  .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
274
294
  <%_ } _%>
275
295
  .oauth2ResourceServer(oauth2 -> oauth2
@@ -352,4 +372,46 @@ public class SecurityConfiguration {
352
372
  return jwtDecoder;
353
373
  }
354
374
  <%_ } _%>
375
+ <%_ if (authenticationUsesCsrf && !applicationTypeMicroservice) { _%>
376
+
377
+ /**
378
+ * Custom CSRF handler to provide BREACH protection.
379
+ *
380
+ * @see <a href="https://docs.spring.io/spring-security/reference/servlet/exploits/csrf.html#csrf-integration-javascript-spa">Spring Security Documentation - Integrating with CSRF Protection</a>
381
+ * @see <a href="https://github.com/jhipster/generator-jhipster/pull/25907">JHipster - use customized SpaCsrfTokenRequestHandler to handle CSRF token</a>
382
+ * @see <a href="https://stackoverflow.com/q/74447118/65681">CSRF protection not working with Spring Security 6</a>
383
+ */
384
+ static final class SpaCsrfTokenRequestHandler extends CsrfTokenRequestAttributeHandler {
385
+ private final CsrfTokenRequestHandler delegate = new XorCsrfTokenRequestAttributeHandler();
386
+
387
+ @Override
388
+ public void handle(HttpServletRequest request, HttpServletResponse response, Supplier<CsrfToken> csrfToken) {
389
+ /*
390
+ * Always use XorCsrfTokenRequestAttributeHandler to provide BREACH protection of
391
+ * the CsrfToken when it is rendered in the response body.
392
+ */
393
+ this.delegate.handle(request, response, csrfToken);
394
+ }
395
+
396
+ @Override
397
+ public String resolveCsrfTokenValue(HttpServletRequest request, CsrfToken csrfToken) {
398
+ /*
399
+ * If the request contains a request header, use CsrfTokenRequestAttributeHandler
400
+ * to resolve the CsrfToken. This applies when a single-page application includes
401
+ * the header value automatically, which was obtained via a cookie containing the
402
+ * raw CsrfToken.
403
+ */
404
+ if (StringUtils.hasText(request.getHeader(csrfToken.getHeaderName()))) {
405
+ return super.resolveCsrfTokenValue(request, csrfToken);
406
+ }
407
+ /*
408
+ * In all other cases (e.g. if the request contains a request parameter), use
409
+ * XorCsrfTokenRequestAttributeHandler to resolve the CsrfToken. This applies
410
+ * when a server-side rendered form includes the _csrf request parameter as a
411
+ * hidden input.
412
+ */
413
+ return this.delegate.resolveCsrfTokenValue(request, csrfToken);
414
+ }
415
+ }
416
+ <%_ } _%>
355
417
  }
@@ -42,10 +42,13 @@ public class SpaWebFilter extends OncePerRequestFilter {
42
42
  <%_ if (devDatabaseTypeH2Any) { _%>
43
43
  !path.startsWith("/h2-console") &&
44
44
  <%_ } _%>
45
- <%_ if (authenticationTypeOauth2 && applicationTypeMonolith) { _%>
45
+ <%_ if (authenticationTypeOauth2 && (applicationTypeGateway || applicationTypeMonolith)) { _%>
46
46
  !path.startsWith("/login") &&
47
47
  !path.startsWith("/oauth2") &&
48
48
  <%_ } _%>
49
+ <%_ if (applicationTypeGateway) { _%>
50
+ !path.startsWith("/services") &&
51
+ <%_ } _%>
49
52
  <%_ if (communicationSpringWebsocket) { _%>
50
53
  !path.startsWith("/websocket") &&
51
54
  <%_ } _%>
@@ -69,7 +69,7 @@ eureka:
69
69
  git-branch: ${git.branch:}
70
70
  context-path: ${server.servlet.context-path:}
71
71
  <%_ } _%>
72
- <%_ if (applicationTypeGateway || (applicationTypeMicroservice && reactive)) { _%>
72
+ <%_ if ((applicationTypeGateway || applicationTypeMicroservice) && reactive) { _%>
73
73
  reactive:
74
74
  feign:
75
75
  circuit:
@@ -99,7 +99,7 @@ management:
99
99
  include:
100
100
  - configprops
101
101
  - env
102
- <% if (applicationTypeGateway && reactive) { -%>
102
+ <% if (applicationTypeGateway) { -%>
103
103
  - gateway
104
104
  <% } -%>
105
105
  - health
@@ -175,7 +175,7 @@ spring:
175
175
  <%_ } _%>
176
176
  application:
177
177
  name: <%= baseName %>
178
- <%_ if (serviceDiscoveryConsul || (applicationTypeGateway && reactive) || messageBrokerKafka) { _%>
178
+ <%_ if (serviceDiscoveryConsul || applicationTypeGateway || messageBrokerKafka) { _%>
179
179
  cloud:
180
180
  <%_ if (serviceDiscoveryConsul) { _%>
181
181
  consul:
@@ -187,8 +187,9 @@ spring:
187
187
  watch:
188
188
  enabled: false
189
189
  <%_ } _%>
190
- <%_ if (applicationTypeGateway && reactive) { _%>
190
+ <%_ if (applicationTypeGateway) { _%>
191
191
  gateway:
192
+ <%_ if (reactive) { _%>
192
193
  default-filters:
193
194
  - <% if (authenticationTypeJwt) { %>JWTRelay<% } else { %>TokenRelay<% } %>
194
195
  discovery:
@@ -207,6 +208,16 @@ spring:
207
208
  httpclient:
208
209
  pool:
209
210
  max-connections: 1000
211
+ <%_ } else { _%>
212
+ mvc:
213
+ routes:
214
+ - id: <%= lowercaseBaseName %>_route
215
+ uri: lb://<%= lowercaseBaseName %>:<%= serverPort %>
216
+ predicates:
217
+ - Path=/services/<%= lowercaseBaseName %>/**
218
+ filters:
219
+ - RewritePath=/services/<%= lowercaseBaseName %>/?(?<segment>.*), /$\{segment}
220
+ <%_ } _%>
210
221
  <%_ } _%>
211
222
  <%_ if (messageBrokerKafka) { _%>
212
223
  function:
@@ -234,7 +245,7 @@ spring:
234
245
  # The commented value for `active` can be replaced with valid Spring profiles to load.
235
246
  # Otherwise, it will be filled in by <%= buildTool %> when building the JAR file
236
247
  # Either way, it can be overridden by `--spring.profiles.active` value passed in the commandline or `-Dspring.profiles.active` set in `JAVA_OPTS`
237
- active: #spring.profiles.active#
248
+ active: '@spring.profiles.active@'
238
249
  group:
239
250
  dev:
240
251
  - dev
@@ -30,7 +30,7 @@ spring:
30
30
  # The commented value for `active` can be replaced with valid Spring profiles to load.
31
31
  # Otherwise, it will be filled in by <%= buildTool %> when building the JAR file
32
32
  # Either way, it can be overridden by `--spring.profiles.active` value passed in the commandline or `-Dspring.profiles.active` set in `JAVA_OPTS`
33
- active: #spring.profiles.active#
33
+ active: '@spring.profiles.active@'
34
34
  cloud:
35
35
  <%_ if (serviceDiscoveryConsul) { _%>
36
36
  consul:
@@ -72,9 +72,9 @@
72
72
  </head>
73
73
  <body>
74
74
  <div class="container">
75
- <h1>Welcome, Java Hipster!</h1>
75
+ <h1>Welcome, <%- hipsterName %>!</h1>
76
76
 
77
- <p>This application is a microservice, which has been generated using <a href="https://www.jhipster.tech/" rel="noopener noreferrer">JHipster</a>.</p>
77
+ <p>This application is a microservice, which has been generated using <a href="<%- hipsterDocumentationLink %>" rel="noopener noreferrer">JHipster</a>.</p>
78
78
 
79
79
  <ul>
80
80
  <%_ if (microfrontend) { %>
@@ -107,15 +107,15 @@
107
107
  </h2>
108
108
 
109
109
  <ul>
110
- <li><a href="https://www.jhipster.tech/" target="_blank" rel="noopener noreferrer">JHipster homepage</a></li>
111
- <li><a href="https://stackoverflow.com/tags/jhipster/info" target="_blank" rel="noopener noreferrer">JHipster on Stack Overflow</a></li>
112
- <li><a href="https://github.com/jhipster/generator-jhipster/issues?state=open" target="_blank" rel="noopener noreferrer">JHipster bug tracker</a></li>
113
- <li><a href="https://gitter.im/jhipster/generator-jhipster" target="_blank" rel="noopener noreferrer">JHipster public chat room</a></li>
114
- <li><a href="https://twitter.com/jhipster" target="_blank" rel="noopener noreferrer">follow @jhipster on Twitter</a></li>
110
+ <li><a href="<%- hipsterDocumentationLink %>" target="_blank" rel="noopener noreferrer">JHipster homepage</a></li>
111
+ <li><a href="<%- hipsterStackoverflowLink %>" target="_blank" rel="noopener noreferrer">JHipster on Stack Overflow</a></li>
112
+ <li><a href="<%- hipsterBugTrackerLink %>" target="_blank" rel="noopener noreferrer">JHipster bug tracker</a></li>
113
+ <li><a href="<%- hipsterChatLink %>" target="_blank" rel="noopener noreferrer">JHipster public chat room</a></li>
114
+ <li><a href="<%- hipsterTwitterLink %>" target="_blank" rel="noopener noreferrer">follow @jhipster on Twitter</a></li>
115
115
  </ul>
116
116
 
117
117
  <p>
118
- <span>If you like JHipster, don't forget to give us a star on</span> <a href="https://github.com/jhipster/generator-jhipster" target="_blank" rel="noopener noreferrer">GitHub</a>!
118
+ <span>If you like JHipster, don't forget to give us a star on</span> <a href="<%- hipsterProjectLink %>" target="_blank" rel="noopener noreferrer">GitHub</a>!
119
119
  </p>
120
120
 
121
121
  </div>
@@ -52,7 +52,6 @@ import <%= packageName %>.config.TestSecurityConfiguration;
52
52
  <%_ if (cacheProviderRedis) { _%>
53
53
  import org.junit.jupiter.api.extension.ExtendWith;
54
54
  <%_ } _%>
55
- import org.springframework.test.annotation.DirtiesContext;
56
55
  import org.springframework.boot.test.context.SpringBootTest;
57
56
 
58
57
  import java.lang.annotation.ElementType;
@@ -88,7 +87,6 @@ import java.lang.annotation.Target;
88
87
  <%_ if (databaseTypeSql) { _%>
89
88
  @EmbeddedSQL
90
89
  <%_ } _%>
91
- @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
92
90
  public @interface IntegrationTest {
93
91
  <%_ if (reactive) { _%>
94
92
  // 5s is Spring's default https://github.com/spring-projects/spring-framework/blob/main/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java#L106
@@ -25,10 +25,12 @@ import org.slf4j.LoggerFactory;
25
25
  import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
26
26
  import org.springframework.beans.factory.support.DefaultSingletonBeanRegistry;
27
27
  import org.springframework.core.annotation.AnnotatedElementUtils;
28
+ import org.springframework.context.ConfigurableApplicationContext;
28
29
 
29
30
  import org.springframework.test.context.ContextConfigurationAttributes;
30
31
  import org.springframework.test.context.ContextCustomizer;
31
32
  import org.springframework.test.context.ContextCustomizerFactory;
33
+ import org.springframework.test.context.MergedContextConfiguration;
32
34
  import org.springframework.beans.factory.support.DefaultListableBeanFactory;
33
35
  import org.springframework.boot.test.util.TestPropertyValues;
34
36
 
@@ -49,56 +51,79 @@ public class TestContainersSpringContextCustomizerFactory implements ContextCust
49
51
  @Override
50
52
  public ContextCustomizer createContextCustomizer(Class<?> testClass, List<ContextConfigurationAttributes> configAttributes) {
51
53
 
52
- return (context, mergedConfig) -> {
53
- ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
54
- TestPropertyValues testValues = TestPropertyValues.empty();
55
- <%_ if (databaseTypeCouchbase || searchEngineCouchbase) { _%>
56
- EmbeddedCouchbase couchbaseAnnotation = AnnotatedElementUtils.findMergedAnnotation(testClass, EmbeddedCouchbase.class);
57
- if (null != couchbaseAnnotation) {
58
- log.debug("detected the EmbeddedCouchbase annotation on class {}", testClass.getName());
59
- log.info("Warming up the Couchbase database");
60
- if (null == couchbaseBean) {
61
- couchbaseBean = beanFactory.createBean(CouchbaseTestContainer.class);
62
- beanFactory.registerSingleton(CouchbaseTestContainer.class.getName(), couchbaseBean);
63
- // ((DefaultListableBeanFactory)beanFactory).registerDisposableBean(CouchbaseTestContainer.class.getName(), couchbaseBean);
64
- }
65
- testValues = testValues.and("spring.couchbase.connection-string=" + couchbaseBean.getCouchbaseContainer().getConnectionString());
66
- testValues = testValues.and("spring.couchbase.username=" + couchbaseBean.getCouchbaseContainer().getUsername());
67
- testValues = testValues.and("spring.couchbase.password=" + couchbaseBean.getCouchbaseContainer().getPassword());
68
- testValues = testValues.and("jhipster.database.couchbase.bucket-name=" + couchbaseBean.getBucketName());
69
- testValues = testValues.and("jhipster.database.couchbase.scope-name=testScope");
70
- }
71
- <%_ } _%>
72
- <%_ if (databaseTypeMongodb) { _%>
73
- EmbeddedMongo mongoAnnotation = AnnotatedElementUtils.findMergedAnnotation(testClass, EmbeddedMongo.class);
74
- if (null != mongoAnnotation) {
75
- log.debug("detected the EmbeddedMongo annotation on class {}", testClass.getName());
76
- log.info("Warming up the mongo database");
77
- if (null == mongoDbBean) {
78
- mongoDbBean = beanFactory.createBean(MongoDbTestContainer.class);
79
- beanFactory.registerSingleton(MongoDbTestContainer.class.getName(), mongoDbBean);
80
- // ((DefaultListableBeanFactory)beanFactory).registerDisposableBean(MongoDbTestContainer.class.getName(), mongoDbBean);
54
+ return new ContextCustomizer() {
55
+ @Override
56
+ public void customizeContext(ConfigurableApplicationContext context,
57
+ MergedContextConfiguration mergedConfig) {
58
+ ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
59
+ TestPropertyValues testValues = TestPropertyValues.empty();
60
+ <%_ if (databaseTypeCouchbase || searchEngineCouchbase) { _%>
61
+ EmbeddedCouchbase couchbaseAnnotation = AnnotatedElementUtils.findMergedAnnotation(testClass, EmbeddedCouchbase.class);
62
+ if (null != couchbaseAnnotation) {
63
+ log.debug("detected the EmbeddedCouchbase annotation on class {}", testClass.getName());
64
+ log.info("Warming up the Couchbase database");
65
+ if (null == couchbaseBean) {
66
+ couchbaseBean = beanFactory.createBean(CouchbaseTestContainer.class);
67
+ beanFactory.registerSingleton(CouchbaseTestContainer.class.getName(), couchbaseBean);
68
+ // ((DefaultListableBeanFactory)beanFactory).registerDisposableBean(CouchbaseTestContainer.class.getName(), couchbaseBean);
81
69
  }
82
- testValues = testValues.and("spring.data.mongodb.uri=" + mongoDbBean.getMongoDBContainer().getReplicaSetUrl());
70
+ testValues = testValues.and("spring.couchbase.connection-string=" + couchbaseBean.getCouchbaseContainer().getConnectionString());
71
+ testValues = testValues.and("spring.couchbase.username=" + couchbaseBean.getCouchbaseContainer().getUsername());
72
+ testValues = testValues.and("spring.couchbase.password=" + couchbaseBean.getCouchbaseContainer().getPassword());
73
+ testValues = testValues.and("jhipster.database.couchbase.bucket-name=" + couchbaseBean.getBucketName());
74
+ testValues = testValues.and("jhipster.database.couchbase.scope-name=testScope");
83
75
  }
84
- <%_ } _%>
85
- <%_ if (searchEngineElasticsearch) { _%>
86
- EmbeddedElasticsearch elasticsearchAnnotation = AnnotatedElementUtils.findMergedAnnotation(testClass, EmbeddedElasticsearch.class);
87
- if (null != elasticsearchAnnotation) {
88
- log.debug("detected the EmbeddedElasticsearch annotation on class {}", testClass.getName());
89
- log.info("Warming up the elastic database");
90
- if (null == elasticsearchBean) {
91
- elasticsearchBean = beanFactory.createBean(ElasticsearchTestContainer.class);
92
- beanFactory.registerSingleton(ElasticsearchTestContainer.class.getName(), elasticsearchBean);
93
- // ((DefaultListableBeanFactory)beanFactory).registerDisposableBean(ElasticsearchTestContainer.class.getName(), elasticsearchBean);
76
+ <%_ } _%>
77
+ <%_ if (databaseTypeMongodb) { _%>
78
+ EmbeddedMongo mongoAnnotation = AnnotatedElementUtils.findMergedAnnotation(testClass, EmbeddedMongo.class);
79
+ if (null != mongoAnnotation) {
80
+ log.debug("detected the EmbeddedMongo annotation on class {}", testClass.getName());
81
+ log.info("Warming up the mongo database");
82
+ if (null == mongoDbBean) {
83
+ mongoDbBean = beanFactory.createBean(MongoDbTestContainer.class);
84
+ beanFactory.registerSingleton(MongoDbTestContainer.class.getName(), mongoDbBean);
85
+ // ((DefaultListableBeanFactory)beanFactory).registerDisposableBean(MongoDbTestContainer.class.getName(), mongoDbBean);
86
+ }
87
+ testValues = testValues.and("spring.data.mongodb.uri=" + mongoDbBean.getMongoDBContainer().getReplicaSetUrl());
88
+ }
89
+ <%_ } _%>
90
+ <%_ if (searchEngineElasticsearch) { _%>
91
+ EmbeddedElasticsearch elasticsearchAnnotation = AnnotatedElementUtils.findMergedAnnotation(testClass, EmbeddedElasticsearch.class);
92
+ if (null != elasticsearchAnnotation) {
93
+ log.debug("detected the EmbeddedElasticsearch annotation on class {}", testClass.getName());
94
+ log.info("Warming up the elastic database");
95
+ if (null == elasticsearchBean) {
96
+ elasticsearchBean = beanFactory.createBean(ElasticsearchTestContainer.class);
97
+ beanFactory.registerSingleton(ElasticsearchTestContainer.class.getName(), elasticsearchBean);
98
+ // ((DefaultListableBeanFactory)beanFactory).registerDisposableBean(ElasticsearchTestContainer.class.getName(), elasticsearchBean);
99
+ }
100
+ testValues =
101
+ testValues.and(
102
+ "spring.elasticsearch.uris=http://" + elasticsearchBean.getElasticsearchContainer().getHttpHostAddress()
103
+ );
94
104
  }
95
- testValues =
96
- testValues.and(
97
- "spring.elasticsearch.uris=http://" + elasticsearchBean.getElasticsearchContainer().getHttpHostAddress()
98
- );
105
+ <%_ } _%>
106
+ testValues.applyTo(context);
107
+ }
108
+
109
+ @Override
110
+ public int hashCode() {
111
+ return
112
+ <%_ if (databaseTypeMongodb) { _%>
113
+ MongoDbTestContainer.class.getName().hashCode() <% if (searchEngineElasticsearch || databaseTypeCouchbase || searchEngineCouchbase) { %> + <% } else { %>;<% } %>
114
+ <%_ } _%>
115
+ <%_ if (searchEngineElasticsearch) { _%>
116
+ ElasticsearchTestContainer.class.getName().hashCode() <% if (databaseTypeCouchbase || searchEngineCouchbase) { %> + <% } else { %>;<% } %>
117
+ <%_ } _%>
118
+ <%_ if (databaseTypeCouchbase || searchEngineCouchbase) { _%>
119
+ CouchbaseTestContainer.class.getName().hashCode();
120
+ <%_ } _%>
121
+ }
122
+
123
+ @Override
124
+ public boolean equals(Object obj) {
125
+ return this.hashCode() == obj.hashCode();
99
126
  }
100
- <%_ } _%>
101
- testValues.applyTo(context);
102
127
  };
103
128
  }
104
129
  }
@@ -5,8 +5,6 @@ import java.lang.annotation.Retention;
5
5
  import java.lang.annotation.RetentionPolicy;
6
6
  import java.lang.annotation.Target;
7
7
 
8
- import org.springframework.test.annotation.DirtiesContext;
9
-
10
8
  import <%= packageName %>.config.SecurityConfiguration;
11
9
  import <%= packageName %>.config.SecurityJwtConfiguration;
12
10
  import <%= packageName %>.config.WebConfigurer;
@@ -72,7 +70,6 @@ import org.springframework.boot.test.context.SpringBootTest;
72
70
  }
73
71
  )
74
72
  <%_ } _%>
75
- @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
76
73
  public @interface AuthenticationIntegrationTest {
77
74
 
78
75
  }
@@ -63,7 +63,7 @@ mongock:
63
63
  spring:
64
64
  application:
65
65
  name: <%= baseName %>
66
- <%_ if (applicationTypeGateway && reactive) { _%>
66
+ <%_ if (applicationTypeGateway) { _%>
67
67
  autoconfigure:
68
68
  exclude:
69
69
  - org.springframework.cloud.gateway.config.GatewayMetricsAutoConfiguration
@@ -197,4 +197,7 @@ export default asWritingTask(function cleanupTask(taskParam) {
197
197
  this.removeFile('gradle/sonar.gradle');
198
198
  }
199
199
  }
200
+ if (this.isJhipsterVersionLessThan('8.4.0')) {
201
+ this.removeFile(`${application.javaPackageSrcDir}config/LocaleConfiguration.java`);
202
+ }
200
203
  });
@@ -1,4 +1,5 @@
1
- import { GENERATOR_SERVER } from '../generator-list.js';
1
+ import { GENERATOR_JAVA, GENERATOR_LIQUIBASE, GENERATOR_SPRING_DATA_RELATIONAL } from '../generator-list.js';
2
+ import { APPLICATION_TYPE_MICROSERVICE } from '../../jdl/index.js';
2
3
  const command = {
3
4
  options: {
4
5
  fakeKeytool: {
@@ -9,6 +10,43 @@ const command = {
9
10
  hide: true,
10
11
  },
11
12
  },
12
- import: [GENERATOR_SERVER],
13
+ configs: {
14
+ feignClient: {
15
+ description: 'Generate a feign client',
16
+ cli: {
17
+ type: Boolean,
18
+ },
19
+ prompt: {
20
+ type: 'confirm',
21
+ message: 'Do you want to generate a feign client?',
22
+ when: currentAnswer => currentAnswer.applicationType === APPLICATION_TYPE_MICROSERVICE &&
23
+ currentAnswer.reactive !== undefined &&
24
+ !currentAnswer.reactive,
25
+ },
26
+ default: false,
27
+ },
28
+ syncUserWithIdp: {
29
+ description: 'Allow relationships with User for oauth2 applications',
30
+ cli: {
31
+ type: Boolean,
32
+ },
33
+ prompt: gen => ({
34
+ type: 'confirm',
35
+ message: 'Do you want to allow relationships with User entity?',
36
+ when: ({ authenticationType }) => (authenticationType ?? gen.jhipsterConfigWithDefaults.authenticationType) === 'oauth2',
37
+ }),
38
+ },
39
+ defaultPackaging: {
40
+ description: 'Default packaging for the application',
41
+ cli: {
42
+ type: String,
43
+ hide: true,
44
+ },
45
+ choices: ['jar', 'war'],
46
+ default: 'jar',
47
+ scope: 'storage',
48
+ },
49
+ },
50
+ import: [GENERATOR_JAVA, GENERATOR_LIQUIBASE, GENERATOR_SPRING_DATA_RELATIONAL],
13
51
  };
14
52
  export default command;
@@ -191,8 +191,8 @@ export function writeFiles() {
191
191
  },
192
192
  async writeServerFiles({ application, entities }) {
193
193
  const rootTemplatesPath = application.reactive
194
- ? ['reactive', '', '../../server/templates/', '../../java/templates/']
195
- : ['', '../../server/templates/', '../../java/templates/'];
194
+ ? ['reactive', '', '../../server/templates/', '../../java/generators/domain/templates/']
195
+ : ['', '../../server/templates/', '../../java/generators/domain/templates/'];
196
196
  for (const entity of entities.filter(entity => !entity.skipServer)) {
197
197
  if (entity.builtInUser) {
198
198
  await this.writeFiles({
@@ -16,7 +16,7 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import { SERVER_MAIN_SRC_DIR, SERVER_MAIN_RES_DIR, SERVER_TEST_SRC_DIR, SERVER_TEST_RES_DIR, GRADLE_BUILD_SRC_MAIN_DIR, } from '../generator-constants.js';
19
+ import { SERVER_MAIN_SRC_DIR, SERVER_MAIN_RES_DIR, SERVER_TEST_SRC_DIR, SERVER_TEST_RES_DIR } from '../generator-constants.js';
20
20
  import { addSectionsCondition, mergeSections } from '../base/support/index.js';
21
21
  import { moveToJavaPackageSrcDir, moveToJavaPackageTestDir, moveToSrcMainResourcesDir } from '../java/support/index.js';
22
22
  const imperativeConfigFiles = {
@@ -226,28 +226,6 @@ const jwtFiles = {
226
226
  },
227
227
  ],
228
228
  };
229
- const gatewayFiles = {
230
- gatewayFiles: [
231
- {
232
- condition: generator => generator.authenticationTypeJwt,
233
- path: `${SERVER_MAIN_SRC_DIR}_package_/`,
234
- renameTo: moveToJavaPackageSrcDir,
235
- templates: ['security/jwt/JWTRelayGatewayFilterFactory.java'],
236
- },
237
- {
238
- condition: generator => generator.serviceDiscoveryAny,
239
- path: `${SERVER_MAIN_SRC_DIR}_package_/`,
240
- renameTo: moveToJavaPackageSrcDir,
241
- templates: ['web/rest/vm/RouteVM.java', 'web/rest/GatewayResource.java', 'web/filter/ModifyServersOpenApiFilter.java'],
242
- },
243
- {
244
- condition: generator => generator.serviceDiscoveryAny,
245
- path: `${SERVER_TEST_SRC_DIR}_package_/`,
246
- renameTo: moveToJavaPackageTestDir,
247
- templates: ['web/filter/ModifyServersOpenApiFilterTest.java'],
248
- },
249
- ],
250
- };
251
229
  const swaggerFiles = {
252
230
  swagger: [
253
231
  {
@@ -270,12 +248,6 @@ const swaggerFiles = {
270
248
  * For any other config an object { file:.., method:.., template:.. } can be used
271
249
  */
272
250
  export const baseServerFiles = {
273
- jib: [
274
- {
275
- path: 'src/main/docker/jib/',
276
- templates: ['entrypoint.sh'],
277
- },
278
- ],
279
251
  readme: [
280
252
  {
281
253
  templates: ['README.md.jhi.spring-boot'],
@@ -289,7 +261,7 @@ export const baseServerFiles = {
289
261
  ],
290
262
  serverBuild: [
291
263
  {
292
- templates: ['checkstyle.xml', '.devcontainer/devcontainer.json', '.devcontainer/Dockerfile'],
264
+ templates: ['.devcontainer/devcontainer.json', '.devcontainer/Dockerfile'],
293
265
  },
294
266
  {
295
267
  condition: generator => generator.buildToolGradle,
@@ -301,19 +273,12 @@ export const baseServerFiles = {
301
273
  'gradle/profile_prod.gradle',
302
274
  'gradle/war.gradle',
303
275
  'gradle/zipkin.gradle',
304
- `${GRADLE_BUILD_SRC_MAIN_DIR}/jhipster.code-quality-conventions.gradle`,
305
- `${GRADLE_BUILD_SRC_MAIN_DIR}/jhipster.docker-conventions.gradle`,
306
276
  ],
307
277
  },
308
278
  {
309
279
  condition: generator => generator.buildToolMaven,
310
280
  templates: ['pom.xml'],
311
281
  },
312
- {
313
- condition: generator => generator.useNpmWrapper,
314
- transform: false,
315
- templates: ['npmw', 'npmw.cmd'],
316
- },
317
282
  ],
318
283
  serverResource: [
319
284
  {
@@ -445,11 +410,6 @@ export const baseServerFiles = {
445
410
  renameTo: moveToJavaPackageSrcDir,
446
411
  templates: ['config/Constants.java'],
447
412
  },
448
- {
449
- path: `${SERVER_MAIN_SRC_DIR}_package_/`,
450
- renameTo: moveToJavaPackageSrcDir,
451
- templates: [data => `config/LocaleConfiguration_${data.imperativeOrReactive}.java`],
452
- },
453
413
  ],
454
414
  serverJavaDomain: [
455
415
  {
@@ -537,4 +497,4 @@ export const baseServerFiles = {
537
497
  },
538
498
  ],
539
499
  };
540
- export const serverFiles = mergeSections(baseServerFiles, addSectionsCondition(jwtFiles, context => context.authenticationTypeJwt), addSectionsCondition(oauth2Files, context => context.authenticationTypeOauth2), addSectionsCondition(gatewayFiles, context => context.applicationTypeGateway), addSectionsCondition(accountFiles, context => context.generateAuthenticationApi), addSectionsCondition(userManagementFiles, context => context.generateUserManagement), addSectionsCondition(imperativeConfigFiles, context => !context.reactive), addSectionsCondition(reactiveConfigFiles, context => context.reactive), addSectionsCondition(swaggerFiles, context => context.enableSwaggerCodegen));
500
+ export const serverFiles = mergeSections(baseServerFiles, addSectionsCondition(jwtFiles, context => context.authenticationTypeJwt), addSectionsCondition(oauth2Files, context => context.authenticationTypeOauth2), addSectionsCondition(accountFiles, context => context.generateAuthenticationApi), addSectionsCondition(userManagementFiles, context => context.generateUserManagement), addSectionsCondition(imperativeConfigFiles, context => !context.reactive), addSectionsCondition(reactiveConfigFiles, context => context.reactive), addSectionsCondition(swaggerFiles, context => context.enableSwaggerCodegen));