generator-jhipster 7.3.0 → 7.5.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 (340) hide show
  1. package/cli/import-jdl.js +3 -2
  2. package/cli/jhipster-command.js +2 -2
  3. package/cli/program.js +32 -29
  4. package/generators/app/index.js +46 -27
  5. package/generators/aws/index.js +8 -8
  6. package/generators/aws/lib/eb.js +1 -1
  7. package/generators/azure-app-service/index.js +16 -9
  8. package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +2 -2
  9. package/generators/azure-spring-cloud/index.js +16 -9
  10. package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +2 -2
  11. package/generators/bootstrap/index.js +57 -62
  12. package/generators/ci-cd/index.js +11 -8
  13. package/generators/ci-cd/templates/github-actions.yml.ejs +1 -1
  14. package/generators/ci-cd/templates/travis.yml.ejs +9 -4
  15. package/generators/cleanup.js +27 -171
  16. package/generators/client/files-angular.js +12 -1
  17. package/generators/client/files-common.js +6 -2
  18. package/generators/client/files-react.js +13 -2
  19. package/generators/client/files-vue.js +59 -7
  20. package/generators/client/index.js +46 -32
  21. package/generators/client/needle-api/needle-client-angular.js +1 -1
  22. package/generators/client/needle-api/needle-client-vue.js +57 -7
  23. package/generators/client/templates/angular/.eslintrc.json.ejs +1 -0
  24. package/generators/client/templates/angular/angular.json.ejs +5 -0
  25. package/generators/client/templates/angular/jest.conf.js.ejs +2 -0
  26. package/generators/client/templates/angular/package.json +29 -29
  27. package/generators/client/templates/angular/package.json.ejs +3 -1
  28. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.spec.ts.ejs +52 -54
  29. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.ts.ejs +4 -4
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.service.spec.ts.ejs +65 -0
  31. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.spec.ts.ejs +35 -37
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.ts.ejs +1 -1
  33. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.spec.ts.ejs +78 -80
  34. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.ts.ejs +4 -4
  35. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.service.spec.ts.ejs +41 -0
  36. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.spec.ts.ejs +73 -75
  37. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +4 -4
  38. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.service.spec.ts.ejs +62 -0
  39. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.spec.ts.ejs +44 -46
  40. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.service.spec.ts.ejs +61 -0
  41. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.spec.ts.ejs +122 -123
  42. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.ts.ejs +1 -1
  43. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.service.spec.ts.ejs +66 -0
  44. package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.spec.ts.ejs +75 -77
  45. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +80 -80
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.spec.ts.ejs +48 -50
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +45 -47
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.ts.ejs +4 -4
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.service.spec.ts.ejs +66 -0
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.spec.ts.ejs +99 -101
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.spec.ts.ejs +61 -63
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +2 -2
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.spec.ts.ejs +28 -30
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.spec.ts.ejs +35 -37
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.spec.ts.ejs +40 -42
  56. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.spec.ts.ejs +89 -91
  57. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +4 -4
  58. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +81 -83
  59. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +8 -8
  60. package/generators/client/templates/angular/src/main/webapp/app/app-routing.module.ts.ejs +14 -3
  61. package/generators/client/templates/angular/src/main/webapp/app/app.module.ts.ejs +8 -29
  62. package/generators/client/templates/angular/src/main/webapp/app/config/datepicker-adapter.ts.ejs +1 -1
  63. package/generators/client/templates/angular/src/main/webapp/app/config/dayjs.ts.ejs +4 -4
  64. package/generators/client/templates/angular/src/main/webapp/app/core/auth/account.service.spec.ts.ejs +14 -9
  65. package/generators/client/templates/angular/src/main/webapp/app/core/tracker/tracker.service.ts.ejs +6 -6
  66. package/generators/client/templates/angular/src/main/webapp/app/core/util/parse-links.service.ts.ejs +1 -1
  67. package/generators/client/templates/angular/src/main/webapp/app/entities/entity-navbar-items.ts.ejs +29 -0
  68. package/generators/client/templates/angular/src/main/webapp/app/home/home.component.spec.ts.ejs +106 -98
  69. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.spec.ts.ejs +166 -168
  70. package/generators/client/templates/angular/src/main/webapp/app/layouts/main/main.component.ts.ejs +1 -1
  71. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +20 -0
  72. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.spec.ts.ejs +74 -70
  73. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +41 -2
  74. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.spec.ts.ejs +27 -29
  75. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.spec.ts.ejs +114 -115
  76. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.ts.ejs +4 -4
  77. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert-error.component.spec.ts.ejs +132 -134
  78. package/generators/client/templates/angular/src/main/webapp/app/shared/alert/alert.component.spec.ts.ejs +29 -31
  79. package/generators/client/templates/angular/src/main/webapp/app/shared/auth/has-any-authority.directive.spec.ts.ejs +4 -4
  80. package/generators/client/templates/angular/src/main/webapp/app/shared/date/duration.pipe.ts.ejs +1 -1
  81. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-date.pipe.spec.ts.ejs +1 -1
  82. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-date.pipe.ts.ejs +1 -1
  83. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-datetime.pipe.spec.ts.ejs +1 -1
  84. package/generators/client/templates/angular/src/main/webapp/app/shared/date/format-medium-datetime.pipe.ts.ejs +1 -1
  85. package/generators/client/templates/angular/src/main/webapp/app/shared/language/translate.directive.ts.ejs +6 -6
  86. package/generators/client/templates/angular/src/main/webapp/app/shared/language/translation.module.ts.ejs +83 -0
  87. package/generators/client/templates/angular/src/main/webapp/declarations.d.ts.ejs +16 -2
  88. package/generators/client/templates/angular/tsconfig.json.ejs +2 -0
  89. package/generators/client/templates/angular/tsconfig.spec.json.ejs +0 -1
  90. package/generators/client/templates/angular/webpack/proxy.conf.js.ejs +0 -2
  91. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +0 -16
  92. package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +12 -5
  93. package/generators/client/templates/common/package.json +6 -6
  94. package/generators/client/templates/common/src/main/webapp/robots.txt.ejs +0 -1
  95. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +86 -56
  96. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +56 -0
  97. package/generators/client/templates/react/.eslintrc.json.ejs +1 -0
  98. package/generators/client/templates/react/package.json +54 -53
  99. package/generators/client/templates/react/package.json.ejs +6 -1
  100. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +0 -3
  101. package/generators/client/templates/react/src/main/webapp/app/config/axios-interceptor.spec.ts.ejs +3 -2
  102. package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +2 -2
  103. package/generators/client/templates/react/src/main/webapp/app/modules/administration/configuration/configuration.tsx.ejs +2 -2
  104. package/generators/client/templates/react/src/main/webapp/app/modules/administration/gateway/gateway.tsx.ejs +2 -2
  105. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +6 -6
  106. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +8 -8
  107. package/generators/client/templates/react/src/main/webapp/app/modules/home/home.tsx.ejs +1 -1
  108. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.scss.ejs +9 -0
  109. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.tsx.ejs +2 -2
  110. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.tsx.ejs +3 -3
  111. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/admin.tsx.ejs +7 -7
  112. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-components.tsx.ejs +1 -1
  113. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/authentication.spec.ts.ejs +1 -1
  114. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +17 -3
  115. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +13 -1
  116. package/generators/client/templates/vue/.eslintrc.js.ejs +8 -5
  117. package/generators/client/templates/vue/package.json +40 -49
  118. package/generators/client/templates/vue/package.json.ejs +13 -17
  119. package/generators/client/templates/vue/src/main/webapp/app/account/account.service.ts.ejs +23 -12
  120. package/generators/client/templates/vue/src/main/webapp/app/account/settings/settings.vue.ejs +7 -1
  121. package/generators/client/templates/vue/src/main/webapp/app/admin/configuration/configuration.vue.ejs +1 -1
  122. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.component.ts.ejs +1 -1
  123. package/generators/client/templates/vue/src/main/webapp/app/constants.ts.ejs +16 -6
  124. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +27 -8
  125. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +6 -0
  126. package/generators/client/templates/vue/src/main/webapp/app/declarations.d.ts.ejs +41 -0
  127. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.component.ts.ejs +34 -0
  128. package/generators/client/templates/vue/src/main/webapp/app/entities/entities-menu.vue.ejs +13 -0
  129. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.component.ts.ejs +20 -0
  130. package/generators/client/templates/vue/src/main/webapp/app/entities/entities.vue.ejs +5 -0
  131. package/generators/client/templates/vue/src/main/webapp/app/entities/user/{user.oauth2.service.ts.ejs → user.service.ts.ejs} +1 -1
  132. package/generators/client/templates/vue/{webpack/utils.js.ejs → src/main/webapp/app/index.ts.ejs} +1 -12
  133. package/generators/client/templates/vue/src/main/webapp/app/locale/translation.service.ts.ejs +26 -9
  134. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +20 -18
  135. package/generators/client/templates/vue/src/main/webapp/app/router/entities.ts.ejs +45 -3
  136. package/generators/client/templates/vue/src/main/webapp/app/router/index.ts.ejs +19 -3
  137. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +0 -2
  138. package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +3 -1
  139. package/generators/client/templates/vue/src/main/webapp/app/shims-vue.d.ts.ejs +17 -3
  140. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +25 -10
  141. package/generators/client/templates/vue/src/test/javascript/spec/app/account/login-form/login-form.component.spec.ts.ejs +2 -2
  142. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management-edit.component.spec.ts.ejs +6 -4
  143. package/generators/client/templates/vue/src/test/javascript/spec/app/admin/user-management/user-management.component.spec.ts.ejs +4 -2
  144. package/generators/client/templates/vue/src/test/javascript/spec/app/core/jhi-navbar/jhi-navbar.component.spec.ts.ejs +10 -4
  145. package/generators/client/templates/vue/src/test/javascript/spec/app/entities/entities-menu.spec.ts.ejs +52 -0
  146. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.component.ts.ejs +4 -0
  147. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-menu.vue.ejs +7 -0
  148. package/generators/client/templates/vue/src/test/javascript/spec/app/microfrontends/entities-router.ts.ejs +1 -0
  149. package/generators/client/templates/vue/src/test/javascript/spec/app/shared/config/axios-interceptor.spec.ts.ejs +0 -1
  150. package/generators/client/templates/vue/tsconfig.json.ejs +6 -10
  151. package/generators/client/templates/vue/tsconfig.spec.json.ejs +37 -0
  152. package/generators/client/templates/vue/webpack/config.js.ejs +50 -0
  153. package/generators/client/templates/vue/webpack/vue.utils.js.ejs +33 -32
  154. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +150 -126
  155. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +19 -76
  156. package/generators/client/templates/vue/webpack/webpack.microfrontend.js.jhi.vue.ejs +77 -0
  157. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +5 -41
  158. package/generators/cloudfoundry/index.js +9 -9
  159. package/generators/common/index.js +12 -10
  160. package/generators/common/templates/.prettierrc.ejs +1 -1
  161. package/generators/common/templates/README.md.jhi.ejs +19 -0
  162. package/generators/common/templates/package.json +4 -4
  163. package/generators/cypress/index.js +12 -9
  164. package/generators/cypress/templates/cypress.json.ejs +16 -2
  165. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/login-page.spec.ts.ejs +3 -14
  166. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/password-page.spec.ts.ejs +33 -39
  167. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/register-page.spec.ts.ejs +52 -62
  168. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/reset-password-page.spec.ts.ejs +2 -10
  169. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/settings-page.spec.ts.ejs +25 -34
  170. package/generators/cypress/templates/src/test/javascript/cypress/integration/administration/administration.spec.ts.ejs +1 -22
  171. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +4 -4
  172. package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +67 -7
  173. package/generators/cypress/templates/src/test/javascript/cypress/support/entity.ts.ejs +4 -4
  174. package/generators/cypress/templates/src/test/javascript/cypress/support/index.ts.ejs +1 -6
  175. package/generators/cypress/templates/src/test/javascript/cypress/support/management.ts.ejs +1 -1
  176. package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +8 -8
  177. package/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +0 -9
  178. package/generators/database-changelog/index.js +33 -22
  179. package/generators/database-changelog-liquibase/index.js +12 -8
  180. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +1 -1
  181. package/generators/docker-compose/index.js +11 -12
  182. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +1 -1
  183. package/generators/entities/index.js +35 -26
  184. package/generators/entities-client/index.js +10 -7
  185. package/generators/entity/index.js +81 -32
  186. package/generators/entity-client/files.js +7 -16
  187. package/generators/entity-client/index.js +22 -12
  188. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.spec.ts.ejs +42 -44
  189. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +1 -1
  190. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.spec.ts.ejs +58 -60
  191. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +1 -35
  192. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
  193. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +4 -4
  194. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +110 -112
  195. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +9 -2
  196. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/infinite-scroll-template.ejs +8 -8
  197. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/no-pagination-template.ejs +8 -8
  198. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/pagination-template.ejs +8 -8
  199. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +15 -6
  200. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +1 -1
  201. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +1 -1
  202. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.ts.ejs +1 -1
  203. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +203 -198
  204. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +5 -5
  205. package/generators/entity-client/templates/angular/src/test/javascript/e2e/entities/entity.spec.ts.ejs +1 -1
  206. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +264 -127
  207. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +17 -14
  208. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.reducer.ts.ejs +5 -4
  209. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +11 -13
  210. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +32 -25
  211. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.vue.ejs +6 -9
  212. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.component.ts.ejs +2 -1
  213. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.model.ts.ejs +1 -1
  214. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity.service.ts.ejs +2 -6
  215. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity-update.component.spec.ts.ejs +10 -7
  216. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.component.spec.ts.ejs +5 -1
  217. package/generators/entity-client/templates/vue/src/test/javascript/spec/app/entities/entity.service.spec.ts.ejs +1 -1
  218. package/generators/entity-i18n/index.js +7 -4
  219. package/generators/entity-server/files.js +14 -0
  220. package/generators/entity-server/index.js +12 -8
  221. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +2 -2
  222. package/generators/entity-server/templates/src/main/java/package/common/search_template.ejs +1 -1
  223. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +9 -8
  224. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +16 -29
  225. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +3 -3
  226. package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +46 -0
  227. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +1 -1
  228. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +18 -2
  229. package/generators/entity-server/templates/src/main/java/package/repository/search/SortToFieldSortBuilderConverter.java.ejs +24 -0
  230. package/generators/entity-server/templates/src/main/java/package/service/dto/EntityDTO.java.ejs +8 -6
  231. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +5 -1
  232. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +41 -43
  233. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +3 -3
  234. package/generators/gae/index.js +10 -10
  235. package/generators/generator-base-blueprint.js +14 -46
  236. package/generators/generator-base-private.js +44 -23
  237. package/generators/generator-base.js +58 -18
  238. package/generators/generator-constants.js +30 -23
  239. package/generators/generator-transforms.js +39 -27
  240. package/generators/heroku/index.js +14 -33
  241. package/generators/init/constants.cjs +1 -1
  242. package/generators/java/constants.cjs +1 -1
  243. package/generators/kubernetes/files.js +3 -0
  244. package/generators/kubernetes/index.js +10 -10
  245. package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -1
  246. package/generators/kubernetes/templates/deployment.yml.ejs +8 -3
  247. package/generators/kubernetes/templates/istio/destination-rule.yml.ejs +1 -1
  248. package/generators/kubernetes/templates/istio/gateway/grafana-gateway.yml.ejs +5 -2
  249. package/generators/kubernetes/templates/istio/gateway/jhipster-grafana-gateway.yml.ejs +5 -2
  250. package/generators/kubernetes/templates/istio/gateway/kiali-gateway.yml.ejs +10 -8
  251. package/generators/kubernetes/templates/istio/gateway/zipkin-gateway.yml.ejs +5 -2
  252. package/generators/kubernetes/templates/istio/gateway.yml.ejs +7 -5
  253. package/generators/kubernetes/templates/secret/couchbase-secret.yml.ejs +9 -0
  254. package/generators/kubernetes-base.js +1 -0
  255. package/generators/kubernetes-helm/files.js +3 -8
  256. package/generators/kubernetes-helm/index.js +10 -10
  257. package/generators/kubernetes-helm/templates/README-KUBERNETES-HELM.md.ejs +0 -1
  258. package/generators/kubernetes-helm/templates/app/Chart.yml.ejs +5 -0
  259. package/generators/kubernetes-helm/templates/app/helpers.tpl.ejs +0 -11
  260. package/generators/kubernetes-helm/templates/app/requirements.yml.ejs +5 -0
  261. package/generators/kubernetes-helm/templates/app/values.yml.ejs +68 -5
  262. package/generators/kubernetes-helm/templates/csvc/Chart.yml.ejs +1 -1
  263. package/generators/kubernetes-helm/templates/csvc/requirements.yml.ejs +1 -1
  264. package/generators/kubernetes-knative/index.js +10 -10
  265. package/generators/kubernetes-knative/templates/istio/gateway.yml.ejs +6 -4
  266. package/generators/kubernetes-knative/templates/service.yml.ejs +1 -1
  267. package/generators/languages/index.js +13 -13
  268. package/generators/languages/templates/src/main/webapp/i18n/vi/login.json +1 -1
  269. package/generators/openapi-client/index.js +13 -10
  270. package/generators/openshift/index.js +10 -11
  271. package/generators/openshift/templates/deployment.yml.ejs +1 -1
  272. package/generators/page/index.js +12 -10
  273. package/generators/server/__snapshots__/generator.spec.mjs.snap +28 -15
  274. package/generators/server/cleanup.js +151 -0
  275. package/generators/server/files-sql.js +52 -0
  276. package/generators/server/files.js +31 -14
  277. package/generators/server/index.js +86 -33
  278. package/generators/server/templates/build.gradle.ejs +231 -189
  279. package/generators/server/templates/gradle.properties.ejs +12 -12
  280. package/generators/server/templates/npmw +8 -6
  281. package/generators/server/templates/npmw.cmd +13 -8
  282. package/generators/server/templates/pom.xml.ejs +425 -217
  283. package/generators/server/templates/sql/reactive/src/main/java/package/repository/UserSqlHelper.java.ejs +48 -0
  284. package/generators/server/templates/src/main/docker/app.yml.ejs +1 -1
  285. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +2 -2
  286. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration.java.ejs +3 -2
  287. package/generators/server/templates/src/main/java/package/config/OpenApiConfiguration.java.ejs +17 -54
  288. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +5 -5
  289. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +4 -6
  290. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +0 -3
  291. package/generators/server/templates/src/main/java/package/config/neo4j/Neo4jMigrations.java.ejs +19 -9
  292. package/generators/server/templates/src/main/java/package/management/SecurityMetersService.java.ejs +68 -0
  293. package/generators/server/templates/src/main/java/package/repository/AuthorityRepository.java.ejs +2 -2
  294. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +0 -25
  295. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +31 -4
  296. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +23 -11
  297. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +16 -8
  298. package/generators/server/templates/src/main/java/package/service/dto/UserDTO.java.ejs +6 -6
  299. package/generators/server/templates/src/main/java/package/web/filter/ModifyServersOpenApiFilter.java.ejs +3 -2
  300. package/generators/server/templates/src/main/java/package/web/filter/SpaWebFilter.java.ejs +1 -1
  301. package/generators/server/templates/src/main/java/package/web/rest/PublicUserResource.java.ejs +2 -2
  302. package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +2 -2
  303. package/generators/server/templates/src/main/resources/config/application.yml.ejs +22 -8
  304. package/generators/server/templates/src/main/resources/logback-spring.xml.ejs +1 -2
  305. package/generators/server/templates/src/main/resources/static/microservices_index.html.ejs +1 -1
  306. package/generators/server/templates/src/test/java/package/cucumber/CucumberIT.java.ejs +2 -6
  307. package/generators/server/templates/src/test/java/package/cucumber/CucumberTestContextConfiguration.java.ejs +2 -3
  308. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/UserStepDefs.java.ejs +41 -6
  309. package/generators/server/templates/src/test/java/package/management/SecurityMetersServiceTests.java.ejs +113 -0
  310. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +6 -1
  311. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderSecurityMetersTests.java.ejs +198 -0
  312. package/generators/server/templates/src/test/java/package/security/jwt/TokenProviderTest.java.ejs +13 -3
  313. package/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +17 -3
  314. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +63 -0
  315. package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +1 -1
  316. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +2 -3
  317. package/generators/server/templates/src/test/java/package/web/rest/ClientForwardControllerTest.java.ejs +9 -0
  318. package/generators/server/templates/src/test/resources/junit-platform.properties.ejs +2 -0
  319. package/generators/server/templates/src/test/resources/logback.xml.ejs +1 -1
  320. package/generators/server/templates/src/test/{features → resources/package/features}/gitkeep +0 -0
  321. package/generators/server/templates/src/test/{features → resources/package/features}/user/user.feature.ejs +0 -0
  322. package/generators/spring-controller/index.js +9 -7
  323. package/generators/spring-controller/templates/src/test/java/package/web/rest/ResourceIT.java.ejs +1 -1
  324. package/generators/spring-service/index.js +10 -7
  325. package/generators/upgrade/index.js +4 -5
  326. package/generators/utils.js +2 -2
  327. package/generators/workspaces/index.js +16 -7
  328. package/jdl/jhipster/default-application-options.js +9 -7
  329. package/package.json +22 -22
  330. package/utils/entity.js +17 -4
  331. package/utils/field.js +11 -1
  332. package/utils/multi-step-transform/index.js +8 -8
  333. package/generators/client/templates/react/.npmrc.ejs +0 -1
  334. package/generators/client/templates/vue/webpack/dev.env.js.ejs +0 -17
  335. package/generators/client/templates/vue/webpack/env.js.ejs +0 -67
  336. package/generators/client/templates/vue/webpack/loader.conf.js.ejs +0 -20
  337. package/generators/client/templates/vue/webpack/prod.env.js.ejs +0 -15
  338. package/generators/server/templates/src/main/java/package/config/apidocs/GatewaySwaggerResourcesProvider.java.ejs +0 -91
  339. package/generators/server/templates/src/test/java/package/config/apidocs/GatewaySwaggerResourcesProviderTest.java.ejs +0 -79
  340. package/generators/server/templates/src/test/resources/cucumber.properties.ejs +0 -1
