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
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright 2013-2022 the original author or authors from the JHipster project.
3
+ *
4
+ * This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ * for more information.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * https://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ export { default } from './index.cjs';
@@ -16,6 +16,4 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import generator from './index.js';
20
-
21
- export default generator;
19
+ export { default } from './index.js';
@@ -21,8 +21,15 @@ const shelljs = require('shelljs');
21
21
  const chalk = require('chalk');
22
22
 
23
23
  const BaseBlueprintGenerator = require('../generator-base-blueprint');
24
- const { INITIALIZING_PRIORITY, PROMPTING_PRIORITY, CONFIGURING_PRIORITY, WRITING_PRIORITY, POST_WRITING_PRIORITY } =
25
- require('../../lib/constants/priorities.cjs').compat;
24
+ const {
25
+ INITIALIZING_PRIORITY,
26
+ PROMPTING_PRIORITY,
27
+ CONFIGURING_PRIORITY,
28
+ WRITING_PRIORITY,
29
+ POST_WRITING_PRIORITY,
30
+ INSTALL_PRIORITY,
31
+ END_PRIORITY,
32
+ } = require('../../lib/constants/priorities.cjs').compat;
26
33
 
27
34
  const { GENERATOR_OPENAPI_CLIENT } = require('../generator-list');
28
35
  const { OpenAPIOptionsNames, OpenAPIDefaultValues } = require('../../jdl/jhipster/openapi-options');
@@ -152,7 +159,7 @@ module.exports = class extends BaseBlueprintGenerator {
152
159
  };
153
160
  }
154
161
 
155
- install() {
162
+ get [INSTALL_PRIORITY]() {
156
163
  if (this.delegateToBlueprint) return {};
157
164
  return this._install();
158
165
  }
@@ -165,7 +172,7 @@ module.exports = class extends BaseBlueprintGenerator {
165
172
  };
166
173
  }
167
174
 
