generator-jhipster 7.6.0 → 7.7.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 (310) hide show
  1. package/README.md +1 -3
  2. package/cli/commands.js +3 -0
  3. package/cli/environment-builder.js +53 -18
  4. package/cli/import-jdl.js +3 -0
  5. package/cli/index.mjs +20 -0
  6. package/cli/jhipster.js +19 -11
  7. package/cli/program.js +94 -38
  8. package/generators/app/esm.mjs +1 -3
  9. package/generators/app/index.js +1 -16
  10. package/generators/aws/esm.mjs +1 -3
  11. package/generators/azure-app-service/esm.mjs +1 -3
  12. package/generators/azure-spring-cloud/esm.mjs +1 -3
  13. package/generators/base/esm.mjs +1 -3
  14. package/generators/bootstrap/esm.mjs +1 -3
  15. package/generators/bootstrap/index.js +36 -86
  16. package/generators/bootstrap-application/esm.mjs +19 -0
  17. package/generators/bootstrap-application/generator.mjs +353 -0
  18. package/generators/bootstrap-application/index.mjs +19 -0
  19. package/generators/ci-cd/esm.mjs +1 -3
  20. package/generators/ci-cd/prompts.js +1 -1
  21. package/generators/ci-cd/templates/github-actions.yml.ejs +2 -2
  22. package/generators/client/esm.mjs +5 -3
  23. package/generators/client/files-angular.js +9 -0
  24. package/generators/client/files-common.js +8 -7
  25. package/generators/client/files-vue.js +7 -6
  26. package/generators/client/index.js +2 -1
  27. package/generators/client/templates/angular/angular.json.ejs +1 -1
  28. package/generators/client/templates/angular/package.json +25 -22
  29. package/generators/client/templates/angular/package.json.ejs +5 -1
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.html.ejs +1 -1
  31. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.html.ejs +7 -7
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +5 -5
  33. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +3 -3
  34. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.html.ejs +10 -10
  35. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.html.ejs +8 -8
  36. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +2 -2
  37. package/generators/client/templates/angular/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +5 -5
  38. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.html.ejs +1 -1
  39. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +2 -2
  40. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.ts.ejs +2 -2
  41. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +6 -6
  42. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.html.ejs +51 -49
  43. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +16 -16
  44. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +32 -32
  45. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +4 -4
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +18 -18
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +12 -12
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.ts.ejs +4 -4
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +4 -4
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +8 -8
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +1 -1
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +1 -1
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +4 -4
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +5 -5
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +11 -11
  56. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +4 -2
  57. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.scss.ejs +0 -6
  58. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +0 -6
  59. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.html.ejs +3 -3
  60. package/generators/client/templates/angular/src/main/webapp/content/scss/_bootstrap-variables.scss.ejs +5 -5
  61. package/generators/client/templates/angular/src/main/webapp/content/scss/global.scss.ejs +29 -0
  62. package/generators/client/templates/angular/src/main/webapp/content/scss/vendor.scss.ejs +0 -4
  63. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +19 -0
  64. package/generators/client/templates/common/package.json +2 -2
  65. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +1 -7
  66. package/generators/client/templates/react/package.json +33 -33
  67. package/generators/client/templates/vue/package.json +23 -23
  68. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +3 -3
  69. package/generators/client/templates/vue/src/main/webapp/app/entities/user/user.service.ts.ejs +0 -0
  70. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +29 -1
  71. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +2 -2
  72. package/generators/client/templates/vue/src/main/webapp/app/shared/config/config.ts.ejs +0 -4
  73. package/generators/cloudfoundry/esm.mjs +1 -3
  74. package/generators/common/esm.mjs +2 -3
  75. package/generators/common/files.js +1 -2
  76. package/generators/common/index.js +6 -0
  77. package/generators/common/templates/.husky/{pre-commit → pre-commit.ejs} +4 -0
  78. package/generators/common/templates/README.md.jhi.ejs +3 -1
  79. package/generators/common/templates/package.json +3 -3
  80. package/generators/common/templates/sonar-project.properties.ejs +1 -1
  81. package/generators/cypress/esm.mjs +2 -3
  82. package/generators/cypress/files.js +2 -1
  83. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/settings-page.spec.ts.ejs +18 -14
  84. package/generators/database-changelog/esm.mjs +1 -3
  85. package/generators/database-changelog/index.js +1 -1
  86. package/generators/database-changelog-liquibase/esm.mjs +2 -3
  87. package/generators/docker-compose/esm.mjs +1 -3
  88. package/generators/entities/esm.mjs +1 -3
  89. package/generators/entities/index.js +2 -2
  90. package/generators/entities-client/esm.mjs +1 -3
  91. package/generators/entity/esm.mjs +1 -3
  92. package/generators/entity/index.js +11 -15
  93. package/generators/entity/prompts.js +4 -1
  94. package/generators/entity-client/esm.mjs +2 -3
  95. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.html.ejs +1 -1
  96. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +2 -2
  97. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +20 -21
  98. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +14 -16
  99. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +2 -2
  100. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +1 -1
  101. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-reducer.spec.ts.ejs +1 -1
  102. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +1 -1
  103. package/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity-update-page-object.ts.ejs +1 -1
  104. package/generators/entity-client/templates/vue/src/test/javascript/e2e/entities/entity-update-page-object.ts.ejs +1 -1
  105. package/generators/entity-client/templates/vue/src/test/javascript/e2e/entities/entity.spec.ts.ejs +1 -1
  106. package/generators/entity-i18n/esm.mjs +2 -3
  107. package/generators/entity-server/esm.mjs +2 -3
  108. package/generators/entity-server/files-couchbase.js +23 -2
  109. package/generators/entity-server/files.js +16 -2
  110. package/generators/entity-server/index.js +8 -1
  111. package/generators/entity-server/templates/couchbase/src/main/java/package/domain/Entity.java.jhi.spring_data_couchbase.ejs +11 -13
  112. package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +23 -59
  113. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.fts.ejs +5 -6
  114. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.n1ql.ejs +5 -0
  115. package/generators/entity-server/templates/partials/it_patch_update.partial.java.ejs +2 -2
  116. package/generators/entity-server/templates/partials/save_template.ejs +1 -1
  117. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +1 -1
  118. package/generators/entity-server/templates/src/main/java/package/common/inject_template.ejs +4 -4
  119. package/generators/entity-server/templates/src/main/java/package/common/patch_template.ejs +3 -3
  120. package/generators/entity-server/templates/src/main/java/package/common/search_stream_template.ejs +1 -1
  121. package/generators/entity-server/templates/src/main/java/package/common/search_template.ejs +1 -1
  122. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +2 -2
  123. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +31 -18
  124. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +3 -3
  125. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationships.java.ejs +37 -0
  126. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationshipsImpl.java.ejs +90 -0
  127. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +2 -2
  128. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +1 -1
  129. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +3 -5
  130. package/generators/entity-server/templates/src/main/java/package/repository/search/{SortToFieldSortBuilderConverter.java.ejs → SortToSortBuilderListConverter.java.ejs} +4 -3
  131. package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +8 -6
  132. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +1 -1
  133. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +6 -6
  134. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +1 -1
  135. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +5 -5
  136. package/generators/export-jdl/esm.mjs +1 -3
  137. package/generators/gae/esm.mjs +1 -3
  138. package/generators/generate-blueprint/constants.mjs +146 -0
  139. package/generators/generate-blueprint/esm.mjs +19 -0
  140. package/generators/generate-blueprint/files.mjs +81 -0
  141. package/generators/generate-blueprint/generator.mjs +363 -0
  142. package/generators/generate-blueprint/index.mjs +20 -0
  143. package/generators/generate-blueprint/templates/.eslintrc.json.ejs +41 -0
  144. package/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +32 -0
  145. package/generators/generate-blueprint/templates/.mocharc.cjs.ejs +29 -0
  146. package/generators/{server/templates/couchbase/src/main/java/package/config/couchbase/package-info.java.ejs → generate-blueprint/templates/.prettierignore.jhi.blueprint.ejs} +4 -7
  147. package/generators/generate-blueprint/templates/README.md.ejs +75 -0
  148. package/generators/generate-blueprint/templates/cli/cli.mjs.ejs +35 -0
  149. package/generators/generate-blueprint/templates/cli/commands.cjs.ejs +25 -0
  150. package/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +98 -0
  151. package/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +42 -0
  152. package/generators/generate-blueprint/templates/generators/generator/index.mjs.ejs +19 -0
  153. package/generators/generate-blueprint/templates/generators/generator/templates/template-file.ejs +0 -0
  154. package/generators/generate-blueprint/templates/test/utils.mjs.ejs +17 -0
  155. package/generators/generator-base-blueprint.js +29 -0
  156. package/generators/generator-base-docker.js +1 -0
  157. package/generators/generator-base-entities.cjs +368 -0
  158. package/generators/generator-base.js +128 -23
  159. package/generators/generator-constants.js +18 -16
  160. package/generators/generator-list.js +2 -0
  161. package/generators/gradle/esm.mjs +19 -0
  162. package/generators/heroku/esm.mjs +1 -3
  163. package/generators/info/esm.mjs +1 -3
  164. package/generators/init/esm.mjs +19 -0
  165. package/generators/init/files.cjs +9 -3
  166. package/generators/init/index.cjs +5 -0
  167. package/generators/init/templates/.gitignore.jhi.ejs +5 -0
  168. package/generators/init/templates/{.lintstagedrc.js.ejs → .lintstagedrc.cjs.ejs} +0 -0
  169. package/generators/java/esm.mjs +19 -0
  170. package/generators/java/index.cjs +58 -2
  171. package/generators/kubernetes/esm.mjs +1 -3
  172. package/generators/kubernetes-helm/esm.mjs +1 -3
  173. package/generators/kubernetes-knative/esm.mjs +1 -3
  174. package/generators/languages/esm.mjs +2 -3
  175. package/generators/languages/templates/src/test/resources/i18n/messages_fr.properties.ejs +4 -1
  176. package/generators/maven/esm.mjs +19 -0
  177. package/generators/openapi-client/esm.mjs +1 -3
  178. package/generators/openapi-client/index.js +11 -4
  179. package/generators/openshift/esm.mjs +1 -3
  180. package/generators/page/esm.mjs +1 -3
  181. package/generators/project-name/esm.mjs +19 -0
  182. package/generators/server/esm.mjs +2 -2
  183. package/generators/server/files-couchbase.js +28 -31
  184. package/generators/server/files.js +14 -1
  185. package/generators/server/index.js +13 -13
  186. package/generators/server/needle-api/needle-server-maven.js +1 -1
  187. package/generators/server/templates/couchbase/src/main/java/package/repository/CouchbaseSearchRepository.java.ejs +91 -0
  188. package/generators/server/templates/couchbase/src/main/java/package/repository/JHipsterCouchbaseRepository.java.ejs +43 -64
  189. package/generators/server/templates/couchbase/src/main/java/package/repository/PersistentTokenRepository_couchbase.java.ejs +2 -2
  190. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_ADMIN.json.ejs +3 -0
  191. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_USER.json.ejs +3 -0
  192. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/{user__admin.json.ejs → user/admin.json.ejs} +2 -2
  193. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/{user__user.json.ejs → user/user.json.ejs} +2 -2
  194. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.2__create_indexes.n1ql.ejs +34 -0
  195. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0__create_collections.n1ql.ejs +8 -0
  196. package/generators/server/templates/couchbase/src/test/java/package/CouchbaseTestContainerExtension.java.ejs +4 -3
  197. package/generators/server/templates/couchbase/src/test/java/package/repository/{JHipsterCouchbaseRepositoryTest.java.ejs → CouchbaseSearchRepositoryTest.java.ejs} +2 -2
  198. package/generators/server/templates/gradle/profile_prod.gradle.ejs +4 -0
  199. package/generators/server/templates/gradle.properties.ejs +6 -6
  200. package/generators/server/templates/npmw +14 -5
  201. package/generators/server/templates/pom.xml.ejs +47 -42
  202. package/generators/server/templates/src/main/docker/app.yml.ejs +4 -2
  203. package/generators/server/templates/src/main/docker/zipkin.yml.ejs +25 -0
  204. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_couchbase.java.ejs +26 -16
  205. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration_reactive.java.ejs +1 -1
  206. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +2 -1
  207. package/generators/server/templates/src/main/java/package/domain/Authority.java.ejs +11 -0
  208. package/generators/server/templates/src/main/java/package/domain/PersistentToken.java.ejs +6 -6
  209. package/generators/server/templates/src/main/java/package/domain/User.java.ejs +9 -7
  210. package/generators/server/templates/src/main/java/package/repository/AuthorityRepository.java.ejs +1 -11
  211. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +48 -72
  212. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +1 -1
  213. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +8 -6
  214. package/generators/server/templates/src/main/java/package/web/filter/OAuth2ReactiveRefreshTokensWebFilter.java.ejs +0 -1
  215. package/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +1 -1
  216. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource_reactive.java.ejs +1 -1
  217. package/generators/server/templates/src/main/java/package/web/rest/PublicUserResource.java.ejs +2 -2
  218. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +8 -0
  219. package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +6 -0
  220. package/generators/server/templates/src/main/resources/config/application.yml.ejs +2 -0
  221. package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +3 -1
  222. package/generators/server/templates/src/test/java/package/TechnicalStructureTest.java.ejs +21 -15
  223. package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +2 -0
  224. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/StepDefs.java.ejs +8 -0
  225. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/UserStepDefs.java.ejs +17 -3
  226. package/generators/server/templates/src/test/java/package/security/SecurityUtilsUnitTest_reactive.java.ejs +1 -1
  227. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +1 -1
  228. package/generators/server/templates/src/test/java/package/service/mapper/UserMapperTest.java.ejs +1 -1
  229. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +13 -6
  230. package/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +1 -6
  231. package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +40 -42
  232. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -1
  233. package/generators/spring-boot/esm.mjs +19 -0
  234. package/generators/spring-controller/esm.mjs +1 -3
  235. package/generators/spring-service/esm.mjs +1 -3
  236. package/generators/upgrade/esm.mjs +1 -3
  237. package/generators/upgrade-config/esm.mjs +1 -3
  238. package/generators/workspaces/esm.mjs +1 -3
  239. package/lib/constants/logo.cjs +30 -0
  240. package/lib/constants/priorities.cjs +216 -2
  241. package/lib/constants/priorities.mjs +29 -1
  242. package/lib/index.mjs +6 -0
  243. package/lib/support/mixin.cjs +5 -1
  244. package/lib/support/shared-data.cjs +34 -1
  245. package/package.json +27 -23
  246. package/utils/entity.js +19 -2
  247. package/utils/faker.js +3 -3
  248. package/utils/field.js +61 -49
  249. package/utils/relationship.js +5 -3
  250. package/utils/user.js +109 -0
  251. package/generators/app/generator.spec.mjs +0 -47
  252. package/generators/aws/generator.spec.mjs +0 -47
  253. package/generators/azure-app-service/generator.spec.mjs +0 -47
  254. package/generators/azure-spring-cloud/generator.spec.mjs +0 -47
  255. package/generators/base/generator.spec.mjs +0 -44
  256. package/generators/bootstrap/generator.spec.mjs +0 -44
  257. package/generators/ci-cd/generator.spec.mjs +0 -47
  258. package/generators/client/__workflow/devserver-angular.json +0 -13
  259. package/generators/client/__workflow/devserver-react.json +0 -13
  260. package/generators/client/__workflow/devserver-vue.json +0 -13
  261. package/generators/client/generator.spec.mjs +0 -47
  262. package/generators/cloudfoundry/generator.spec.mjs +0 -47
  263. package/generators/common/generator.spec.mjs +0 -47
  264. package/generators/cypress/generator.spec.mjs +0 -47
  265. package/generators/database-changelog/generator.spec.mjs +0 -47
  266. package/generators/database-changelog-liquibase/generator.spec.mjs +0 -47
  267. package/generators/docker-compose/generator.spec.mjs +0 -44
  268. package/generators/entities/generator.spec.mjs +0 -47
  269. package/generators/entities-client/generator.spec.mjs +0 -47
  270. package/generators/entity/generator.spec.mjs +0 -47
  271. package/generators/entity-client/generator.spec.mjs +0 -47
  272. package/generators/entity-i18n/generator.spec.mjs +0 -47
  273. package/generators/entity-server/generator.spec.mjs +0 -47
  274. package/generators/export-jdl/generator.spec.mjs +0 -44
  275. package/generators/gae/generator.spec.mjs +0 -47
  276. package/generators/gradle/__snapshots__/generator.spec.cjs.snap +0 -59
  277. package/generators/gradle/generator.spec.cjs +0 -71
  278. package/generators/heroku/generator.spec.mjs +0 -47
  279. package/generators/info/generator.spec.mjs +0 -44
  280. package/generators/init/__snapshots__/generator.spec.cjs.snap +0 -65
  281. package/generators/init/generator.spec.cjs +0 -112
  282. package/generators/java/__snapshots__/generator.spec.cjs.snap +0 -118
  283. package/generators/java/generator.spec.cjs +0 -87
  284. package/generators/kubernetes/generator.spec.mjs +0 -44
  285. package/generators/kubernetes-helm/generator.spec.mjs +0 -44
  286. package/generators/kubernetes-knative/generator.spec.mjs +0 -44
  287. package/generators/languages/generator.spec.mjs +0 -47
  288. package/generators/maven/__snapshots__/generator.spec.cjs.snap +0 -53
  289. package/generators/maven/generator.spec.cjs +0 -78
  290. package/generators/openapi-client/generator.spec.mjs +0 -47
  291. package/generators/openshift/generator.spec.mjs +0 -44
  292. package/generators/page/generator.spec.mjs +0 -47
  293. package/generators/project-name/generator.spec.cjs +0 -43
  294. package/generators/server/__snapshots__/generator.spec.mjs.snap +0 -1931
  295. package/generators/server/generator.spec.mjs +0 -52
  296. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactory.java.ejs +0 -83
  297. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactoryBean.java.ejs +0 -40
  298. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryQuery.java.ejs +0 -44
  299. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlQueryCreator.java.ejs +0 -162
  300. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlRepositoryQueryExecutor.java.ejs +0 -104
  301. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_ADMIN.json.ejs +0 -3
  302. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_USER.json.ejs +0 -3
  303. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0__create_indexes.n1ql.ejs +0 -19
  304. package/generators/spring-boot/__snapshots__/generator.spec.cjs.snap +0 -80
  305. package/generators/spring-boot/generator.spec.cjs +0 -64
  306. package/generators/spring-controller/generator.spec.mjs +0 -47
  307. package/generators/spring-service/generator.spec.mjs +0 -47
  308. package/generators/upgrade/generator.spec.mjs +0 -44
  309. package/generators/upgrade-config/generator.spec.mjs +0 -44
  310. package/generators/workspaces/generator.spec.mjs +0 -47