@@ -0,0 +1,46 @@
1
+ <%#
2
+ Copyright 2013-2021 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 <%= entityAbsolutePackage %>.repository;
20
+
21
+ import java.util.ArrayList;
22
+ import java.util.List;
23
+
24
+ import org.springframework.data.relational.core.sql.Column;
25
+ import org.springframework.data.relational.core.sql.Expression;
26
+ import org.springframework.data.relational.core.sql.Table;
27
+
28
+ public class <%= entityClass %>SqlHelper {
29
+
30
+ public static List<Expression> getColumns(Table table, String columnPrefix) {
31
+ List<Expression> columns = new ArrayList<>();
32
+ <%_ fields.forEach(function(field) {
33
+ let col = field.fieldNameAsDatabaseColumn;
34
+ _%>
35
+ columns.add(Column.aliased("<%= col %>", table, columnPrefix + "_<%= col %>"));
36
+ <%_ if ((field.fieldTypeBinary) && !field.blobContentTypeText) { _%>
37
+ columns.add(Column.aliased("<%= col %>_content_type", table, columnPrefix + "_<%= col %>_content_type"));
38
+ <%_ } _%>
39
+ <%_ }); _%>
40
+
41
+ <%_ reactiveRegularEagerRelations.forEach(function(rel) { _%>
42
+ columns.add(Column.aliased("<%= getColumnName(rel.relationshipName) %>_id", table, columnPrefix + "_<%= getColumnName(rel.relationshipName) %>_id"));
43
+ <%_ }); _%>
44
+ return columns;
45
+ }
46
+ }
@@ -39,7 +39,7 @@ import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
39
39
  <%_ Object.keys(uniqueEnums).forEach(function(element) { _%>
40
40
  import <%= entityAbsolutePackage %>.domain.enumeration.<%= element %>;
41
41
  <%_ }); _%>