168
- end() {
175
+ get [END_PRIORITY]() {
169
176
  if (this.delegateToBlueprint) return {};
170
177
  return this._end();
171
178
  }
@@ -16,6 +16,4 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import generator from './index.js';
20
-
21
- export default generator;
19
+ export { default } from './index.js';
@@ -16,6 +16,4 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import generator from './index.js';
20
-
21
- export default generator;
19
+ export { default } from './index.js';
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright 2013-2022 the original author or authors from the JHipster project.
3
+ *
4
+ * This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ * for more information.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * https://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ export { default } from './index.cjs';
@@ -16,6 +16,6 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  */
19
- import generator from './index.js';
20
19
 
21
- export default generator;
20
+ export { default } from './index.js';
21
+ export { serverFiles as files } from './files.js';
@@ -41,30 +41,6 @@ const couchbaseFiles = {
41
41
  {
42
42
  path: SERVER_MAIN_SRC_DIR,
43
43
  templates: [
44
- {
45
- file: 'package/config/couchbase/CustomCouchbaseRepositoryFactory.java',
46
- renameTo: generator => `${generator.javaDir}config/couchbase/CustomCouchbaseRepositoryFactory.java`,
47
- },
48
- {
49
- file: 'package/config/couchbase/CustomCouchbaseRepositoryFactoryBean.java',
50
- renameTo: generator => `${generator.javaDir}config/couchbase/CustomCouchbaseRepositoryFactoryBean.java`,
51
- },
52
- {
53
- file: 'package/config/couchbase/CustomCouchbaseRepositoryQuery.java',
54
- renameTo: generator => `${generator.javaDir}config/couchbase/CustomCouchbaseRepositoryQuery.java`,
55
- },
56
- {
57
- file: 'package/config/couchbase/CustomN1qlQueryCreator.java',
58
- renameTo: generator => `${generator.javaDir}config/couchbase/CustomN1qlQueryCreator.java`,
59
- },
60
- {
61
- file: 'package/config/couchbase/CustomN1qlRepositoryQueryExecutor.java',
62
- renameTo: generator => `${generator.javaDir}config/couchbase/CustomN1qlRepositoryQueryExecutor.java`,
63
- },
64
- {
65
- file: 'package/config/couchbase/package-info.java',
66
- renameTo: generator => `${generator.javaDir}config/couchbase/package-info.java`,
67
- },
68
44
  {
69
45
  file: 'package/repository/JHipsterCouchbaseRepository.java',
70
46
  renameTo: generator => `${generator.javaDir}repository/JHipsterCouchbaseRepository.java`,
@@ -81,30 +57,41 @@ const couchbaseFiles = {
81
57
  },
82
58
  ],
83
59
  },
60
+ {
61
+ condition: generator => generator.searchEngine === COUCHBASE,
62
+ path: SERVER_MAIN_SRC_DIR,
63
+ templates: [
64
+ {
65
+ file: 'package/repository/CouchbaseSearchRepository.java',
66
+ renameTo: generator => `${generator.javaDir}repository/CouchbaseSearchRepository.java`,
67
+ },
68
+ ],
69
+ },
84
70
  {
85
71
  condition: generator => generator.searchEngine === COUCHBASE,
86
72
  path: SERVER_TEST_SRC_DIR,
87
73
  templates: [
88
74
  {
89
- file: 'package/repository/JHipsterCouchbaseRepositoryTest.java',
90
- renameTo: generator => `${generator.testDir}repository/JHipsterCouchbaseRepositoryTest.java`,
75
+ file: 'package/repository/CouchbaseSearchRepositoryTest.java',
76
+ renameTo: generator => `${generator.testDir}repository/CouchbaseSearchRepositoryTest.java`,
91
77
  },
92
78
  ],
93
79
  },
94
80
  ],
95
81
  serverResource: [
96
82
  {
83
+ condition: generator => !generator.skipUserManagement,
97
84
  path: SERVER_MAIN_RES_DIR,
98
- templates: ['config/couchmove/changelog/V0__create_indexes.n1ql'],
85
+ templates: ['config/couchmove/changelog/V0__create_collections.n1ql', 'config/couchmove/changelog/V0.2__create_indexes.n1ql'],
99
86
  },
100
87
  {
101
88
  condition: generator => !generator.skipUserManagement || generator.authenticationType === OAUTH2,
102
89
  path: SERVER_MAIN_RES_DIR,
103
90
  templates: [
104
- 'config/couchmove/changelog/V0.1__initial_setup/ROLE_ADMIN.json',
105
- 'config/couchmove/changelog/V0.1__initial_setup/ROLE_USER.json',
106
- 'config/couchmove/changelog/V0.1__initial_setup/user__admin.json',
107
- 'config/couchmove/changelog/V0.1__initial_setup/user__user.json',
91
+ 'config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_ADMIN.json',
92
+ 'config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_USER.json',
93
+ 'config/couchmove/changelog/V0.1__initial_setup/user/admin.json',
94
+ 'config/couchmove/changelog/V0.1__initial_setup/user/user.json',
108
95
  ],
109
96
  },
110
97
  ],
@@ -136,6 +123,16 @@ function writeCouchbaseFiles() {
136
123
  this.removeFile(`${this.javaDir}repository/SearchCouchbaseRepository.java`);
137
124
  this.removeFile(`${this.testDir}repository/CustomCouchbaseRepositoryTest.java`);
138
125
  }
126
+
127
+ if (this.isJhipsterVersionLessThan('7.6.1')) {
128
+ this.removeFile(`${constants.SERVER_TEST_SRC_DIR}${this.testDir}repository/JHipsterCouchbaseRepositoryTest.java`);
129
+ this.removeFolder(`${constants.SERVER_MAIN_SRC_DIR}${this.javaDir}config/couchbase`);
130
+ this.removeFile(`${constants.SERVER_MAIN_RES_DIR}config/couchmove/changelog/V0__create_indexes.n1ql`);
131
+ this.removeFile(`${constants.SERVER_MAIN_RES_DIR}config/couchmove/changelog/V0.1__initial_setup/ROLE_ADMIN.json`);
132
+ this.removeFile(`${constants.SERVER_MAIN_RES_DIR}config/couchmove/changelog/V0.1__initial_setup/ROLE_USER.json`);
133
+ this.removeFile(`${constants.SERVER_MAIN_RES_DIR}config/couchmove/changelog/V0.1__initial_setup/user__admin.json`);
134
+ this.removeFile(`${constants.SERVER_MAIN_RES_DIR}config/couchmove/changelog/V0.1__initial_setup/user__user.json`);
135
+ }
139
136
  },
140
137
 
141
138
  async writeCouchbaseFiles() {
@@ -332,6 +332,11 @@ const baseServerFiles = {
332
332
  { file: 'config/realm-config/jhipster-users-0.json', method: 'copy', renameTo: () => 'realm-config/jhipster-users-0.json' },
333
333
  ],
334
334
  },
335
+ {
336
+ condition: generator => generator.serviceDiscoveryType || generator.applicationTypeGateway || generator.applicationTypeMicroservice,
337
+ path: DOCKER_DIR,
338
+ templates: ['zipkin.yml'],
339
+ },
335
340
  ],