@@ -62,10 +62,7 @@ import org.apache.commons.beanutils.BeanComparator;
62
62
  import org.springframework.cache.annotation.Cacheable;
63
63
  <%_ } _%>
64
64
  <%_ if (databaseTypeSql || databaseTypeCouchbase || databaseTypeMongodb || databaseTypeNeo4j) { _%>
65
- <%_ if (!reactive) { _%>
66
- import org.springframework.data.domain.Page;
67
- <%_ } _%>
68
- import org.springframework.data.domain.Pageable;
65
+ import org.springframework.data.domain.*;
69
66
  <%_ } _%>
70
67
  <%_ if (databaseTypeSql) { _%>
71
68
  <%_ if (reactive) { _%>
@@ -93,12 +90,7 @@ import org.springframework.data.mongodb.repository.<% if (reactive) { %>Reactive
93
90
  import org.springframework.data.neo4j.repository.<% if (reactive) { %>Reactive<% } %>Neo4jRepository;
94
91
  <%_ } _%>
95
92
  <%_ if (databaseTypeCouchbase) { _%>
96
- import com.couchbase.client.java.query.QueryScanConsistency;
97
93
  import org.springframework.data.couchbase.repository.Query;
98
- import org.springframework.data.couchbase.repository.ScanConsistency;
99
- <%_ if (!reactive) { _%>
100
- import org.springframework.data.domain.PageImpl;
101
- <%_ } _%>
102
94
  <%_ } _%>
103
95
  <%_ if (reactive && databaseTypeCassandra) { _%>
104
96
  import org.springframework.data.cassandra.ReactiveResultSet;
@@ -157,13 +149,6 @@ import java.util.UUID;
157
149
  <%_ if (!databaseTypeCassandra && !(databaseTypeSql && reactive) && !authenticationTypeOauth2) { _%>
158
150
  import java.time.Instant;
159
151
  <%_ } _%>
160
- <% if (databaseTypeCouchbase) { %>
161
- import static <%= packageName %>.config.Constants.ID_DELIMITER;
162
- <% } %>
163
- <%_ if (searchEngineCouchbase) { _%>
164
- import static <%= packageName %>.repository.JHipsterCouchbaseRepository.pageableStatement;
165
- import static <%= packageName %>.repository.JHipsterCouchbaseRepository.searchQuery;
166
- <%_ } _%>
167
152
  /**
168
153
  * Spring Data <% if (databaseTypeSql && !reactive) { %>JPA<% } else if (databaseTypeSql && reactive) { %>R2DBC<% } else if (databaseTypeMongodb) { %>MongoDB<% } else if (databaseTypeCouchbase) { %>Couchbase<% } else if (databaseTypeCassandra) { %>Cassandra<% } else if (databaseTypeNeo4j) { %>Neo4j<% } %> repository for the {@link <%= asEntity('User') %>} entity.
169
154
  */
@@ -174,37 +159,45 @@ import static <%= packageName %>.repository.JHipsterCouchbaseRepository.searchQu
174
159
  _%>
175
160
  <%_ if ((databaseTypeSql && !reactive) || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
176
161
  @Repository
177
- public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepository<<%= asEntity('User') %>, <%= user.primaryKey.type %>><% } %><% if (reactive && !databaseTypeCouchbase) { %>Reactive<% } %><% if (databaseTypeMongodb) { %>MongoRepository<<%= asEntity('User') %>, String><% } %><% if (databaseTypeNeo4j) { %>Neo4jRepository<<%= asEntity('User') %>, String><% } %><% if (databaseTypeCouchbase) { %>JHipsterCouchbaseRepository<<%= asEntity('User') %>, String><% } %> {
162
+ public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepository<<%= asEntity('User') %>, <%= user.primaryKey.type %>><% } %><% if (reactive && !databaseTypeCouchbase) { %>Reactive<% } %><% if (databaseTypeMongodb) { %>MongoRepository<<%= asEntity('User') %>, String><% } %><% if (databaseTypeNeo4j) { %>Neo4jRepository<<%= asEntity('User') %>, String><% } %><% if (databaseTypeCouchbase) { %>JHipsterCouchbaseRepository<<%= asEntity('User') %>, String><% } %><% if (searchEngineCouchbase) { %>, CouchbaseSearchRepository<<%= asEntity('User') %>, String><% } %> {
178
163
  <%_ if (cacheManagerIsAvailable) { _%>
179
164
 
180
165
  String USERS_BY_LOGIN_CACHE = "usersByLogin";
181
166
 
182
167
  String USERS_BY_EMAIL_CACHE = "usersByEmail";
183
168
  <%_ } _%>
184
- <%_ if (databaseTypeCouchbase) { _%>
185
- // @ScanConsistency is to fix index issues with Spring Data Couchbase
186
- // https://github.com/spring-projects/spring-data-couchbase/issues/897
187
- <%_ } _%>
188
169
  <%_ if (!authenticationTypeOauth2) { _%>
170
+ <% if (databaseTypeCouchbase) { %>default <% } %><%= optionalOrMono %><<%= asEntity('User') %>> findOneByActivationKey(String activationKey)<% if (!databaseTypeCouchbase) { %>;<% } else { %> {
171
+ return findIdByActivationKey(activationKey)
172
+ .map(User::getId)
173
+ .flatMap(this::findById);
174
+ }
189
175
 
190
- <%_ if (databaseTypeCouchbase) { _%>
191
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
176
+ @Query(FIND_IDS_QUERY + " AND activationKey = $1")
177
+ <%= optionalOrMono %><User> findIdByActivationKey(String activationKey);
192
178
  <%_ } _%>
193
- <%= optionalOrMono %><<%= asEntity('User') %>> findOneByActivationKey(String activationKey);
194
179
  <%_ } _%>
195
180
  <%_ if (!authenticationTypeOauth2) { _%>
196
181
 
197
- <%_ if (databaseTypeCouchbase) { _%>
198
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
182
+ <% if (databaseTypeCouchbase) { %>default <% } %><%= listOrFlux %><<%= asEntity('User') %>> findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(Instant dateTime)<% if (!databaseTypeCouchbase) { %>;<% } else { %> {
183
+ return findAllById(toIds(findAllIdsByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(dateTime)));
184
+ }
185
+
186
+ @Query(FIND_IDS_QUERY + " AND activated = false AND activationKey IS NOT NULL AND createdDate < $1")
187
+ <%= listOrFlux %><User> findAllIdsByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(Instant dateTime);
199
188
  <%_ } _%>
200
- <%= listOrFlux %><<%= asEntity('User') %>> findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(Instant dateTime);
201
189
  <%_ } _%>
202
190
 
203
191
  <%_ if (!authenticationTypeOauth2) { _%>
204
- <%_ if (databaseTypeCouchbase) { _%>
205
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
192
+ <% if (databaseTypeCouchbase) { %>default <% } %><%= optionalOrMono %><<%= asEntity('User') %>> findOneByResetKey(String resetKey)<% if (!databaseTypeCouchbase) { %>;<% } else { %> {
193
+ return findIdByResetKey(resetKey)
194
+ .map(User::getId)
195
+ .flatMap(this::findById);
196
+ }
197
+
198
+ @Query(FIND_IDS_QUERY + " AND resetKey = $1")
199
+ <%= optionalOrMono %><User> findIdByResetKey(String resetKey);
206
200
  <%_ } _%>
207
- <%= optionalOrMono %><<%= asEntity('User') %>> findOneByResetKey(String resetKey);
208
201
  <%_ } _%>
209
202
 
210
203
  <%_ if (!authenticationTypeOauth2) { _%>
@@ -213,20 +206,23 @@ public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepositor
213
206
  @Cacheable(cacheNames = USERS_BY_EMAIL_CACHE)
214
207
  <%_ } _%>
215
208
  <%_ } _%>
216
- <%_ if (databaseTypeCouchbase) { _%>
217
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
218
- @Query("#{#n1ql.selectEntity} WHERE LOWER(email) = LOWER($1) AND #{#n1ql.filter}")
209
+ <% if (databaseTypeCouchbase) { %>default <% } %><%= optionalOrMono %><<%= asEntity('User') %>> findOneByEmailIgnoreCase(String email)<% if (!databaseTypeCouchbase) { %>;<% } else { %> {
210
+ return findIdByEmailIgnoreCase(email)
211
+ .map(User::getId)
212
+ .flatMap(this::findById);
213
+ }
214
+
215
+ @Query(FIND_IDS_QUERY + " AND LOWER(email) = LOWER($1)")
216
+ <%= optionalOrMono %><User> findIdByEmailIgnoreCase(String email);
219
217
  <%_ } _%>
220
- <%= optionalOrMono %><<%= asEntity('User') %>> findOneByEmailIgnoreCase(String email);
221
218
 
222
219
  <%_ } _%>
223
220
  <%_ if (databaseTypeCouchbase) { _%>
224
221
  <%_ if (cacheManagerIsAvailable) { _%>
225
222
  @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
226
223
  <%_ } _%>
227
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
228
224
  default <%= optionalOrMono %><<%= asEntity('User') %>> findOneByLogin(String login) {
229
- return findById(<%= asEntity('User') %>.PREFIX + ID_DELIMITER + login);
225
+ return findById(login);
230
226
  }
231
227
  <%_ } else if (databaseTypeMongodb || databaseTypeNeo4j) { _%>
232
228
  <%_ if (cacheManagerIsAvailable) { _%>
@@ -260,55 +256,35 @@ public interface UserRepository extends <% if (databaseTypeSql) { %>JpaRepositor
260
256
  <%_ } _%>
261
257
 
262
258
  <% if (reactive) { %>
263
- <%_ if (databaseTypeCouchbase) { _%>
264
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
265
- <%_ } _%>
259
+ <%_ if (!databaseTypeCouchbase) { _%>
266
260
  Flux<<%= asEntity('User') %>>findAllByIdNotNull(Pageable pageable);
267
-
268
- <%_ if (databaseTypeCouchbase) { _%>
269
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
270
261
  <%_ } _%>
271
- Flux<<%= asEntity('User') %>>findAllBy<% if (!databaseTypeCouchbase) { %>IdNotNullAnd<% } %>ActivatedIsTrue(Pageable pageable);
272
262
 
273
263
  <%_ if (databaseTypeCouchbase) { _%>
274
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
264
+ default Flux<User> findAllByActivatedIsTrue(Pageable pageable) {
265
+ return findAllById(toIds(findAllIdsByActivatedIsTrue(pageable)));
266
+ }
267
+
268
+ @Query(FIND_IDS_QUERY + " AND activated = true")
269
+ Flux<User> findAllIdsByActivatedIsTrue(Pageable pageable);
270
+ <%_ } else { _%>
271
+ Flux<<%= asEntity('User') %>>findAllByIdNotNullAndActivatedIsTrue(Pageable pageable);
275
272
  <%_ } _%>
273
+
276
274
  Mono<Long> count();
277
275
  <% } else { %>
278
276
  <%_ if (databaseTypeCouchbase) { _%>
279
- default Page<<%= asEntity('User') %>> findAllByActivatedIsTrue(Pageable pageable) {
280
- return new PageImpl<>(findAllByActivatedIsTrue(JHipsterCouchbaseRepository.pageableStatement(pageable)), pageable, countAllByActivatedIsTrue());
277
+ default Page<User> findAllByActivatedIsTrue(Pageable pageable) {
278
+ Page<User> page = findAllIdsByActivatedIsTrue(pageable);
279
+ return new PageImpl<>(findAllById(toIds(page.getContent())), pageable, page.getTotalElements());
281
280
  }
281
+
282
+ @Query(FIND_IDS_QUERY + " AND activated = true")
283
+ Page<User> findAllIdsByActivatedIsTrue(Pageable pageable);
282
284
  <%_ } else { _%>
283
285
  Page<<%= asEntity('User') %>> findAllByIdNotNullAndActivatedIsTrue(Pageable pageable);
284
286
  <%_ } _%>
285
287
  <% } %>
286
-
287
- <%_ if (databaseTypeCouchbase && !reactive) { _%>
288
- @Query("#{#n1ql.selectEntity} WHERE #{#n1ql.filter} AND activated = true #{[0]}")
289
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
290
- List<<%= asEntity('User') %>> findAllByActivatedIsTrue(String pageableStatement);
291
-
292
- @Query("SELECT COUNT(*) as count FROM #{#n1ql.bucket} WHERE #{#n1ql.filter} AND activated = true")
293
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
294
- Long countAllByActivatedIsTrue();
295
- <%_ } _%>
296
-
297
- <%_ if (searchEngineCouchbase) { _%>
298
- @Query("#{#n1ql.selectEntity} WHERE #{#n1ql.filter} AND SEARCH(#{n1ql.bucket}, #{[0]) #{[1]}")
299
- <%= listOrFlux %><User> search(String queryString, String pageableStatement);
300
-
301
- default <%= listOrFlux %><User> search(String queryString) {
302
- return search(searchQuery(queryString).toString(), "");
303
- }
304
-
305
- default <%= pageOrFlux %><User> search(String queryString, Pageable pageable) {
306
- return
307
- <% if (!reactive) { %>new PageImpl<>(<% } %>
308
- search(searchQuery(queryString).toString(), pageableStatement(pageable))
309
- <% if (!reactive) { %>)<% } %>;
310
- }
311
- <%_ } _%>
312
288
  }
313
289
  <%_ } else if (databaseTypeSql && reactive) { _%>
314
290
  @Repository
@@ -1,5 +1,5 @@
1
1
  <%#
2
- Copyright 2013-2020 the original author or authors from the JHipster project.
2
+ Copyright 2013-2022 the original author or authors from the JHipster project.
3
3
 
4
4
  This file is part of the JHipster project, see https://jhipster.github.io/
5
5
  for more information.
@@ -136,7 +136,7 @@ public class UserService {
136
136
  private final CacheManager cacheManager;
137
137
  <%_ } _%>
138
138
 
139
- public UserService(UserRepository userRepository<% if (!authenticationTypeOauth2) { %>, PasswordEncoder passwordEncoder<% } %><% if (searchEngineElasticsearch) { %>, UserSearchRepository userSearchRepository<% } %><% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { %><% if (authenticationTypeSession && !reactive) { %>, PersistentTokenRepository persistentTokenRepository<% } %>, AuthorityRepository authorityRepository<% } %><% if (cacheManagerIsAvailable) { %>, CacheManager cacheManager<% } %>) {
139
+ public UserService(UserRepository userRepository<% if (!authenticationTypeOauth2) { %>, PasswordEncoder passwordEncoder<% } %><% if (searchEngineElasticsearch) { %>, UserSearchRepository userSearchRepository<% } %><% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { %><% if (authenticationTypeSession && !reactive) { %>, PersistentTokenRepository persistentTokenRepository<% } %>, AuthorityRepository authorityRepository<% } %><% if (cacheManagerIsAvailable) { %>, CacheManager cacheManager<% } %>) {
140
140
  this.userRepository = userRepository;
141
141
  <%_ if (!authenticationTypeOauth2) { _%>
142
142
  this.passwordEncoder = passwordEncoder;
@@ -145,7 +145,7 @@ public class UserService {
145
145
  this.userSearchRepository = userSearchRepository;
146
146
  <%_ } _%>
147
147
  <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
148
- <%_ if (authenticationTypeSession && !reactive) { _%>
148
+ <%_ if (authenticationTypeSession && !reactive) { _%>
149
149
  this.persistentTokenRepository = persistentTokenRepository;
150
150
  <%_ } _%>
151
151
  this.authorityRepository = authorityRepository;
@@ -402,8 +402,10 @@ public class UserService {
402
402
  @Transactional
403
403
  <%_ } _%>
404
404
  public <% if (reactive) { %>Mono<<%= asEntity('User') %>><% } else { %><%= asEntity('User') %><% } %> createUser(<%= asDto('AdminUser') %> userDTO) {
405
- <%= asEntity('User') %> user = new <%= asEntity('User') %>();<% if (databaseTypeCassandra) { %>
406
- user.setId(UUID.randomUUID().toString());<% } %>
405
+ <%= asEntity('User') %> user = new <%= asEntity('User') %>();
406
+ <%_ if (databaseTypeCassandra) { _%>
407
+ user.setId(UUID.randomUUID().toString());
408
+ <%_ } _%>
407
409
  user.setLogin(userDTO.getLogin().toLowerCase());
408
410
  user.setFirstName(userDTO.getFirstName());
409
411
  user.setLastName(userDTO.getLastName());
@@ -598,7 +600,7 @@ public class UserService {
598
600
  });
599
601
  }
600
602
  <%_ } _%>
601
- <%_ } /* authenticationType !== 'oauth2'*/ _%>
603
+ <%_ } /* authenticationType !== 'oauth2'*/ _%>
602
604
 
603
605
  /**
604
606
  * Update basic information (first name, last name, email, language) for the current user.
@@ -751,7 +753,7 @@ public class UserService {
751
753
  <%_ } _%>
752
754
  <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
753
755
  public <% if (reactive) { %>Flux<% } else { %>Page<% } %><<%= asDto('AdminUser') %>> getAllManagedUsers(Pageable pageable) {
754
- return userRepository.findAll<% if (reactive) { %><% if (databaseTypeSql) { %>WithAuthorities<% } else { %>ByIdNotNull<% }} %>(pageable).map(<%= asDto('AdminUser') %>::new);
756
+ return userRepository.findAll<% if (reactive) { %><% if (databaseTypeSql) { %>WithAuthorities<% } else { %>By<% if (!databaseTypeCouchbase) { %>IdNotNull<% }}} %>(pageable).map(<%= asDto('AdminUser') %>::new);
755
757
  }
756
758
 
757
759
  <%_ if (databaseTypeSql) { _%>
@@ -46,7 +46,6 @@ public class OAuth2ReactiveRefreshTokensWebFilter implements WebFilter {
46
46
  .filter(principal -> principal instanceof OAuth2AuthenticationToken)
47
47
  .cast(OAuth2AuthenticationToken.class)
48
48
  .flatMap(authentication -> authorizedClient(exchange, authentication))
49
- .onErrorResume(e -> Mono.empty())
50
49
  .thenReturn(exchange)
51
50
  .flatMap(chain::filter);
52
51
  }
@@ -216,7 +216,7 @@ public class AccountResource {
216
216
  }
217
217
  }
218
218
  }
219
- <%_ } else { /* not oauth, not skipUserManagement */ _%>
219
+ <%_ } else { /* not oauth, not skipUserManagement */ _%>
220
220
  <%_ if (authenticationTypeSession && !reactive) { _%>
221
221
  import <%= packageName %>.domain.PersistentToken;
222
222
  import <%= packageName %>.repository.PersistentTokenRepository;
@@ -1,5 +1,5 @@
1
1
  <%#
2
- Copyright 2013-2021 the original author or authors from the JHipster project.
2
+ Copyright 2013-2022 the original author or authors from the JHipster project.
3
3
 
4
4
  This file is part of the JHipster project, see https://www.jhipster.tech/
5
5
  for more information.
@@ -194,10 +194,10 @@ public class PublicUserResource {
194
194
  <%_ } _%>
195
195
  <%_ } else { _%>
196
196
  <%_ if (reactive) { _%>
197
- return userRepository.search(User.PREFIX, query).map(<%= asDto('User') %>::new).collectList();
197
+ return userRepository.search(query).map(<%= asDto('User') %>::new).collectList();
198
198
  <%_ } else { _%>
199
199
  return StreamSupport
200
- .stream(userRepository.search(User.PREFIX, query).spliterator(), false)
200
+ .stream(userRepository.search(query).spliterator(), false)
201
201
  .map(<%= asDto('User') %>::new)
202
202
  .collect(Collectors.toList());
203
203
  <%_ } _%>
@@ -255,6 +255,11 @@ spring:
255
255
  cache: false
256
256
  <%_ if (serviceDiscoveryType || applicationTypeGateway || applicationTypeMicroservice) { _%>
257
257
  sleuth:
258
+ # https://github.com/spring-projects/spring-framework/issues/27844#issuescomment-1002866885
259
+ # https://github.com/spring-cloud/spring-cloud-sleuth/issues/2094
260
+ async:
261
+ enabled: false
262
+ enabled: false
258
263
  sampler:
259
264
  probability: 1 # report 100% of traces
260
265
  zipkin: # Use the "zipkin" Maven profile to have the Spring Cloud Zipkin dependencies
@@ -290,6 +295,7 @@ jhipster:
290
295
  database:
291
296
  couchbase:
292
297
  bucket-name: <%= baseName %>
298
+ scope-name: <%= camelizedBaseName %>
293
299
  <%_ } _%>
294
300
  <%_ if (!cacheProviderNo) { _%>
295
301
  cache: # Cache configuration
@@ -350,6 +356,8 @@ jhipster:
350
356
  cors:
351
357
  # Allow Ionic for JHipster by default (* no longer allowed in Spring Boot 2.4+)
352
358
  allowed-origins: "http://localhost:8100,https://localhost:8100,http://localhost:9000,https://localhost:9000<%_ if (!skipClient) { _%>,http://localhost:<%= devServerPort %>,https://localhost:<%= devServerPort %><%_ if (applicationTypeGateway && microfrontend) { for ({applicationIndex, devServerPort: microserviceDevServerPort = devServerPort + applicationIndex} of Object.values(jhipsterConfig.applications || {})) { _%>,http://localhost:<%= microserviceDevServerPort %>,https://localhost:<%= microserviceDevServerPort %><%_ } } _%><%_ } _%>"
359
+ # Enable CORS when running in GitHub Codespaces
360
+ allowed-origin-patterns: 'https://*.githubpreview.dev'
353
361
  allowed-methods: "*"
354
362
  allowed-headers: "*"
355
363
  <%_ if (authenticationTypeSession) { _%>
@@ -209,6 +209,11 @@ spring:
209
209
  cache: true
210
210
  <%_ if (serviceDiscoveryType || applicationTypeGateway || applicationTypeMicroservice) { _%>
211
211
  sleuth:
212
+ # https://github.com/spring-projects/spring-framework/issues/27844#issuescomment-1002866885
213
+ # https://github.com/spring-cloud/spring-cloud-sleuth/issues/2094
214
+ async:
215
+ enabled: false
216
+ enabled: false
212
217
  sampler:
213
218
  probability: 1 # report 100% of traces
214
219
  zipkin: # Use the "zipkin" Maven profile to have the Spring Cloud Zipkin dependencies
@@ -269,6 +274,7 @@ jhipster:
269
274
  database:
270
275
  couchbase:
271
276
  bucket-name: <%= baseName %>
277
+ scope-name: <%= camelizedBaseName %>
272
278
  <%_ } _%>
273
279
  <%_ if (!cacheProviderNo) { _%>
274
280
  cache: # Cache configuration
@@ -113,6 +113,8 @@ management:
113
113
  info:
114
114
  git:
115
115
  mode: full
116
+ env:
117
+ enabled: true
116
118
  health:
117
119
  mail:
118
120
  enabled: false # When using the MailService, configure an SMTP server and set this to true
@@ -20,7 +20,8 @@ package <%= packageName %>;
20
20
 
21
21
  import <%= packageName %>.<%= mainClass %>;
22
22
  <%_ if (databaseTypeCouchbase) { _%>
23
- import <%= packageName %>.CouchbaseTestContainerExtension;
23
+ import org.springframework.test.context.ActiveProfiles;
24
+ import tech.jhipster.config.JHipsterConstants;
24
25
  <%_ } _%>
25
26
  <%_ if (databaseTypeNeo4j) { _%>
26
27
  import <%= packageName %>.AbstractNeo4jIT;
@@ -63,6 +64,7 @@ import java.lang.annotation.Target;
63
64
  <%_ } _%>
64
65
  <%_ if (databaseTypeCouchbase) { _%>
65
66
  @ExtendWith(CouchbaseTestContainerExtension.class)
67
+ @ActiveProfiles(JHipsterConstants.SPRING_PROFILE_TEST)
66
68
  <%_ } _%>
67
69
  <%_ if (databaseTypeMongodb) { _%>
68
70
  @ExtendWith(MongoDbTestContainerExtension.class)
@@ -27,6 +27,11 @@ import static com.tngtech.archunit.base.DescribedPredicate.alwaysTrue;
27
27
  import static com.tngtech.archunit.core.domain.JavaClass.Predicates.belongToAnyOf;
28
28
  import static com.tngtech.archunit.library.Architectures.layeredArchitecture;
29
29
 
30
+ <%_
31
+ const hasClientLayer = !reactive && (applicationTypeMicroservice || applicationTypeGateway);
32
+ const hasDomainLayer = !databaseTypeNo;
33
+ const hasConstants = !skipUserManagement || databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase || databaseTypeNeo4j;
34
+ _%>
30
35
  @AnalyzeClasses(packagesOf = <%= mainClass %>.class, importOptions = DoNotIncludeTests.class)
31
36
  class TechnicalStructureTest {
32
37
 
@@ -34,36 +39,37 @@ class TechnicalStructureTest {
34
39
  @ArchTest
35
40
  static final ArchRule respectsTechnicalArchitectureLayers = layeredArchitecture()
36
41
  .layer("Config").definedBy("..config..")
37
- <%_ if (applicationTypeMicroservice) { _%>
42
+ <%_ if (hasClientLayer) { _%>
38
43
  .layer("Client").definedBy("..client..")
39
44
  <%_ } _%>
40
45
  .layer("Web").definedBy("..web..")
41
- <%_ if (!databaseTypeNo || authenticationTypeOauth2) { _%>
42
- .layer("Service").definedBy("..service..")
43
- <%_ } _%>
46
+ .optionalLayer("Service").definedBy("..service..")
44
47
  .layer("Security").definedBy("..security..")
45
- <%_ if (!databaseTypeNo) { _%>
48
+ <%_ if (hasDomainLayer) { _%>
46
49
  .layer("Persistence").definedBy("..repository..")
47
50
  .layer("Domain").definedBy("..domain..")
48
51
  <%_ } _%>
49
52
 
50
- <%_ if (messageBrokerKafka) { _%>
51
- .whereLayer("Config").mayOnlyBeAccessedByLayers("Web")
52
- <%_ } else { _%>
53
53
  .whereLayer("Config").mayNotBeAccessedByAnyLayer()
54
- <%_ } _%>
55
- <%_ if (applicationTypeMicroservice) { _%>
54
+ <%_ if (hasClientLayer) { _%>
56
55
  .whereLayer("Client").mayNotBeAccessedByAnyLayer()
57
56
  <%_ } _%>
58
57
  .whereLayer("Web").mayOnlyBeAccessedByLayers("Config")
59
- <%_ if (!databaseTypeNo || authenticationTypeOauth2) { _%>
60
58
  .whereLayer("Service").mayOnlyBeAccessedByLayers("Web", "Config")
61
- <%_ } _%>
62
- .whereLayer("Security").mayOnlyBeAccessedByLayers(<% if (applicationTypeMicroservice) { %>"Client", <% } %>"Web"<% if (!databaseTypeNo || authenticationTypeOauth2) { %>, "Service"<% } %>, "Config")
63
- <%_ if (!databaseTypeNo) { _%>
59
+ .whereLayer("Security").mayOnlyBeAccessedByLayers("Config", <% if (hasClientLayer) { %>"Client", <% } %>"Service", "Web")
60
+ <%_ if (hasDomainLayer) { _%>
64
61
  .whereLayer("Persistence").mayOnlyBeAccessedByLayers("Service", "Security", "Web", "Config")
65
62
  .whereLayer("Domain").mayOnlyBeAccessedByLayers("Persistence", "Service", "Security", "Web", "Config")
66
63
  <%_ } _%>
67
64
 
68
- .ignoreDependency(belongToAnyOf(<%= mainClass %>.class), alwaysTrue());
65
+ .ignoreDependency(belongToAnyOf(<%= mainClass %>.class), alwaysTrue())
66
+ .ignoreDependency(alwaysTrue(), belongToAnyOf(
67
+ <%_ if (hasConstants) { _%>
68
+ <%= packageName %>.config.Constants.class,
69
+ <%_ } _%>
70
+ <%_ if (messageBrokerKafka) { _%>
71
+ <%= packageName %>.config.KafkaProperties.class,
72
+ <%_ } _%>
73
+ <%= packageName %>.config.ApplicationProperties.class
74
+ ));
69
75
  }
@@ -30,6 +30,8 @@ public class JHipsterBlockHoundIntegration implements BlockHoundIntegration {
30
30
  builder.allowBlockingCallsInside("org.springframework.validation.beanvalidation.SpringValidatorAdapter", "validate");
31
31
  <%_ if (databaseTypeCouchbase) { _%>
32
32
  builder.allowBlockingCallsInside("org.springframework.data.couchbase.core.convert.MappingCouchbaseConverter", "read");
33
+ builder.allowBlockingCallsInside("com.github.couchmove.repository.CouchbaseRepositoryImpl", "lambda$query$2");
34
+ builder.allowBlockingCallsInside("com.github.couchmove.repository.CouchbaseRepositoryImpl", "lambda$importFtsIndex$1");
33
35
  <%_} _%>
34
36
  }
35
37
 
@@ -18,10 +18,18 @@
18
18
  -%>
19
19
  package <%= packageName %>.cucumber.stepdefs;
20
20
 
21
+ <%_ if (reactive) { _%>
22
+ import org.springframework.test.web.reactive.server.WebTestClient;
23
+ <%_ } else { _%>
21
24
  import org.springframework.test.web.servlet.ResultActions;
25
+ <%_ } _%>
22
26
 
23
27
  public abstract class StepDefs {
24
28
 
29
+ <%_ if (reactive) { _%>
30
+ protected WebTestClient.ResponseSpec actions;
31
+ <%_ } else { _%>
25
32
  protected ResultActions actions;
33
+ <%_ } _%>
26
34
 
27
35
  }
@@ -40,6 +40,7 @@ import <%= packageName %>.security.AuthoritiesConstants;
40
40
 
41
41
  <%_ if (reactive) { _%>
42
42
  import org.springframework.test.web.reactive.server.WebTestClient;
43
+ import static org.hamcrest.Matchers.is;
43
44
  <%_ } else { _%>
44
45
  import org.springframework.test.web.servlet.setup.MockMvcBuilders;
45
46
  import org.springframework.test.web.servlet.MockMvc;
@@ -72,29 +73,42 @@ public class UserStepDefs extends StepDefs {
72
73
  SecurityContext context = SecurityContextHolder.createEmptyContext();
73
74
  context.setAuthentication(authentication);
74
75
  SecurityContextHolder.setContext(context);
76
+ <%_ if (reactive) { _%>
77
+ this.userResourceMock = WebTestClient.bindToController(userResource).build();
78
+ <%_ } else { _%>
75
79
  this.userResourceMock = MockMvcBuilders.standaloneSetup(userResource).build();
80
+ <%_ } _%>
76
81
  }
77
82
 
78
83
  @When("I search user {string}")
79
84
  public void i_search_user(String userId) throws Throwable {
80
85
  <%_ if (reactive) { _%>
81
- actions = userResourceMock.get().uri("/api/admin/users/" + userId)
86
+ actions = userResourceMock.get().uri("/api/admin/users/" + userId).accept(MediaType.APPLICATION_JSON).exchange();
82
87
  <%_ } else { _%>
83
- actions = userResourceMock.perform(get("/api/admin/users/" + userId)
88
+ actions = userResourceMock.perform(get("/api/admin/users/" + userId).accept(MediaType.APPLICATION_JSON));
84
89
  <%_ } _%>
85
- .accept(MediaType.APPLICATION_JSON)<% if (!reactive) { %>)<%_ } _%>;
86
90
  }
87
91
 
88
92
  @Then("the user is found")
89
93
  public void the_user_is_found() throws Throwable {
94
+ <%_ if (reactive) { _%>
95
+ actions
96
+ .expectStatus().isOk()
97
+ .expectHeader().contentTypeCompatibleWith(MediaType.APPLICATION_JSON_VALUE);
98
+ <%_ } else { _%>
90
99
  actions
91
100
  .andExpect(status().isOk())
92
101
  .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE));
102
+ <%_ } _%>
93
103
  }
94
104
 
95
105
  @Then("his last name is {string}")
96
106
  public void his_last_name_is(String lastName) throws Throwable {
107
+ <%_ if (reactive) { _%>
108
+ actions.expectBody().jsonPath("$.lastName").value(is(lastName));
109
+ <%_ } else { _%>
97
110
  actions.andExpect(jsonPath("$.lastName").value(lastName));
111
+ <%_ } _%>
98
112
  }
99
113
 
100
114
  }
@@ -1,5 +1,5 @@
1
1
  <%#
2
- Copyright 2013-2021 the original author or authors from the JHipster project.
2
+ Copyright 2013-2022 the original author or authors from the JHipster project.
3
3
 
4
4
  This file is part of the JHipster project, see https://www.jhipster.tech/
5
5
  for more information.
@@ -1,5 +1,5 @@
1
1
  <%#
2
- Copyright 2013-2020 the original author or authors from the JHipster project.
2
+ Copyright 2013-2022 the original author or authors from the JHipster project.
3
3
 
4
4
  This file is part of the JHipster project, see https://jhipster.github.io/
5
5
  for more information.
@@ -44,7 +44,7 @@ class UserMapperTest {
44
44
 
45
45
  private static final String DEFAULT_LOGIN = "johndoe";
46
46
  <%_ if (databaseTypeCouchbase) { _%>
47
- private static final String DEFAULT_ID = <%= asEntity('User') %>.PREFIX + DEFAULT_LOGIN;
47
+ private static final String DEFAULT_ID = DEFAULT_LOGIN;
48
48
  <%_ } else { _%>
49
49
  private static final <%= user.primaryKey.type %> DEFAULT_ID = <%- getPrimaryKeyValue(user.primaryKey.type) %>;
50
50
  <%_ } _%>
@@ -20,8 +20,6 @@ package <%= packageName %>.web.rest;
20
20
 
21
21
  <%_ if (databaseTypeCassandra) { _%>
22
22
  import <%= packageName %>.AbstractCassandraTest;
23
- <%_ } else if (databaseTypeCouchbase) { _%>
24
- import <%= packageName %>.CouchbaseTestContainerExtension;
25
23
  <%_ } _%>
26
24
  import <%= packageName %>.IntegrationTest;
27
25
  import <%= packageName %>.config.Constants;
@@ -29,7 +27,7 @@ import <%= packageName %>.config.Constants;
29
27
  import <%= packageName %>.domain.PersistentToken;
30
28
  <%_ } _%>
31
29
  import <%= packageName %>.domain.<%= asEntity('User') %>;
32
- <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) { _%>
30
+ <%_ if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { _%>
33
31
  import <%= packageName %>.repository.AuthorityRepository;
34
32
  <%_ } _%>
35
33
  <%_ if (authenticationTypeSession && !reactive) { _%>
@@ -51,9 +49,6 @@ import org.apache.commons.lang3.RandomStringUtils;
51
49
  import org.junit.jupiter.api.BeforeEach;
52
50
  <%_ } _%>
53
51
  import org.junit.jupiter.api.Test;
54
- <%_ if (databaseTypeCouchbase) { _%>
55
- import org.junit.jupiter.api.extension.ExtendWith;
56
- <%_ } _%>
57
52
  import org.springframework.beans.factory.annotation.Autowired;
58
53
  <%_ if (reactive) { _%>
59
54
  import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
@@ -104,6 +99,9 @@ import static org.springframework.security.test.web.servlet.request.SecurityMock
104
99
  import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
105
100
  import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
106
101
  <%_ } _%>
102
+ <%_ if (databaseTypeCouchbase) { _%>
103
+ import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultHandlers.exportTestSecurityContext;
104
+ <%_ } _%>
107
105
 
108
106
  /**
109
107
  * Integration tests for the {@link AccountResource} REST controller.
@@ -341,6 +339,9 @@ class AccountResourceIT <% if (databaseTypeCassandra) { %>extends AbstractCassan
341
339
  .contentType(MediaType.APPLICATION_JSON)
342
340
  .content(TestUtil.convertObjectToJsonBytes(invalidUser))<% if (testsNeedCsrf) { %>
343
341
  .with(csrf())<% } %>)
342
+ <%_ if (databaseTypeCouchbase) { _%>
343
+ .andDo(exportTestSecurityContext())
344
+ <%_ } _%>
344
345
  .andExpect(status().isBadRequest());
345
346
  <%_ } else { _%>
346
347
  accountWebTestClient.post().uri("/api/register")
@@ -537,6 +538,9 @@ class AccountResourceIT <% if (databaseTypeCassandra) { %>extends AbstractCassan
537
538
  .contentType(MediaType.APPLICATION_JSON)
538
539
  .content(TestUtil.convertObjectToJsonBytes(secondUser))<% if (testsNeedCsrf) { %>
539
540
  .with(csrf())<% } %>)
541
+ <%_ if (databaseTypeCouchbase) { _%>
542
+ .andDo(exportTestSecurityContext())
543
+ <%_ } _%>
540
544
  .andExpect(status().isCreated());
541
545
  <%_ } _%>
542
546
 
@@ -903,6 +907,9 @@ class AccountResourceIT <% if (databaseTypeCassandra) { %>extends AbstractCassan
903
907
  .contentType(MediaType.APPLICATION_JSON)
904
908
  .content(TestUtil.convertObjectToJsonBytes(userDTO))<% if (testsNeedCsrf) { %>
905
909
  .with(csrf())<% } %>)
910
+ <%_ if (databaseTypeCouchbase) { _%>
911
+ .andDo(exportTestSecurityContext())
912
+ <%_ } _%>
906
913
  .andExpect(status().isBadRequest());
907
914
  <%_ } _%>
908
915