42
- import <%= entityAbsolutePackage %>.service.ColumnConverter;
42
+ import <%= packageName %>.service.ColumnConverter;
43
43
 
44
44
  import io.r2dbc.spi.Row;
45
45
 
@@ -29,6 +29,12 @@ import org.springframework.data.domain.Page;
29
29
  import org.springframework.data.domain.PageImpl;
30
30
  <%_ } _%>
31
31
  import org.springframework.data.domain.Pageable;
32
+ import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
33
+ import org.elasticsearch.search.sort.FieldSortBuilder;
34
+ import java.util.List;
35
+ import org.springframework.data.domain.PageRequest;
36
+
37
+
32
38
  <%_ } _%>
33
39
  <%_ if (reactive) { _%>
34
40
  import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate;
@@ -72,9 +78,19 @@ class <%= entityClass %>SearchRepositoryInternalImpl implements <%= entityClass
72
78
 
73
79
  @Override
74
80
  public Flux<<%= entityClass %>> search(String query<% if (!paginationNo) { %>, Pageable pageable<% } %>) {
75
- NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryStringQuery(query));
76
81
  <%_ if (!paginationNo) { _%>
77
- nativeSearchQuery.setPageable(pageable);
82
+ List<FieldSortBuilder> builders = new SortToFieldSortBuilderConverter().convert(pageable.getSort());
83
+
84
+ NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder().withQuery(queryStringQuery(query))
85
+ .withPageable(PageRequest.of(pageable.getPageNumber(), pageable.getPageSize()));
86
+
87
+ builders.stream().forEach(builder -> {
88
+ queryBuilder.withSort(builder);
89
+ });
90
+
91
+ NativeSearchQuery nativeSearchQuery = queryBuilder.build();
92
+ <%_ } else { _%>
93
+ NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryStringQuery(query));
78
94
  <%_ } _%>