336
341
  serverBuild: [
337
342
  {
@@ -371,6 +376,7 @@ const baseServerFiles = {
371
376
  ],
372
377
  },
373
378
  {
379
+ condition: generator => !generator.skipClient,
374
380
  templates: [
375
381
  { file: 'npmw', method: 'copy', noEjs: true },
376
382
  { file: 'npmw.cmd', method: 'copy', noEjs: true },
@@ -1500,7 +1506,6 @@ const baseServerFiles = {
1500
1506
  file: 'package/repository/UserRepository.java',
1501
1507
  renameTo: generator => `${generator.javaDir}repository/UserRepository.java`,
1502
1508
  },
1503
- { file: 'package/web/rest/UserResource.java', renameTo: generator => `${generator.javaDir}web/rest/UserResource.java` },
1504
1509
  {
1505
1510
  file: 'package/web/rest/PublicUserResource.java',
1506
1511
  renameTo: generator => `${generator.javaDir}web/rest/PublicUserResource.java`,
@@ -1818,6 +1823,14 @@ function writeFiles() {
1818
1823
  this.generateKeyStore();
1819
1824
  },
1820
1825
 
1826
+ cleanupFiles() {
1827
+ if (this.isJhipsterVersionLessThan('7.6.1')) {
1828
+ if (this.authenticationTypeOauth2 && !this.databaseTypeNo) {
1829
+ this.removeFile(`${this.mainJavaPackageDir}web/rest/UserResource.java`);
1830
+ }
1831
+ }
1832
+ },
1833
+
1821
1834
  cleanupOldServerFiles() {
1822
1835
  serverCleanup.cleanupOldServerFiles(
1823
1836
  this,
@@ -68,6 +68,8 @@ const NO_WEBSOCKET = websocketTypes.FALSE;
68
68
 
69
69
  const { SERVER_MAIN_SRC_DIR, SERVER_MAIN_RES_DIR, SERVER_TEST_SRC_DIR, SERVER_TEST_RES_DIR, MAIN_DIR, TEST_DIR } = constants;
70
70
 
71
+ const WAIT_TIMEOUT = 3 * 60000;
72
+
71
73
  module.exports = class JHipsterServerGenerator extends BaseBlueprintGenerator {
72
74
  constructor(args, options, features) {
73
75
  super(args, options, { unique: 'namespace', ...features });
@@ -187,6 +189,7 @@ module.exports = class JHipsterServerGenerator extends BaseBlueprintGenerator {
187
189
  this.DOCKER_PROMETHEUS = constants.DOCKER_PROMETHEUS;
188
190
  this.DOCKER_GRAFANA = constants.DOCKER_GRAFANA;
189
191
  this.DOCKER_COMPOSE_FORMAT_VERSION = constants.DOCKER_COMPOSE_FORMAT_VERSION;
192
+ this.DOCKER_ZIPKIN = constants.DOCKER_ZIPKIN;
190
193
 
191
194
  this.JAVA_VERSION = constants.JAVA_VERSION;
192
195
  this.JAVA_COMPATIBLE_VERSIONS = constants.JAVA_COMPATIBLE_VERSIONS;
@@ -348,10 +351,10 @@ module.exports = class JHipsterServerGenerator extends BaseBlueprintGenerator {
348
351
  this.jhiTablePrefix = this.getTableName(this.jhiPrefix);
349
352
 
350
353
  this.mainJavaDir = SERVER_MAIN_SRC_DIR;
354
+ this.mainJavaPackageDir = `${SERVER_MAIN_SRC_DIR}${this.packageFolder}/`;
351
355
  this.mainJavaResourceDir = SERVER_MAIN_RES_DIR;
352
- this.mainJavaPackageDir = `${SERVER_MAIN_RES_DIR}${this.packageFolder}/`;
353
356
  this.testJavaDir = SERVER_TEST_SRC_DIR;
354
- this.testJavaPackageDir = `${SERVER_MAIN_RES_DIR}${this.packageFolder}/`;
357
+ this.testJavaPackageDir = `${SERVER_TEST_SRC_DIR}${this.packageFolder}/`;
355
358
  this.testResourceDir = SERVER_TEST_RES_DIR;
356
359
  this.srcMainDir = MAIN_DIR;
357
360
  this.srcTestDir = TEST_DIR;
@@ -511,13 +514,12 @@ module.exports = class JHipsterServerGenerator extends BaseBlueprintGenerator {
511
514
  const dockerFile = `src/main/docker/${databaseType}.yml`;
512
515
  if (databaseType === CASSANDRA) {
513
516
  scriptsStorage.set({
514
- 'docker:db:await': 'wait-on tcp:9042 && sleep 20',
517
+ 'docker:db:await': `wait-on -t ${WAIT_TIMEOUT} tcp:9042 && sleep 20`,
515
518
  });
516
519
  }
517
520
  if (databaseType === COUCHBASE) {
518
521
  scriptsStorage.set({
519
- 'docker:db:await':
520
- 'echo "Waiting for Couchbase to start" && wait-on http-get://localhost:8091/ui/index.html && sleep 30 && echo "Couchbase started"',
522
+ 'docker:db:await': `echo "Waiting for Couchbase to start" && wait-on -t ${WAIT_TIMEOUT} http-get://localhost:8091/ui/index.html && sleep 30 && echo "Couchbase started"`,
521
523
  });
522
524
  }
523
525
  if (databaseType === COUCHBASE || databaseType === CASSANDRA) {
@@ -537,7 +539,7 @@ module.exports = class JHipsterServerGenerator extends BaseBlueprintGenerator {
537
539
  }
538
540
  if (this.jhipsterConfig.searchEngine === ELASTICSEARCH) {
539
541
  dockerAwaitScripts.push(
540
- 'echo "Waiting for Elasticsearch to start" && wait-on "http-get://localhost:9200/_cluster/health?wait_for_status=green&timeout=60s" && echo "Elasticsearch started"'
542
+ `echo "Waiting for Elasticsearch to start" && wait-on -t ${WAIT_TIMEOUT} "http-get://localhost:9200/_cluster/health?wait_for_status=green&timeout=60s" && echo "Elasticsearch started"`
541
543
  );
542
544
  }
543
545
 
@@ -552,11 +554,11 @@ module.exports = class JHipsterServerGenerator extends BaseBlueprintGenerator {
552
554
  dockerBuild.push(`npm run docker:${dockerConfig}:build`);
553
555
  } else if (dockerConfig === 'jhipster-registry') {
554
556
  dockerAwaitScripts.push(
555
- 'echo "Waiting for jhipster-registry to start" && wait-on http-get://localhost:8761/management/health && echo "jhipster-registry started"'
557
+ `echo "Waiting for jhipster-registry to start" && wait-on -t ${WAIT_TIMEOUT} http-get://localhost:8761/management/health && echo "jhipster-registry started"`
556
558
  );
557
559
  } else if (dockerConfig === 'keycloak') {
558
560
  dockerAwaitScripts.push(
559
- 'echo "Waiting for keycloak to start" && wait-on http-get://localhost:9080/auth/realms/jhipster -t 30000 && echo "keycloak started" || echo "keycloak not running, make sure oauth2 server is running"'
561
+ `echo "Waiting for keycloak to start" && wait-on -t ${WAIT_TIMEOUT} http-get://localhost:9080/auth/realms/jhipster && echo "keycloak started" || echo "keycloak not running, make sure oauth2 server is running"`
560
562
  );
561
563
  }
562
564
 
@@ -632,7 +634,7 @@ module.exports = class JHipsterServerGenerator extends BaseBlueprintGenerator {
632
634
  'ci:e2e:package':
633
635
  'npm run java:$npm_package_config_packaging:$npm_package_config_default_environment -- -Pe2e -Denforcer.skip=true',
634
636
  'preci:e2e:server:start': 'npm run docker:db:await --if-present && npm run docker:others:await --if-present',
635
- 'ci:e2e:server:start': `java -jar ${e2ePackage}.$npm_package_config_packaging --spring.profiles.active=$npm_package_config_default_environment ${javaCommonLog} ${javaTestLog} --logging.level.org.springframework.web=ERROR`,
637
+ 'ci:e2e:server:start': `java -jar ${e2ePackage}.$npm_package_config_packaging --spring.profiles.active=e2e,$npm_package_config_default_environment ${javaCommonLog} ${javaTestLog} --logging.level.org.springframework.web=ERROR`,
636
638
  });
637
639
  },
638
640
  packageJsonE2eScripts() {
@@ -640,13 +642,11 @@ module.exports = class JHipsterServerGenerator extends BaseBlueprintGenerator {
640
642
  const buildCmd = this.jhipsterConfig.buildTool === GRADLE ? 'gradlew' : 'mvnw';
641
643
  if (scriptsStorage.get('e2e')) {
642
644
  scriptsStorage.set({
643
- 'ci:server:await':
644
- 'echo "Waiting for server at port $npm_package_config_backend_port to start" && wait-on http-get://localhost:$npm_package_config_backend_port/management/health && echo "Server at port $npm_package_config_backend_port started"',
645
+ 'ci:server:await': `echo "Waiting for server at port $npm_package_config_backend_port to start" && wait-on -t ${WAIT_TIMEOUT} http-get://localhost:$npm_package_config_backend_port/management/health && echo "Server at port $npm_package_config_backend_port started"`,
645
646
  'pree2e:headless': 'npm run ci:server:await',
646
647
  'ci:e2e:run': 'concurrently -k -s first "npm run ci:e2e:server:start" "npm run e2e:headless"',
647
648
  'e2e:dev': `concurrently -k -s first "./${buildCmd}" "npm run e2e"`,
648
- 'e2e:devserver':
649
- 'concurrently -k -s first "npm run backend:start" "npm start" "wait-on http-get://localhost:9000 && npm run e2e:headless -- -c baseUrl=http://localhost:9000"',
649
+ 'e2e:devserver': `concurrently -k -s first "npm run backend:start" "npm start" "wait-on -t ${WAIT_TIMEOUT} http-get://localhost:9000 && npm run e2e:headless -- -c baseUrl=http://localhost:9000"`,
650
650
  });
651
651
  }
652
652
  },
@@ -97,7 +97,7 @@ module.exports = class extends needleServer {
97
97
  addProperty(name, value) {
98
98
  const errorMessage = `${chalk.yellow('Reference to maven property name ')}
99
99
  (name: ${name}, value:${value})${chalk.yellow(' not added.\n')}`;
100
- const property = `<${name}>${value}</${name}>`;
100
+ const property = value ? `<${name}>${value}</${name}>` : `<${name}/>`;
101
101
  const rewriteFileModel = this.generateFileModel(pomPath, '<!-- jhipster-needle-maven-property -->', property);
102
102
 
103
103
  this.addBlockContentToFile(rewriteFileModel, errorMessage);
@@ -0,0 +1,91 @@
1
+ <%#
2
+ Copyright 2013-2022 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ package <%= packageName %>.repository;
20
+
21
+ import org.springframework.data.couchbase.repository.Query;
22
+ import com.couchbase.client.java.query.QueryScanConsistency;
23
+ import org.springframework.data.couchbase.repository.ScanConsistency;
24
+ import org.springframework.data.domain.*;
25
+ import org.springframework.data.repository.NoRepositoryBean;
26
+ import com.couchbase.client.java.search.SearchQuery;
27
+ import com.couchbase.client.java.search.queries.DocIdQuery;
28
+ import com.couchbase.client.java.search.queries.QueryStringQuery;
29
+ import java.util.LinkedList;
30
+
31
+ <%_ if (reactive) { _%>
32
+ import reactor.core.publisher.Flux;
33
+ import reactor.core.publisher.Mono;
34
+ <%_ } _%>
35
+
36
+ import java.util.List;
37
+
38
+ /**
39
+ * Couchbase specific {@link org.springframework.data.repository.Repository} interface for search queries.
40
+ */
41
+ <%_
42
+ let listOrFlux = reactive ? 'Flux' : 'List';
43
+ let pageOrFlux = reactive ? 'Flux' : 'Page';
44
+ _%>
45
+ @NoRepositoryBean
46
+ public interface CouchbaseSearchRepository<T, ID> extends JHipsterCouchbaseRepository<T, ID> {
47
+
48
+ String SEARCH_CONDITION = "SEARCH(b, #{T(<%= packageName %>.repository.CouchbaseSearchRepository).searchQuery([0]).toString()})";
49
+
50
+ static SearchQuery searchQuery(String queryString) {
51
+ List<String> ids = new LinkedList<>();
52
+ for (String r : queryString.split(" ")) {
53
+ if (r.indexOf("id:") == 0) {
54
+ ids.add(r.substring(3));
55
+ queryString = queryString.replace(r, "").replaceAll("[ ]+", " ").trim();
56
+ }
57
+ }
58
+ QueryStringQuery query = SearchQuery.queryString(queryString);
59
+ if (ids.size() != 0) {
60
+ DocIdQuery docIdQuery = SearchQuery.docId(ids.toArray(new String[0]));
61
+ if (!queryString.isEmpty()) {
62
+ return SearchQuery.conjuncts(query, docIdQuery);
63
+ }
64
+ return docIdQuery;
65
+ }
66
+ return query;
67
+ }
68
+
69
+ @ScanConsistency(query = QueryScanConsistency.NOT_BOUNDED)
70
+ default <%= listOrFlux %><T> search(String queryString) {
71
+ return findAllById(toIds(searchIds(queryString)));
72
+ }
73
+
74
+ @ScanConsistency(query = QueryScanConsistency.NOT_BOUNDED)
75
+ default <%= pageOrFlux %><T> search(String queryString, Pageable pageable) {
76
+ <%_ if (reactive) { _%>
77
+ return findAllById(toIds(searchIds(queryString, pageable)));
78
+ <%_ } else { _%>
79
+ Page<T> page = searchIds(queryString, pageable);
80
+ return new PageImpl<>(findAllById(toIds(page.getContent())), pageable, page.getTotalElements());
81
+ <%_ } _%>
82
+ }
83
+
84
+ @Query(FIND_IDS_QUERY + " AND " + SEARCH_CONDITION)
85
+ @ScanConsistency(query = QueryScanConsistency.NOT_BOUNDED)
86
+ <%= listOrFlux %><T> searchIds(String queryString);
87
+
88
+ @Query(FIND_IDS_QUERY + " AND " + SEARCH_CONDITION)
89
+ @ScanConsistency(query = QueryScanConsistency.NOT_BOUNDED)
90
+ <%= pageOrFlux %><T> searchIds(String queryString, Pageable pageable);
91
+ }
@@ -19,96 +19,75 @@
19
19
  package <%= packageName %>.repository;
20
20
 
21
21
  import com.couchbase.client.java.query.QueryScanConsistency;
22
- import org.springframework.data.couchbase.repository.<% if (reactive) { %>Reactive<% } %>CouchbaseRepository;
23
- import org.springframework.data.couchbase.repository.ScanConsistency;
24
- import org.springframework.data.domain.Pageable;
25
- import org.springframework.data.domain.Sort;
22
+ import org.springframework.data.couchbase.repository.*;
23
+ import org.springframework.data.domain.*;
26
24
  import org.springframework.data.repository.NoRepositoryBean;
27
- <%_ if (searchEngineCouchbase) { _%>
28
- import com.couchbase.client.java.search.SearchQuery;
29
- import com.couchbase.client.java.search.queries.DocIdQuery;
30
- import com.couchbase.client.java.search.queries.QueryStringQuery;
31
- import java.util.LinkedList;
32
- <%_ } _%>
33
25
 
34
26
  <%_ if (reactive) { _%>
35
27
  import reactor.core.publisher.Flux;
36
28
  import reactor.core.publisher.Mono;
37
29
  <%_ } else { _%>
38
- import org.springframework.data.domain.Page;
39
- <%_ } _%>
40
-
41
30
  import java.util.List;
42
31
  import java.util.stream.Collectors;
43
- import org.springframework.data.couchbase.core.query.Query;
44
-
45
- import static java.lang.String.format;
32
+ <%_ } _%>
46
33
 
47
34
  /**
48
- * Couchbase specific {@link org.springframework.data.repository.Repository} interface uses N1QL for all requests.
35
+ * Couchbase specific {@link org.springframework.data.repository.Repository} interface that use KV first approach to optimize requests.
49
36
  */
50
37
  <%_
51
38
  let listOrFlux = reactive ? 'Flux' : 'List';
52
39
  let pageOrFlux = reactive ? 'Flux' : 'Page';
53
40
  _%>
54
41
  @NoRepositoryBean
42
+ @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
55
43
  public interface JHipsterCouchbaseRepository<T, ID> extends <% if (reactive) { %>Reactive<% } %>CouchbaseRepository<T, ID> {
56
44
 
57
- static String pageableStatement(Pageable pageable) {
58
- return pageableStatement(pageable, "");
45
+ String FIND_IDS_QUERY = "SELECT meta().id as __id, 0 as __cas FROM #{#n1ql.bucket} WHERE #{#n1ql.filter}";
46
+
47
+ default <%= listOrFlux %><T> findAll() {
48
+ return findAllById(toIds(findAllIds()));
59
49
  }
60
50
 
61
- static String pageableStatement(Pageable pageable, String prefix) {
62
- Sort sort = Sort.by(
63
- pageable.getSort().stream()
64
- .map(order -> {
65
- String property = order.getProperty();
66
- if ("id".equals(property)) {
67
- return order.withProperty(format("meta(%s).id", prefix));
68
- }
69
- if (prefix.isEmpty()) {
70
- return order;
71
- }
72
- return order.withProperty(format("%s.%s", prefix, property));
73
- })
74
- .collect(Collectors.toList()));
75
- return new Query()
76
- .limit(pageable.getPageSize())
77
- .skip(pageable.getOffset())
78
- .with(sort)
79
- .export();
51
+ default <%= pageOrFlux %><T> findAll<% if (reactive) { %>By<% } %>(Pageable pageable) {
52
+ <%_ if (reactive) { _%>
53
+ return findAllById(toIds(findAllIds(pageable)));
54
+ <%_ } else { _%>
55
+ Page<T> page = findAllIds(pageable);
56
+ return new PageImpl<>(findAllById(toIds(page.getContent())), pageable, page.getTotalElements());
57
+ <%_ } _%>
80
58
  }
81
59
 
82
- <%_ if (searchEngineCouchbase) { _%>
83
- static SearchQuery searchQuery(String queryString) {
84
- List<String> ids = new LinkedList<>();
85
- for (String r : queryString.split(" ")) {
86
- if (r.indexOf("id:") == 0) {
87
- ids.add(r.substring(3));
88
- queryString = queryString.replace(r, "").replaceAll("[ ]+", " ").trim();
89
- }
90
- }
91
- QueryStringQuery query = SearchQuery.queryString(queryString);
92
- if (ids.size() != 0) {
93
- DocIdQuery docIdQuery = SearchQuery.docId(ids.toArray(new String[0]));
94
- if (!queryString.isEmpty()) {
95
- return SearchQuery.conjuncts(query, docIdQuery);
96
- }
97
- return docIdQuery;
98
- }
99
- return query;
60
+ default <%= listOrFlux %><T> findAll(Sort sort) {
61
+ return findAllById(toIds(findAllIds(sort)));
100
62
  }
63
+
64
+ default <% if (reactive) { %>Mono<Void><% } else { %>void<% } %> deleteAll() {
65
+ <%_ if (reactive) { _%>
66
+ return toIds(findAllIds())
67
+ .collectList()
68
+ .flatMap(this::deleteAllById);
69
+ <%_ } else { _%>
70
+ deleteAllById(toIds(findAllIds()));
101
71
  <%_ } _%>
72
+ }
102
73
 
103
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
104
- <%= listOrFlux %><T> findAll();
74
+ @Query(FIND_IDS_QUERY)
75
+ <%= listOrFlux %><T> findAllIds();
105
76
 
106
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
107
- <%= listOrFlux %><T> findAll(Sort sort);
77
+ @Query(FIND_IDS_QUERY)
78
+ <%= pageOrFlux %><T> findAllIds(Pageable pageable);
108
79
 
109
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
110
- <%= pageOrFlux %><T> findAll<% if (reactive) { %>By<% } %>(Pageable pageable);
80
+ @Query(FIND_IDS_QUERY)
81
+ <%= listOrFlux %><T> findAllIds(Sort sort);
111
82
 
112
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
113
- <% if (reactive) { %>Mono<Void><% } else { %>void<% } %> deleteAll();
83
+ @SuppressWarnings("unchecked")
84
+ default <%= listOrFlux %><ID> toIds(<%= listOrFlux %><T> entities) {
85
+ <%_ if (reactive) { _%>
86
+ return entities.mapNotNull(entity -> (ID) getEntityInformation().getId(entity));
87
+ <%_ } else { _%>
88
+ return entities.stream()
89
+ .map(entity -> (ID) getEntityInformation().getId(entity))
90
+ .collect(Collectors.toList());
91
+ <%_ } _%>
92
+ }
114
93
  }
@@ -31,11 +31,11 @@ import static <%= packageName %>.config.Constants.ID_DELIMITER;
31
31
  public interface PersistentTokenRepository extends CouchbaseRepository<PersistentToken, String> {
32
32
 
33
33
  default Optional<PersistentToken> findBySeries(String series) {
34
- return findById(PersistentToken.PREFIX + ID_DELIMITER + series);
34
+ return findById(series);
35
35
  }
36
36
 
37
37
  default void deleteBySeries(String series) {
38
- deleteById(PersistentToken.PREFIX + ID_DELIMITER + series);
38
+ deleteById(series);
39
39
  }
40
40
 
41
41
  default List<PersistentToken> findByUser(<%= asEntity('User') %> user) {
@@ -2,7 +2,7 @@
2
2
  "login": "admin",
3
3
  <%_ if (!authenticationTypeOauth2) { _%>
4
4
  "password": "$2a$10$gSAhZrxMllrbgj/kkK9UceBPpChGWJA7SYIb1Mqo.n5aNLq1/oRrC",
5
- <% } %>
5
+ <%_ } _%>
6
6
  "firstName": "Administrator",
7
7
  "lastName": "Administrator",
8
8
  "email": "admin@localhost",
@@ -14,5 +14,5 @@
14
14
  "ROLE_USER",
15
15
  "ROLE_ADMIN"
16
16
  ],
17
- "_class": "<%= packageName %>.domain.<%= asEntity('User') %>"
17
+ "type": "user"
18
18
  }
@@ -2,7 +2,7 @@
2
2
  "login": "user",
3
3
  <%_ if (!authenticationTypeOauth2) { _%>
4
4
  "password": "$2a$10$VEjxo0jq2YG9Rbk2HmX9S.k1uZBGYUHdUcid3g/vfiEl7lwWgOH/K",
5
- <% } %>
5
+ <%_ } _%>
6
6
  "firstName": "User",
7
7
  "lastName": "User",
8
8
  "email": "user@localhost",
@@ -13,5 +13,5 @@
13
13
  "authorities": [
14
14
  "ROLE_USER"
15
15
  ],
16
- "_class": "<%= packageName %>.domain.<%= asEntity('User') %>"
16
+ "type": "user"
17
17
  }