79
95
  return reactiveElasticsearchTemplate
80
96
  .search(nativeSearchQuery, <%= entityClass %>.class)
@@ -0,0 +1,24 @@
1
+ package <%= entityAbsolutePackage %>.repository.search;
2
+
3
+ import org.elasticsearch.search.sort.FieldSortBuilder;
4
+ import org.elasticsearch.search.sort.SortOrder;
5
+ import org.springframework.core.convert.converter.Converter;
6
+ import org.springframework.data.domain.Sort;
7
+
8
+ import java.util.ArrayList;
9
+ import java.util.List;
10
+
11
+ public class SortToFieldSortBuilderConverter implements Converter<Sort, List<FieldSortBuilder>> {
12
+
13
+ @Override
14
+ public List<FieldSortBuilder> convert(Sort sort) {
15
+ List<FieldSortBuilder> builders = new ArrayList<>();
16
+ sort.stream().forEach(order -> {
17
+ String property = order.getProperty() + ".keyword";
18
+ SortOrder sortOrder = SortOrder.fromString(order.getDirection().name());
19
+ builders.add(new FieldSortBuilder(property).order(sortOrder));
20
+
21
+ });
22
+ return builders;
23
+ }
24
+ }
@@ -19,10 +19,8 @@
19
19
  package <%= entityAbsolutePackage %>.service.dto;
20
20
 
21
21
  import java.util.Objects;
22
- <%_ if (typeof javadoc !== 'undefined') { _%>
23
- import io.swagger.annotations.ApiModel;
24
- <%_ } if (importApiModelProperty) { _%>
25
- import io.swagger.annotations.ApiModelProperty;
22
+ <%_ if (typeof javadoc !== 'undefined' || importApiModelProperty) { _%>
23
+ import io.swagger.v3.oas.annotations.media.Schema;
26
24
  <%_ } _%>
27
25
  <%_ if (fieldsContainInstant) { _%>
28
26
  import java.time.Instant;
@@ -60,11 +58,15 @@ import javax.persistence.Lob;
60
58
  import <%= entityAbsolutePackage %>.domain.enumeration.<%= element %>;
61
59
  <%_ }); _%>
62
60
 
61
+ <%_ for (const otherEntity of otherEntities.filter(otherEntity => otherEntity.entityPackage !== entityPackage)) { _%>
62
+ import <%= `${otherEntity.entityAbsolutePackage}.service.dto.${otherEntity.dtoClass}` %>;
63
+ <%_ } _%>
64
+
63
65
  /**
64
66
  * A DTO for the {@link <%= entityAbsolutePackage %>.domain.<%= persistClass %>} entity.
65
67
  */
66
68
  <%_ if (typeof javadoc !== 'undefined') { _%>
67
- @ApiModel(description = "<%- formatAsApiDescription(javadoc) %>")
69
+ @Schema(description = "<%- formatAsApiDescription(javadoc) %>")
68
70
  <%_ } _%>
69
71
  public class <%= dtoClass %> implements Serializable {
70
72
 
@@ -81,7 +83,7 @@ _%>
81
83
  <%_ }
82
84
  } _%>
83
85
  <%_ if (reference.doc) { _%>
84
- @ApiModelProperty(value = "<%- formatAsApiDescription(reference.doc) %>"<% if (required) { %>, required = true<% } %>)
86
+ @Schema(description = "<%- formatAsApiDescription(reference.doc) %>"<% if (required) { %>, required = true<% } %>)
85
87
  <%_ } _%>
86
88
  <%_ if (field && field.fieldTypeBytes && databaseTypeSql) { _%>
87
89
  @Lob
@@ -38,9 +38,13 @@ _%>
38
38
  import java.util.Set;
39
39
  <%_ } _%>
40
40
 
41
- import <%= entityAbsolutePackage %>.domain.*;
41
+ import <%= entityAbsoluteClass %>;
42
42
  import <%= entityAbsolutePackage %>.service.dto.<%= dtoClass %>;
43
43
 
44
+ <%_ for (const otherEntity of _.uniq(dtoReferences.filter(ref => ref.relationship).map(ref => ref.relationship.otherEntity).filter(otherEntity => otherEntity.entityPackage !== entityPackage))) { _%>
45
+ import <%= `${otherEntity.entityAbsolutePackage}.service.mapper.${otherEntity.entityClass}Mapper` %>;
46
+ <%_ } _%>
47
+
44
48
  import org.mapstruct.*;
45
49
  <%_ if (uuidMapMethod) { _%>
46
50
 
@@ -20,14 +20,6 @@ package <%= entityAbsolutePackage %>.web.rest;
20
20
 
21
21
  <%_
22
22
  const viaService = !serviceNo;
23
-
24
- let manyToManyWithUser = false;
25
- for (const relationship of relationships) {
26
- if (relationship.otherEntityUser && relationship.relationshipManyToMany) {
27
- manyToManyWithUser = true;
28
- break;
29
- }
30
- }
31
23
  _%>
32
24
  <%_ if (!dtoMapstruct || serviceNo) { _%>
33
25
  import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
@@ -73,7 +65,6 @@ import org.springframework.data.domain.Pageable;
73
65
  import org.springframework.data.domain.PageImpl;
74
66
  <%_ } _%>
75
67
  import org.springframework.http.HttpHeaders;
76
- import org.springframework.http.HttpStatus;
77
68
  <%_ if (reactive) { _%>
78
69
  import org.springframework.http.server.reactive.ServerHttpRequest;
79
70
  <%_ } _%>
@@ -82,7 +73,8 @@ import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
82
73
  <%_ } else { _%>
83
74
  import org.springframework.web.util.UriComponentsBuilder;
84
75
  <%_ } _%>
85
- <%_ } else if (reactive) { _%>
76
+ <%_ } _%>
77
+ <%_ if (reactive || (!jpaMetamodelFiltering && !paginationNo)) { _%>
86
78
  import org.springframework.http.HttpStatus;
87
79
  <%_ } _%>
88
80
  <%_ if (reactive) { _%>
@@ -177,17 +169,19 @@ public class <%= entityClass %>Resource {
177
169
  throw new BadRequestAlertException("A new <%= entityInstance %> cannot already have an ID", ENTITY_NAME, "idexists");
178
170
  }
179
171
  <%_ if (saveUserSnapshot) { _%>
180
- <%_ if (manyToManyWithUser) { _%>
181
- if (<%= instanceName %>.getUsers() != null) {
182
- // Save users in case they are new and only exists in gateway
183
- userRepository.saveAll(<%= instanceName %>.getUsers());
184
- }
185
- <%_ } else { _%>
186
- if (<%= instanceName %>.getUser() != null) {
187
- // Save user in case it's new and only exists in gateway
188
- userRepository.save(<%= instanceName %>.getUser());
189
- }
190
- <%_ } _%>
172
+ <% for (const userRelationship of relationships.filter(rel => rel.otherEntity.builtInUser)) { %>
173
+ <%_ if (userRelationship.collection) { _%>
174
+ if (<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalizedPlural %>() != null) {
175
+ // Save users in case they are new and only exist in gateway
176
+ userRepository.saveAll(<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalizedPlural %>());
177
+ }
178
+ <%_ } else { _%>
179
+ if (<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalized %>() != null) {
180
+ // Save user in case it's new and only exists in gateway
181
+ userRepository.save(<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalized %>());
182
+ }
183
+ <%_ } _%>
184
+ <% } %>
191
185
  <%_ } _%>
192
186
  <%_ for (field of primaryKey.fields.filter(f => f.autoGenerateByService)) { _%>
193
187
  <%= instanceName %>.set<%= field.fieldNameCapitalized %>(UUID.randomUUID());
@@ -245,17 +239,19 @@ public class <%= entityClass %>Resource {
245
239
  <%_ } _%>
246
240
 
247
241
  <%_ if (saveUserSnapshot) { _%>
248
- <%_ if (manyToManyWithUser) { _%>
249
- if (<%= instanceName %>.getUsers() != null) {
250
- // Save users in case they are new and only exists in gateway
251
- userRepository.saveAll(<%= instanceName %>.getUsers());
252
- }
253
- <%_ } else { _%>
254
- if (<%= instanceName %>.getUser() != null) {
255
- // Save user in case it's new and only exists in gateway
256
- userRepository.save(<%= instanceName %>.getUser());
257
- }
258
- <%_ } _%>
242
+ <% for (const userRelationship of relationships.filter(rel => rel.otherEntity.builtInUser)) { %>
243
+ <%_ if (userRelationship.collection) { _%>
244
+ if (<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalizedPlural %>() != null) {
245
+ // Save users in case they are new and only exist in gateway
246
+ userRepository.saveAll(<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalizedPlural %>());
247
+ }
248
+ <%_ } else { _%>
249
+ if (<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalized %>() != null) {
250
+ // Save user in case it's new and only exists in gateway
251
+ userRepository.save(<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalized %>());
252
+ }
253
+ <%_ } _%>
254
+ <% } %>
259
255
  <%_ } _%>
260
256
  <%- include('/partials/save_template', {asEntity, asDto, viaService: viaService, returnDirectly: false, isUsingMapsId: false, mapsIdAssoc: mapsIdAssoc}); -%>
261
257
  <%_ if (!reactive) { _%>
@@ -308,17 +304,19 @@ public class <%= entityClass %>Resource {
308
304
  <%_ } _%>
309
305
 
310
306
  <%_ if (saveUserSnapshot) { _%>
311
- <%_ if (manyToManyWithUser) { _%>
312
- if (<%= instanceName %>.getUsers() != null) {
313
- // Save users in case they are new and only exists in gateway
314
- userRepository.saveAll(<%= instanceName %>.getUsers());
315
- }
316
- <%_ } else { _%>
317
- if (<%= instanceName %>.getUser() != null) {
318
- // Save user in case it's new and only exists in gateway
319
- userRepository.save(<%= instanceName %>.getUser());
320
- }
321
- <%_ } _%>
307
+ <% for (const userRelationship of relationships.filter(rel => rel.otherEntity.builtInUser)) { %>
308
+ <%_ if (userRelationship.collection) { _%>
309
+ if (<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalizedPlural %>() != null) {
310
+ // Save users in case they are new and only exist in gateway
311
+ userRepository.saveAll(<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalizedPlural %>());
312
+ }
313
+ <%_ } else { _%>
314
+ if (<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalized %>() != null) {
315
+ // Save user in case it's new and only exists in gateway
316
+ userRepository.save(<%= instanceName %>.get<%= userRelationship.relationshipNameCapitalized %>());
317
+ }
318
+ <%_ } _%>
319
+ <% } %>
322
320
  <%_ } _%>
323
321
 
324
322
  <%- include('../../common/patch_template', {asEntity, asDto, isService: false, viaService: viaService}); -%>
@@ -48,7 +48,7 @@ if (databaseTypeSql && reactive) {
48
48
  let idValue = `${persistInstance}.get${primaryKey.nameCapitalized}()`;
49
49
  if (primaryKey.typeLong) {
50
50
  idValue = idValue + '.intValue()';
51
- } else if (primaryKey.type === 'UUID') {
51
+ } else if (primaryKey.typeUUID) {
52
52
  idValue = idValue + '.toString()';
53
53
  }
54
54
  let transactionalAnnotation = '';
@@ -84,7 +84,7 @@ import <%= entityAbsolutePackage %>.repository.UserRepository;
84
84
  <%_ } _%>
85
85
  import <%= entityAbsolutePackage %>.repository.<%= entityClass %>Repository;
86
86
  <%_ if (databaseTypeSql && reactive) { _%>
87
- import <%= entityAbsolutePackage %>.service.EntityManager;
87
+ import <%= packageName %>.service.EntityManager;
88
88
  <%_ } _%>
89
89
  <%_ if (isUsingMapsId && (!dtoMapstruct && serviceNo)) { _%>
90
90
  import <%= entityAbsolutePackage %>.repository.<%= mapsIdAssoc.otherEntityNameCapitalized %>Repository;
@@ -815,7 +815,7 @@ _%>
815
815
  <%_ } _%>
816
816
  <%= entityInstance %>Repository.save(<%= persistInstance %>)<%= callBlock %>;
817
817
 
818
- List<<%= entityClass %>> <%= entityInstance %>List = webTestClient.get().uri(ENTITY_API_URL)
818
+ List<<%= asEntity(entityClass) %>> <%= entityInstance %>List = webTestClient.get().uri(ENTITY_API_URL)
819
819
  .accept(MediaType.APPLICATION_NDJSON)
820
820
  .exchange()
821
821
  .expectStatus().isOk()
@@ -35,11 +35,11 @@ const { MAVEN, GRADLE } = require('../../jdl/jhipster/build-tool-types');
35
35
 
36
36
  const NO_CACHE_PROVIDER = cacheProviders.NO;
37
37
 
38
- let useBlueprints;
39
38
  module.exports = class extends BaseBlueprintGenerator {
40
- constructor(args, options, features) {
41
- super(args, options, features);
42
- useBlueprints = !this.fromBlueprint && this.instantiateBlueprints(GENERATOR_GAE);
39
+ async _postConstruct() {
40
+ if (!this.fromBlueprint) {
41
+ await this.composeWithBlueprints(GENERATOR_GAE);
42
+ }
43
43
  }
44
44
 
45
45
  _initializing() {
@@ -121,7 +121,7 @@ module.exports = class extends BaseBlueprintGenerator {
121
121
  }
122
122
 
123
123
  get initializing() {
124
- if (useBlueprints) return;
124
+ if (this.delegateToBlueprint) return {};
125
125
  return this._initializing();
126
126
  }
127
127
 
@@ -607,7 +607,7 @@ module.exports = class extends BaseBlueprintGenerator {
607
607
  }
608
608
 
609
609
  get prompting() {
610
- if (useBlueprints) return;
610
+ if (this.delegateToBlueprint) return {};
611
611
  return this._prompting();
612
612
  }
613
613
 
@@ -748,7 +748,7 @@ module.exports = class extends BaseBlueprintGenerator {
748
748
  }
749
749
 
750
750
  get configuring() {
751
- if (useBlueprints) return;
751
+ if (this.delegateToBlueprint) return {};
752
752
  return this._configuring();
753
753
  }
754
754
 
@@ -761,7 +761,7 @@ module.exports = class extends BaseBlueprintGenerator {
761
761
  }
762
762
 
763
763
  get loading() {
764
- if (useBlueprints) return;
764
+ if (this.delegateToBlueprint) return {};
765
765
  return this._loading();
766
766
  }
767
767
 
@@ -831,7 +831,7 @@ module.exports = class extends BaseBlueprintGenerator {
831
831
  }
832
832
 
833
833
  get writing() {
834
- if (useBlueprints) return;
834
+ if (this.delegateToBlueprint) return {};
835
835
  return this._writing();
836
836
  }
837
837
 
@@ -877,7 +877,7 @@ module.exports = class extends BaseBlueprintGenerator {
877
877
  }
878
878
 
879
879
  get end() {
880
- if (useBlueprints) return;
880
+ if (this.delegateToBlueprint) return {};
881
881
  return this._end();
882
882
  }
883
883
 
@@ -51,8 +51,13 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
51
51
  // jhipsterContext is the original generator
52
52
  this.jhipsterContext = this.options.jhipsterContext;
53
53
 
54
- // Fallback to the original generator if the file does not exists in the blueprint.
55
- this.jhipsterTemplatesFolders.push(this.jhipsterTemplatePath());
54
+ try {
55
+ // Fallback to the original generator if the file does not exists in the blueprint.
56
+ this.jhipsterTemplatesFolders.push(this.jhipsterTemplatePath());
57
+ } catch (error) {
58
+ this.warning('Error adding current blueprint templates as alternative for JHipster templates.');
59
+ this.log(error);
60
+ }
56
61
  }
57
62
  }
58
63
 
@@ -224,44 +229,6 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
224
229
  return false;
225
230
  }
226
231
 
227
- /**
228
- * @private
229
- * @deprecated
230
- * Instantiates the blueprint generators, if any.
231
- * @param {string} subGen - sub generator
232
- * @param {any} extraOptions - extra options to pass to blueprint generator
233
- * @return {true} useBlueprints - true if one or more blueprints generators have been constructed; false otherwise
234
- */
235
- instantiateBlueprints(subGen, extraOptions) {
236
- if (this.options.help) {
237
- // Ignore blueprint registered options.
238
- return false;
239
- }
240
- let useBlueprints = false;
241
-
242
- if (!this.configOptions.blueprintConfigured) {
243
- this.configOptions.blueprintConfigured = true;
244
- this._configureBlueprints();
245
- }
246
-
247
- const blueprints = this.jhipsterConfig.blueprints;
248
- if (blueprints && blueprints.length > 0) {
249
- blueprints.forEach(blueprint => {
250
- const blueprintGenerator = this._composeBlueprint(blueprint.name, subGen, extraOptions);
251
- if (blueprintGenerator) {
252
- if (blueprintGenerator.sbsBlueprint) {
253
- // If sbsBlueprint, add templatePath to the original generator templatesFolder.
254
- this.jhipsterTemplatesFolders.unshift(blueprintGenerator.templatePath());
255
- } else {
256
- // If the blueprints does not sets sbsBlueprint property, ignore normal workflow.
257
- useBlueprints = true;
258
- }
259
- }
260
- });
261
- }
262
- return useBlueprints;
263
- }
264
-
265
232
  /**
266
233
  * @private
267
234
  * Composes with blueprint generators, if any.
@@ -353,7 +320,7 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
353
320
  * @param {any} options - options to pass to blueprint generator
354
321
  * @return {Generator|undefined}
355
322
  */
356
- _composeBlueprint(blueprint, subGen, extraOptions = {}) {
323
+ async _composeBlueprint(blueprint, subGen, extraOptions = {}) {
357
324
  blueprint = normalizeBlueprintName(blueprint);
358
325
  if (!this.configOptions.skipChecks && !this.options.skipChecks) {
359
326
  this._checkBlueprint(blueprint);
@@ -362,16 +329,17 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
362
329
  const generatorName = packageNameToNamespace(blueprint);
363
330
  const generatorNamespace = `${generatorName}:${subGen}`;
364
331
  if (!this.env.isPackageRegistered(generatorName)) {
365
- this.env.lookup({ filterPaths: true, packagePatterns: blueprint });
332
+ await this.env.lookup({ filterPaths: true, packagePatterns: blueprint });
366
333
  }
367
- if (!this.env.get(generatorNamespace)) {
334
+ if (!(await this.env.get(generatorNamespace))) {
368
335
  this.debug(
369
- `No blueprint found for blueprint ${chalk.yellow(blueprint)} and ${chalk.yellow(
370
- subGen
336
+ `No blueprint found for blueprint ${chalk.yellow(blueprint)} and ${chalk.yellow(subGen)} with namespace ${chalk.yellow(
337
+ generatorNamespace
371
338
  )} subgenerator: falling back to default generator`
372
339
  );
373
340
  return undefined;
374
341
  }
342
+ this.debug(`Found blueprint ${chalk.yellow(blueprint)} and ${chalk.yellow(subGen)} with namespace ${chalk.yellow(generatorNamespace)}`);
375
343
 
376
344
  const finalOptions = {
377
345
  ...this.options,
@@ -380,7 +348,7 @@ module.exports = class JHipsterBaseBlueprintGenerator extends BaseGenerator {
380
348
  jhipsterContext: this,
381
349
  };
382
350
 
383
- const blueprintGenerator = this.composeWith(generatorNamespace, finalOptions, true);
351
+ const blueprintGenerator = await this.composeWith(generatorNamespace, finalOptions, true);
384
352
  if (blueprintGenerator instanceof Error) {
385
353
  throw blueprintGenerator;
386
354
  }
@@ -29,16 +29,13 @@ const https = require('https');
29
29
  const { reproducibleConfigForTests: projectNameReproducibleConfigForTests } = require('./project-name/config.cjs');
30
30
  const packagejs = require('../package.json');
31
31
  const jhipsterUtils = require('./utils');
32
- const constants = require('./generator-constants');
32
+ const { JAVA_COMPATIBLE_VERSIONS, SERVER_TEST_SRC_DIR, SUPPORTED_CLIENT_FRAMEWORKS } = require('./generator-constants');
33
33
  const { languageToJavaLanguage } = require('./utils');
34
34
  const JSONToJDLEntityConverter = require('../jdl/converters/json-to-jdl-entity-converter');
35
35
  const JSONToJDLOptionConverter = require('../jdl/converters/json-to-jdl-option-converter');
36
36
  const { stringify } = require('../utils');
37
37
 
38
- const SERVER_TEST_SRC_DIR = constants.SERVER_TEST_SRC_DIR;
39
- const ANGULAR = constants.SUPPORTED_CLIENT_FRAMEWORKS.ANGULAR;
40
- const REACT = constants.SUPPORTED_CLIENT_FRAMEWORKS.REACT;
41
- const VUE = constants.SUPPORTED_CLIENT_FRAMEWORKS.VUE;
38
+ const { ANGULAR, REACT, VUE } = SUPPORTED_CLIENT_FRAMEWORKS;
42
39
  const dbTypes = require('../jdl/jhipster/field-types');
43
40
  const { REQUIRED } = require('../jdl/jhipster/validations');
44
41
 
@@ -358,7 +355,8 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
358
355
  }
359
356
  try {
360
357
  const content = languages.reduce(
361
- (content, language) => `${content}import 'dayjs/locale/${this.getDayjsLocaleId(language)}'\n`,
358
+ (content, language) =>
359
+ `${content}import 'dayjs/${this.clientFrameworkAngular ? 'esm/' : ''}locale/${this.getDayjsLocaleId(language)}'\n`,
362
360
  '// jhipster-needle-i18n-language-dayjs-imports - JHipster will import languages from dayjs here\n'
363
361
  );
364
362
 
@@ -809,17 +807,12 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
809
807
  this.warning('Java is not found on your computer.');
810
808
  } else {
811
809
  const javaVersion = stderr.match(/(?:java|openjdk) version "(.*)"/)[1];
812
- if (
813
- !javaVersion.match(new RegExp('16')) &&
814
- !javaVersion.match(new RegExp('15')) &&
815
- !javaVersion.match(new RegExp('14')) &&
816
- !javaVersion.match(new RegExp('13')) &&
817
- !javaVersion.match(new RegExp('12')) &&
818
- !javaVersion.match(new RegExp('11')) &&
819
- !javaVersion.match(new RegExp('1.8'.replace('.', '\\.')))
820
- ) {
810
+ if (!javaVersion.match(new RegExp(`(${JAVA_COMPATIBLE_VERSIONS.map(ver => `^${ver}`).join('|')})`))) {
811
+ const [latest, ...others] = JAVA_COMPATIBLE_VERSIONS.reverse();
821
812
  this.warning(
822
- `Java 8, 11, 12, 13, 14, 15 or 16 are not found on your computer. Your Java version is: ${chalk.yellow(javaVersion)}`
813
+ `Java ${others.reverse().join(', ')} or ${latest} are not found on your computer. Your Java version is: ${chalk.yellow(
814
+ javaVersion
815
+ )}`
823
816
  );
824
817
  }
825
818
  }
@@ -995,8 +988,9 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
995
988
  const fileName = _.kebabCase(field.fieldType);
996
989
  if (field.fieldIsEnum && (!uniqueEnums[field.fieldType] || (uniqueEnums[field.fieldType] && field.fieldValues.length !== 0))) {
997
990
  const importType = `${field.fieldType}`;
991
+ const basePath = clientFramework === VUE ? '@' : 'app';
998
992
  const modelPath = clientFramework === ANGULAR ? 'entities' : 'shared/model';
999
- const importPath = `app/${modelPath}/enumerations/${fileName}.model`;
993
+ const importPath = `${basePath}/${modelPath}/enumerations/${fileName}.model`;
1000
994
  uniqueEnums[field.fieldType] = field.fieldType;
1001
995
  typeImports.set(importType, importPath);
1002
996
  }
@@ -1146,13 +1140,40 @@ module.exports = class JHipsterBasePrivateGenerator extends Generator {
1146
1140
  * @param {any} primaryKey - primary key definition.
1147
1141
  * @param {number} [index] - index of the primary key sample, pass undefined for a random key.
1148
1142
  */
1149
- generateTestEntityPrimaryKey(primaryKey, index = 'random') {
1143
+ generateTestEntityPrimaryKey(primaryKey, index) {
1144
+ return JSON.stringify(
1145
+ this.generateTestEntity(
1146
+ primaryKey.fields.map(f => f.reference),
1147
+ index
1148
+ )
1149
+ );
1150
+ }
1151
+
1152
+ /**
1153
+ * Generate a test entity, according to the type
1154
+ *
1155
+ * @param {any} primaryKey - primary key definition.
1156
+ * @param {number} [index] - index of the primary key sample, pass undefined for a random key.
1157
+ */
1158
+ generateTestEntity(references, index = 'random') {
1150
1159
  const random = index === 'random';
1151
- const entries = primaryKey.ids.map(id => {
1152
- const value = random ? id.field.generateFakeData('raw') : this.generateTestEntityId(id.field.fieldType, index, false);
1153
- return [id.name, value];
1154
- });
1155
- return JSON.stringify(Object.fromEntries(entries));
1160
+ const entries = references
1161
+ .map(reference => {
1162
+ if (random && reference.field) {
1163
+ const field = reference.field;
1164
+ const fakeData = field.generateFakeData('json-serializable');
1165
+ if (reference.field.fieldWithContentType) {
1166
+ return [
1167
+ [reference.name, fakeData],
1168
+ [field.contentTypeFieldName, 'unknown'],
1169
+ ];
1170
+ }
1171
+ return [[reference.name, fakeData]];
1172
+ }
1173
+ return [[reference.name, this.generateTestEntityId(reference.type, index, false)]];
1174
+ })
1175
+ .flat();
1176
+ return Object.fromEntries(entries);
1156
1177
  }
1157
1178
 
1158
1179
  /**