generator-jhipster 8.0.0-beta.1 → 8.0.0-beta.2

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 (229) hide show
  1. package/README.md +0 -5
  2. package/dist/generators/angular/resources/package.json +14 -14
  3. package/dist/generators/angular/templates/src/main/webapp/app/admin/logs/logs.component.ts.ejs +1 -1
  4. package/dist/generators/angular/templates/src/main/webapp/app/admin/user-management/user-management.route.ts.ejs +9 -14
  5. package/dist/generators/angular/templates/src/main/webapp/app/app-routing.module.ts.ejs +1 -1
  6. package/dist/generators/angular/templates/src/main/webapp/app/core/auth/user-route-access.service.ts.ejs +26 -33
  7. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +1 -1
  8. package/dist/generators/angular/templates/src/main/webapp/app/layouts/navbar/navbar.component.ts.ejs +1 -1
  9. package/dist/generators/angular/templates/src/main/webapp/app/shared/filter/filter.model.ts.ejs +1 -1
  10. package/dist/generators/app/generator.mjs +0 -1
  11. package/dist/generators/app/prompts.mjs +1 -1
  12. package/dist/generators/base/generator-base-blueprint.mjs +5 -3
  13. package/dist/generators/base/generator-base-todo.mjs +5 -12
  14. package/dist/generators/base/support/faker.mjs +6 -8
  15. package/dist/generators/base-application/support/prepare-field.mjs +9 -9
  16. package/dist/generators/base-core/generator-base.mjs +565 -0
  17. package/dist/generators/base-core/index.mjs +1 -1
  18. package/dist/generators/base-docker/generator.mjs +0 -7
  19. package/dist/generators/bootstrap/generator.mjs +10 -26
  20. package/dist/generators/ci-cd/templates/jenkins/idea.gdsl.ejs +1 -1
  21. package/dist/generators/client/needle-api/needle-client-webpack.mjs +1 -1
  22. package/dist/generators/client/resources/package.json +6 -6
  23. package/dist/generators/client/templates/src/main/webapp/index.html.ejs +7 -8
  24. package/dist/generators/client/templates/src/main/webapp/swagger-ui/index.html.ejs +2 -1
  25. package/dist/generators/common/resources/package.json +3 -3
  26. package/dist/generators/docker/generator.mjs +1 -1
  27. package/dist/generators/docker/templates/src/main/docker/app.yml.ejs +1 -2
  28. package/dist/generators/docker/templates/src/main/docker/mariadb.yml.ejs +5 -5
  29. package/dist/generators/docker-compose/generator.mjs +1 -1
  30. package/dist/generators/entities/generator.mjs +0 -1
  31. package/dist/generators/generate-blueprint/files.mjs +1 -0
  32. package/dist/generators/generate-blueprint/generator.mjs +3 -1
  33. package/dist/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +1 -1
  34. package/dist/generators/generate-blueprint/templates/tsconfig.json.ejs +31 -0
  35. package/dist/generators/generator-constants.mjs +11 -14
  36. package/dist/generators/gradle/constants.mjs +1 -1
  37. package/dist/generators/heroku/generator.mjs +42 -2
  38. package/dist/generators/init/constants.mjs +0 -1
  39. package/dist/generators/init/generator.mjs +3 -2
  40. package/dist/generators/init/templates/package.json.ejs +1 -1
  41. package/dist/generators/jdl/generator.mjs +22 -15
  42. package/dist/generators/kubernetes/kubernetes-base.mjs +2 -2
  43. package/dist/generators/kubernetes/templates/deployment.yml.ejs +1 -3
  44. package/dist/generators/kubernetes-helm/templates/app/Chart.yml.ejs +1 -1
  45. package/dist/generators/kubernetes-helm/templates/app/requirements.yml.ejs +1 -1
  46. package/dist/generators/kubernetes-knative/templates/service.yml.ejs +1 -3
  47. package/dist/generators/languages/templates/entity/i18n/entity_ja.json.ejs +11 -11
  48. package/dist/generators/languages/templates/src/main/resources/i18n/messages_ja.properties.ejs +7 -7
  49. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/error.json +5 -5
  50. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/gateway.json +6 -6
  51. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/global.json.ejs +37 -37
  52. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/health.json.ejs +6 -6
  53. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/home.json +2 -2
  54. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/login.json +2 -2
  55. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/metrics.json +54 -46
  56. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/register.json +1 -1
  57. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/reset.json.ejs +10 -10
  58. package/dist/generators/languages/templates/src/main/webapp/i18n/ja/user-management.json +21 -21
  59. package/dist/generators/liquibase/generator.mjs +6 -0
  60. package/dist/generators/liquibase/support/maven-plugin.mjs +2 -1
  61. package/dist/generators/liquibase/templates/gradle/liquibase.gradle.ejs +14 -4
  62. package/dist/generators/liquibase-changelogs/templates/src/main/resources/config/liquibase/fake-data/table_entity.csv.ejs +1 -1
  63. package/dist/generators/openshift/templates/deployment.yml.ejs +1 -3
  64. package/dist/generators/page/generator.mjs +0 -1
  65. package/dist/generators/react/resources/package.json +26 -26
  66. package/dist/generators/react/templates/src/main/webapp/app/entities/_entityFolder/_entityFile.tsx.ejs +1 -0
  67. package/dist/generators/react/templates/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +1 -1
  68. package/dist/generators/server/command.mjs +1 -1
  69. package/dist/generators/server/generator.mjs +1 -7
  70. package/dist/generators/server/resources/Dockerfile +11 -11
  71. package/dist/generators/server/resources/gradle/libs.versions.toml +5 -3
  72. package/dist/generators/server/resources/pom.xml +35 -17
  73. package/dist/generators/server/support/spring-factories.mjs +8 -13
  74. package/dist/generators/server/templates/.devcontainer/devcontainer.json.ejs +24 -19
  75. package/dist/generators/server/templates/build.gradle.ejs +10 -1
  76. package/dist/generators/server/templates/entity/src/test/java/package/web/rest/_EntityClass_ResourceIT.java.ejs +2 -2
  77. package/dist/generators/server/templates/gradle/profile_dev.gradle.ejs +16 -4
  78. package/dist/generators/server/templates/gradle/profile_prod.gradle.ejs +16 -4
  79. package/dist/generators/server/templates/gradle.properties.ejs +1 -0
  80. package/dist/generators/server/templates/pom.xml.ejs +39 -9
  81. package/dist/generators/server/templates/settings.gradle.ejs +1 -0
  82. package/dist/generators/server/templates/src/main/java/package/config/JacksonConfiguration.java.ejs +3 -3
  83. package/dist/generators/server/templates/src/main/java/package/config/SecurityConfiguration_imperative.java.ejs +11 -4
  84. package/dist/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +5 -3
  85. package/dist/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +3 -3
  86. package/dist/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +1 -1
  87. package/dist/generators/server/templates/src/main/java/package/security/DomainUserDetailsService.java.ejs +2 -4
  88. package/dist/generators/server/templates/src/main/java/package/security/PersistentTokenRememberMeServices.java.ejs +1 -1
  89. package/dist/generators/server/templates/src/main/java/package/service/UserService.java.ejs +1 -1
  90. package/dist/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +3 -3
  91. package/dist/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +2 -2
  92. package/dist/generators/server/templates/src/main/java/package/web/rest/errors/BadRequestAlertException.java.ejs +0 -9
  93. package/dist/generators/server/templates/src/main/java/package/web/rest/errors/ExceptionTranslator.java.ejs +2 -2
  94. package/dist/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +1 -2
  95. package/dist/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +1 -2
  96. package/dist/generators/server/templates/src/main/resources/config/application.yml.ejs +1 -1
  97. package/dist/generators/server/templates/src/main/resources/logback-spring.xml.ejs +4 -0
  98. package/dist/generators/server/templates/src/test/java/package/security/oauth2/AuthorizationHeaderUtilTest.java.ejs +70 -37
  99. package/dist/generators/server/templates/src/test/java/package/web/filter/SpaWebFilterIT_imperative.java.ejs +1 -1
  100. package/dist/generators/server/templates/src/test/java/package/web/filter/SpaWebFilterIT_reactive.java.ejs +1 -1
  101. package/dist/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +7 -7
  102. package/dist/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +5 -5
  103. package/dist/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +6 -6
  104. package/dist/generators/spring-cache/internal/dependencies.mjs +3 -0
  105. package/dist/generators/spring-controller/generator.mjs +0 -1
  106. package/dist/generators/spring-data-relational/internal/dependencies.mjs +6 -6
  107. package/dist/generators/spring-data-relational/support/database-data.mjs +0 -4
  108. package/dist/generators/spring-data-relational/templates/src/test/java/package/config/SqlTestContainersSpringContextCustomizerFactory.java.ejs +1 -1
  109. package/dist/generators/spring-service/generator.mjs +0 -1
  110. package/dist/generators/upgrade/generator.mjs +25 -55
  111. package/dist/generators/vue/resources/package.json +23 -23
  112. package/dist/types/generators/angular/support/index.d.mts +23 -0
  113. package/dist/types/generators/angular/support/needles.d.mts +35 -0
  114. package/dist/types/generators/angular/support/path-utils.d.mts +1 -0
  115. package/dist/types/generators/angular/support/translate-angular.d.mts +11 -0
  116. package/dist/types/generators/angular/support/update-languages.d.mts +21 -0
  117. package/dist/types/generators/angular/types-export.d.ts +1 -0
  118. package/dist/types/generators/app/support/check-node.d.mts +10 -0
  119. package/dist/types/generators/app/support/index.d.mts +19 -0
  120. package/dist/types/generators/app/types-export.d.ts +1 -0
  121. package/dist/types/generators/aws/types-export.d.ts +1 -0
  122. package/dist/types/generators/azure-app-service/types-export.d.ts +1 -0
  123. package/dist/types/generators/azure-spring-cloud/types-export.d.ts +1 -0
  124. package/dist/types/generators/base/generator-base-blueprint.d.mts +1 -1
  125. package/dist/types/generators/base/generator-base-todo.d.mts +9 -15
  126. package/dist/types/generators/base/support/needles.d.mts +1 -1
  127. package/dist/types/generators/base/types-export.d.ts +4 -0
  128. package/dist/types/generators/base-application/generator.d.mts +1 -22
  129. package/dist/types/generators/base-application/types-export.d.ts +4 -0
  130. package/dist/types/generators/base-core/generator-base.d.mts +166 -0
  131. package/dist/types/generators/base-core/index.d.mts +1 -1
  132. package/dist/types/generators/base-core/types-export.d.ts +1 -0
  133. package/dist/types/generators/bootstrap/support/auto-crlf-transform.d.mts +7 -0
  134. package/dist/types/generators/bootstrap/support/force-write-config-files-transform.d.mts +3 -0
  135. package/dist/types/generators/bootstrap/support/index.d.mts +23 -0
  136. package/dist/types/generators/bootstrap/support/multi-step-transform/index.d.mts +24 -0
  137. package/dist/types/generators/bootstrap/support/multi-step-transform/template-data.d.mts +18 -0
  138. package/dist/types/generators/bootstrap/support/multi-step-transform/template-file-fs.d.mts +11 -0
  139. package/dist/types/generators/bootstrap/support/multi-step-transform/template-file.d.mts +18 -0
  140. package/dist/types/generators/bootstrap/support/prettier-support.d.mts +2 -0
  141. package/dist/types/generators/bootstrap/support/sort-config-files-transform.d.mts +2 -0
  142. package/dist/types/generators/bootstrap/types-export.d.ts +1 -0
  143. package/dist/types/generators/bootstrap-application/types-export.d.ts +1 -0
  144. package/dist/types/generators/bootstrap-application-base/types-export.d.ts +1 -0
  145. package/dist/types/generators/bootstrap-application-client/types-export.d.ts +1 -0
  146. package/dist/types/generators/bootstrap-application-server/types-export.d.ts +1 -0
  147. package/dist/types/generators/ci-cd/types-export.d.ts +1 -0
  148. package/dist/types/generators/client/needle-api/needle-client-webpack.d.mts +1 -1
  149. package/dist/types/generators/client/types-export.d.ts +1 -0
  150. package/dist/types/generators/cloudfoundry/types-export.d.ts +1 -0
  151. package/dist/types/generators/common/types-export.d.ts +1 -0
  152. package/dist/types/generators/cucumber/types-export.d.ts +1 -0
  153. package/dist/types/generators/cypress/types-export.d.ts +1 -0
  154. package/dist/types/generators/docker/types-export.d.ts +1 -0
  155. package/dist/types/generators/docker-compose/types-export.d.ts +1 -0
  156. package/dist/types/generators/entities/types-export.d.ts +1 -0
  157. package/dist/types/generators/entity/support/asserts.d.mts +18 -0
  158. package/dist/types/generators/entity/support/index.d.mts +19 -0
  159. package/dist/types/generators/entity/types-export.d.ts +1 -0
  160. package/dist/types/generators/export-jdl/types-export.d.ts +1 -0
  161. package/dist/types/generators/gae/types-export.d.ts +1 -0
  162. package/dist/types/generators/gatling/types-export.d.ts +1 -0
  163. package/dist/types/generators/generate-blueprint/types-export.d.ts +1 -0
  164. package/dist/types/generators/generator-constants.d.mts +6 -6
  165. package/dist/types/generators/git/types-export.d.ts +1 -0
  166. package/dist/types/generators/gradle/types-export.d.ts +1 -0
  167. package/dist/types/generators/heroku/types-export.d.ts +1 -0
  168. package/dist/types/generators/info/types-export.d.ts +1 -0
  169. package/dist/types/generators/init/types-export.d.ts +1 -0
  170. package/dist/types/generators/java/support/add-java-annotation.d.mts +22 -0
  171. package/dist/types/generators/java/support/checks/check-java.d.mts +9 -0
  172. package/dist/types/generators/java/support/checks/index.d.mts +1 -0
  173. package/dist/types/generators/java/support/generated-annotation-transform.d.mts +3 -0
  174. package/dist/types/generators/java/support/index.d.mts +23 -0
  175. package/dist/types/generators/java/support/package-info-transform.d.mts +11 -0
  176. package/dist/types/generators/java/types-export.d.ts +1 -0
  177. package/dist/types/generators/jdl/types-export.d.ts +1 -0
  178. package/dist/types/generators/kubernetes/types-export.d.ts +1 -0
  179. package/dist/types/generators/kubernetes-helm/types-export.d.ts +1 -0
  180. package/dist/types/generators/kubernetes-knative/types-export.d.ts +1 -0
  181. package/dist/types/generators/languages/types-export.d.ts +1 -0
  182. package/dist/types/generators/liquibase/support/index.d.mts +21 -0
  183. package/dist/types/generators/liquibase/support/maven-plugin.d.mts +13 -0
  184. package/dist/types/generators/liquibase/support/post-prepare-entity.d.mts +2 -0
  185. package/dist/types/generators/liquibase/support/prepare-field.d.mts +1 -0
  186. package/dist/types/generators/liquibase/support/relationship.d.mts +15 -0
  187. package/dist/types/generators/liquibase/types-export.d.ts +1 -0
  188. package/dist/types/generators/liquibase/types.d.mts +8 -0
  189. package/dist/types/generators/liquibase-changelogs/support/formatting.d.mts +9 -0
  190. package/dist/types/generators/liquibase-changelogs/support/index.d.mts +19 -0
  191. package/dist/types/generators/liquibase-changelogs/types-export.d.ts +1 -0
  192. package/dist/types/generators/maven/internal/xml-store.d.mts +40 -0
  193. package/dist/types/generators/maven/support/index.d.mts +20 -0
  194. package/dist/types/generators/maven/support/pom-store.d.mts +47 -0
  195. package/dist/types/generators/maven/types-export.d.ts +1 -0
  196. package/dist/types/generators/needle-base.d.mts +1 -1
  197. package/dist/types/generators/openapi-client/types-export.d.ts +1 -0
  198. package/dist/types/generators/openshift/types-export.d.ts +1 -0
  199. package/dist/types/generators/page/support/index.d.mts +19 -0
  200. package/dist/types/generators/page/support/needles.d.mts +22 -0
  201. package/dist/types/generators/page/types-export.d.ts +1 -0
  202. package/dist/types/generators/project-name/types-export.d.ts +1 -0
  203. package/dist/types/generators/react/support/index.d.mts +22 -0
  204. package/dist/types/generators/react/support/needles.d.mts +1 -0
  205. package/dist/types/generators/react/support/translate-react.d.mts +5 -0
  206. package/dist/types/generators/react/support/update-languages.d.mts +21 -0
  207. package/dist/types/generators/react/types-export.d.ts +1 -0
  208. package/dist/types/generators/server/types-export.d.ts +1 -0
  209. package/dist/types/generators/server/types.d.mts +2 -0
  210. package/dist/types/generators/spring-cache/types-export.d.ts +1 -0
  211. package/dist/types/generators/spring-cloud-stream/types-export.d.ts +1 -0
  212. package/dist/types/generators/spring-controller/types-export.d.ts +1 -0
  213. package/dist/types/generators/spring-data-cassandra/types-export.d.ts +1 -0
  214. package/dist/types/generators/spring-data-couchbase/types-export.d.ts +1 -0
  215. package/dist/types/generators/spring-data-elasticsearch/types-export.d.ts +1 -0
  216. package/dist/types/generators/spring-data-mongodb/types-export.d.ts +1 -0
  217. package/dist/types/generators/spring-data-neo4j/types-export.d.ts +1 -0
  218. package/dist/types/generators/spring-data-relational/types-export.d.ts +1 -0
  219. package/dist/types/generators/spring-service/types-export.d.ts +1 -0
  220. package/dist/types/generators/spring-websocket/types-export.d.ts +1 -0
  221. package/dist/types/generators/upgrade/types-export.d.ts +1 -0
  222. package/dist/types/generators/vue/support/convert-translation.d.mts +11 -0
  223. package/dist/types/generators/vue/support/index.d.mts +23 -0
  224. package/dist/types/generators/vue/support/needles.d.mts +1 -0
  225. package/dist/types/generators/vue/support/translate-vue.d.mts +22 -0
  226. package/dist/types/generators/vue/support/update-languages.d.mts +21 -0
  227. package/dist/types/generators/vue/types-export.d.ts +1 -0
  228. package/dist/types/generators/workspaces/types-export.d.ts +1 -0
  229. package/package.json +33 -26
@@ -18,12 +18,22 @@
18
18
  -%>
19
19
  package <%= packageName %>.security.oauth2;
20
20
 
21
+ import static org.junit.jupiter.api.Assertions.fail;
22
+ import static org.mockito.ArgumentMatchers.*;
23
+ import static org.mockito.Mockito.*;
24
+
25
+ import java.time.Duration;
26
+ import java.time.Instant;
27
+ import java.util.List;
28
+ import java.util.Map;
29
+ import java.util.Optional;
21
30
  import org.assertj.core.api.Assertions;
22
31
  import org.junit.jupiter.api.BeforeEach;
23
32
  import org.junit.jupiter.api.Test;
33
+ import org.junit.jupiter.api.extension.ExtendWith;
24
34
  import org.mockito.InjectMocks;
25
35
  import org.mockito.Mock;
26
- import org.mockito.MockitoAnnotations;
36
+ import org.mockito.junit.jupiter.MockitoExtension;
27
37
  import org.springframework.boot.web.client.RestTemplateBuilder;
28
38
  import org.springframework.http.RequestEntity;
29
39
  import org.springframework.http.ResponseEntity;
@@ -44,36 +54,30 @@ import org.springframework.security.oauth2.server.resource.authentication.JwtAut
44
54
  import org.springframework.web.client.ResponseErrorHandler;
45
55
  import org.springframework.web.client.RestTemplate;
46
56
 
47
- import java.time.Duration;
48
- import java.time.Instant;
49
- import java.util.List;
50
- import java.util.Map;
51
- import java.util.Optional;
52
-
53
- import static org.junit.jupiter.api.Assertions.fail;
54
- import static org.mockito.ArgumentMatchers.*;
55
- import static org.mockito.Mockito.*;
56
-
57
57
  /**
58
58
  * Test class for the {@link AuthorizationHeaderUtil} utility class.
59
59
  */
60
+ @ExtendWith(MockitoExtension.class)
60
61
  class AuthorizationHeaderUtilTest {
61
62
 
62
63
  public static final String VALID_REGISTRATION_ID = "OIDC";
63
64
  public static final String SUB_VALUE = "123456";
64
- @Mock private OAuth2AuthorizedClientService clientService;
65
- @Mock private RestTemplateBuilder restTemplateBuilder;
66
- @Mock private SecurityContext securityContext;
67
- @InjectMocks private AuthorizationHeaderUtil authorizationHeaderUtil;
65
+
66
+ @Mock
67
+ private OAuth2AuthorizedClientService clientService;
68
+
69
+ @Mock
70
+ private RestTemplateBuilder restTemplateBuilder;
71
+
72
+ @Mock
73
+ private SecurityContext securityContext;
74
+
75
+ @InjectMocks
76
+ private AuthorizationHeaderUtil authorizationHeaderUtil;
68
77
 
69
78
  @BeforeEach
70
79
  public void setup() {
71
- MockitoAnnotations.openMocks(this);
72
80
  SecurityContextHolder.setContext(securityContext);
73
-
74
- doReturn(restTemplateBuilder).when(restTemplateBuilder).additionalMessageConverters(any(HttpMessageConverter.class));
75
- doReturn(restTemplateBuilder).when(restTemplateBuilder).errorHandler(any(ResponseErrorHandler.class));
76
- doReturn(restTemplateBuilder).when(restTemplateBuilder).basicAuthentication(anyString(), anyString());
77
81
  }
78
82
 
79
83
  @Test
@@ -88,8 +92,9 @@ class AuthorizationHeaderUtilTest {
88
92
 
89
93
  @Test
90
94
  void getAuthorizationHeader_JwtAuthentication() {
91
- JwtAuthenticationToken jwtToken = new JwtAuthenticationToken(new Jwt("tokenVal", Instant.now(),
92
- Instant.now().plus(Duration.ofMinutes(3)), Map.of("alg", "HS256"), Map.of("sub",SUB_VALUE)));
95
+ JwtAuthenticationToken jwtToken = new JwtAuthenticationToken(
96
+ new Jwt("tokenVal", Instant.now(), Instant.now().plus(Duration.ofMinutes(3)), Map.of("alg", "HS256"), Map.of("sub", SUB_VALUE))
97
+ );
93
98
  doReturn(jwtToken).when(securityContext).getAuthentication();
94
99
 
95
100
  Optional<String> header = authorizationHeaderUtil.getAuthorizationHeader();
@@ -100,15 +105,15 @@ class AuthorizationHeaderUtilTest {
100
105
  @Test
101
106
  void getAuthorizationHeader_OAuth2Authentication_InvalidClient() {
102
107
  OAuth2AuthenticationToken oauth2Token = getTestOAuth2AuthenticationToken("INVALID");
103
- OAuth2AuthorizedClient authorizedClient = getTestOAuth2AuthorizedClient();
104
108
 
105
109
  doReturn(oauth2Token).when(securityContext).getAuthentication();
106
- doReturn(authorizedClient).when(clientService).loadAuthorizedClient(eq(VALID_REGISTRATION_ID), eq(SUB_VALUE));
107
110
 
108
- Assertions.assertThatThrownBy(() -> {
109
- Optional<String> header = authorizationHeaderUtil.getAuthorizationHeader();
110
- }).isInstanceOf(OAuth2AuthorizationException.class)
111
- .hasMessageContaining("[access_denied] The token is expired");;
111
+ Assertions
112
+ .assertThatThrownBy(() -> {
113
+ authorizationHeaderUtil.getAuthorizationHeader();
114
+ })
115
+ .isInstanceOf(OAuth2AuthorizationException.class)
116
+ .hasMessageContaining("[access_denied] The token is expired");
112
117
  }
113
118
 
114
119
  @Test
@@ -125,6 +130,12 @@ class AuthorizationHeaderUtilTest {
125
130
 
126
131
  @Test
127
132
  void getAuthorizationHeader_OAuth2Authentication_RefreshToken() {
133
+ doReturn(restTemplateBuilder)
134
+ .when(restTemplateBuilder)
135
+ .additionalMessageConverters(any(HttpMessageConverter.class), any(HttpMessageConverter.class));
136
+ doReturn(restTemplateBuilder).when(restTemplateBuilder).errorHandler(any(ResponseErrorHandler.class));
137
+ doReturn(restTemplateBuilder).when(restTemplateBuilder).basicAuthentication(anyString(), anyString());
138
+
128
139
  OAuth2AuthenticationToken oauth2Token = getTestOAuth2AuthenticationToken(VALID_REGISTRATION_ID);
129
140
  OAuth2AuthorizedClient authorizedClient = getTestOAuth2AuthorizedClient(true);
130
141
 
@@ -142,6 +153,12 @@ class AuthorizationHeaderUtilTest {
142
153
 
143
154
  @Test
144
155
  void getAuthorizationHeader_OAuth2Authentication_RefreshToken_NoRefreshToken() {
156
+ doReturn(restTemplateBuilder)
157
+ .when(restTemplateBuilder)
158
+ .additionalMessageConverters(any(HttpMessageConverter.class), any(HttpMessageConverter.class));
159
+ doReturn(restTemplateBuilder).when(restTemplateBuilder).errorHandler(any(ResponseErrorHandler.class));
160
+ doReturn(restTemplateBuilder).when(restTemplateBuilder).basicAuthentication(anyString(), anyString());
161
+
145
162
  OAuth2AuthenticationToken oauth2Token = getTestOAuth2AuthenticationToken(VALID_REGISTRATION_ID);
146
163
  OAuth2AuthorizedClient authorizedClient = getTestOAuth2AuthorizedClient(true);
147
164
 
@@ -159,6 +176,12 @@ class AuthorizationHeaderUtilTest {
159
176
 
160
177
  @Test
161
178
  void getAuthorizationHeader_OAuth2Authentication_RefreshTokenFails() {
179
+ doReturn(restTemplateBuilder)
180
+ .when(restTemplateBuilder)
181
+ .additionalMessageConverters(any(HttpMessageConverter.class), any(HttpMessageConverter.class));
182
+ doReturn(restTemplateBuilder).when(restTemplateBuilder).errorHandler(any(ResponseErrorHandler.class));
183
+ doReturn(restTemplateBuilder).when(restTemplateBuilder).basicAuthentication(anyString(), anyString());
184
+
162
185
  OAuth2AuthenticationToken oauth2Token = getTestOAuth2AuthenticationToken(VALID_REGISTRATION_ID);
163
186
  OAuth2AuthorizedClient authorizedClient = getTestOAuth2AuthorizedClient(true);
164
187
 
@@ -166,12 +189,16 @@ class AuthorizationHeaderUtilTest {
166
189
  doReturn(authorizedClient).when(clientService).loadAuthorizedClient(eq(VALID_REGISTRATION_ID), eq(SUB_VALUE));
167
190
 
168
191
  RestTemplate restTemplate = mock(RestTemplate.class);
169
- doThrow(new OAuth2AuthorizationException(new OAuth2Error("E"), "error")).when(restTemplate).exchange(any(RequestEntity.class), eq(OAuthIdpTokenResponseDTO.class));
192
+ doThrow(new OAuth2AuthorizationException(new OAuth2Error("E"), "error"))
193
+ .when(restTemplate)
194
+ .exchange(any(RequestEntity.class), eq(OAuthIdpTokenResponseDTO.class));
170
195
  doReturn(restTemplate).when(restTemplateBuilder).build();
171
196
 
172
- Assertions.assertThatThrownBy(() -> {
173
- Optional<String> header = authorizationHeaderUtil.getAuthorizationHeader();
174
- }).isInstanceOf(OAuth2AuthenticationException.class)
197
+ Assertions
198
+ .assertThatThrownBy(() -> {
199
+ authorizationHeaderUtil.getAuthorizationHeader();
200
+ })
201
+ .isInstanceOf(OAuth2AuthenticationException.class)
175
202
  .hasMessageContaining("error");
176
203
  }
177
204
 
@@ -195,7 +222,8 @@ class AuthorizationHeaderUtilTest {
195
222
  OAuth2AccessToken token = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER, "tokenVal", issuedAt, expiresAt);
196
223
 
197
224
  return new OAuth2AuthorizedClient(
198
- ClientRegistration.withRegistrationId(VALID_REGISTRATION_ID)
225
+ ClientRegistration
226
+ .withRegistrationId(VALID_REGISTRATION_ID)
199
227
  .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
200
228
  .clientId("web-app")
201
229
  .clientSecret("secret")
@@ -205,14 +233,19 @@ class AuthorizationHeaderUtilTest {
205
233
  .build(),
206
234
  "sub",
207
235
  token,
208
- new OAuth2RefreshToken("refreshVal", Instant.now()));
236
+ new OAuth2RefreshToken("refreshVal", Instant.now())
237
+ );
209
238
  }
210
239
 
211
240
  private OAuth2AuthenticationToken getTestOAuth2AuthenticationToken(String registrationId) {
212
241
  return new OAuth2AuthenticationToken(
213
- new DefaultOidcUser(List.of(new SimpleGrantedAuthority("USER")),
214
- OidcIdToken.withTokenValue("tokenVal").claim("sub", SUB_VALUE).build()),
215
- List.of(new SimpleGrantedAuthority("USER")), registrationId);
242
+ new DefaultOidcUser(
243
+ List.of(new SimpleGrantedAuthority("USER")),
244
+ OidcIdToken.withTokenValue("tokenVal").claim("sub", SUB_VALUE).build()
245
+ ),
246
+ List.of(new SimpleGrantedAuthority("USER")),
247
+ registrationId
248
+ );
216
249
  }
217
250
 
218
251
  private Optional<OAuthIdpTokenResponseDTO> getTestOAuthIdpTokenResponseDTO(boolean hasRefreshToken) {
@@ -15,7 +15,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
15
15
  @AutoConfigureMockMvc
16
16
  @WithMockUser
17
17
  @IntegrationTest
18
- public class SpaWebFilterIT {
18
+ class SpaWebFilterIT {
19
19
 
20
20
  @Autowired
21
21
  private MockMvc mockMvc;
@@ -13,7 +13,7 @@ import org.springframework.http.MediaType;
13
13
  @AutoConfigureWebTestClient(timeout = IntegrationTest.DEFAULT_TIMEOUT)
14
14
  @WithMockUser
15
15
  @IntegrationTest
16
- public class SpaWebFilterIT {
16
+ class SpaWebFilterIT {
17
17
 
18
18
  @Autowired
19
19
  private WebTestClient webTestClient;
@@ -520,8 +520,8 @@ class AccountResourceIT {
520
520
 
521
521
  Optional<<%= user.persistClass %>> testUser = userRepository.findOneByEmailIgnoreCase("alice2@example.com")<% if (reactive) { %>.blockOptional()<% } %>;
522
522
  assertThat(testUser).isPresent();
523
- testUser.get().setActivated(true);
524
- userRepository.save(testUser.get())<% if (reactive) { %>.block()<% } %>;
523
+ testUser.orElseThrow().setActivated(true);
524
+ userRepository.save(testUser.orElseThrow())<% if (reactive) { %>.block()<% } %>;
525
525
 
526
526
  // Second (already activated) user
527
527
  <%_ if (reactive) { _%>
@@ -644,10 +644,10 @@ class AccountResourceIT {
644
644
 
645
645
  Optional<<%= user.persistClass %>> testUser4 = userRepository.findOneByLogin("test-register-duplicate-email-3")<% if (reactive) { %>.blockOptional()<% } %>;
646
646
  assertThat(testUser4).isPresent();
647
- assertThat(testUser4.get().getEmail()).isEqualTo("test-register-duplicate-email@example.com");
647
+ assertThat(testUser4.orElseThrow().getEmail()).isEqualTo("test-register-duplicate-email@example.com");
648
648
 
649
- testUser4.get().setActivated(true);
650
- userService.updateUser((new <%= user.adminUserDto %>(testUser4.get())))<% if (reactive) { %>.block()<% } %>;
649
+ testUser4.orElseThrow().setActivated(true);
650
+ userService.updateUser((new <%= user.adminUserDto %>(testUser4.orElseThrow())))<% if (reactive) { %>.block()<% } %>;
651
651
 
652
652
  // Register 4th (already activated) user
653
653
  <%_ if (reactive) { _%>
@@ -701,8 +701,8 @@ class AccountResourceIT {
701
701
 
702
702
  Optional<<%= user.persistClass %>> userDup = userRepository.findOne<% if (databaseTypeSql) { %>WithAuthorities<% } %>ByLogin("badguy")<% if (reactive) { %>.blockOptional()<% } %>;
703
703
  assertThat(userDup).isPresent();
704
- assertThat(userDup.get().getAuthorities()).hasSize(1)
705
- .containsExactly(<% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { %>authorityRepository.findById(AuthoritiesConstants.USER).<% if (reactive) { %>block<% } else { %>get<% } %>()<% } %><% if (databaseTypeCassandra || databaseTypeCouchbase) { %>AuthoritiesConstants.USER<% } %>);
704
+ assertThat(userDup.orElseThrow().getAuthorities()).hasSize(1)
705
+ .containsExactly(<% if (databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j) { %>authorityRepository.findById(AuthoritiesConstants.USER).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>()<% } %><% if (databaseTypeCassandra || databaseTypeCouchbase) { %>AuthoritiesConstants.USER<% } %>);
706
706
  }
707
707
 
708
708
  @Test
@@ -239,16 +239,16 @@ public final class TestUtil {
239
239
  <%_ if (databaseTypeSql) { _%>
240
240
 
241
241
  /**
242
- * Makes a an executes a query to the EntityManager finding all stored objects.
242
+ * Executes a query on the EntityManager finding all stored objects.
243
243
  * @param <T> The type of objects to be searched
244
244
  * @param em The instance of the EntityManager
245
- * @param clss The class type to be searched
245
+ * @param clazz The class type to be searched
246
246
  * @return A list of all found objects
247
247
  */
248
- public static <T> List<T> findAll(EntityManager em, Class<T> clss) {
248
+ public static <T> List<T> findAll(EntityManager em, Class<T> clazz) {
249
249
  CriteriaBuilder cb = em.getCriteriaBuilder();
250
- CriteriaQuery<T> cq = cb.createQuery(clss);
251
- Root<T> rootEntry = cq.from(clss);
250
+ CriteriaQuery<T> cq = cb.createQuery(clazz);
251
+ Root<T> rootEntry = cq.from(clazz);
252
252
  CriteriaQuery<T> all = cq.select(rootEntry);
253
253
  TypedQuery<T> allQuery = em.createQuery(all);
254
254
  return allQuery.getResultList();
@@ -630,7 +630,7 @@ class UserResourceIT {
630
630
  .collectList().block()<% } %>.size();
631
631
 
632
632
  // Update the user
633
- <%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>get<% } %>();
633
+ <%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>();
634
634
 
635
635
  <%= user.adminUserDto %> user = new <%= user.adminUserDto %>();
636
636
  user.setId(updatedUser.getId());
@@ -668,7 +668,7 @@ class UserResourceIT {
668
668
  // Validate the User in the database
669
669
  assertPersistedUsers(users -> {
670
670
  assertThat(users).hasSize(databaseSizeBeforeUpdate);
671
- <%= user.persistClass %> testUser = users.stream().filter(usr -> usr.getId().equals(updatedUser.getId())).findFirst().get();
671
+ <%= user.persistClass %> testUser = users.stream().filter(usr -> usr.getId().equals(updatedUser.getId())).findFirst().orElseThrow();
672
672
  assertThat(testUser.getFirstName()).isEqualTo(UPDATED_FIRSTNAME);
673
673
  assertThat(testUser.getLastName()).isEqualTo(UPDATED_LASTNAME);
674
674
  assertThat(testUser.getEmail()).isEqualTo(UPDATED_EMAIL);
@@ -695,7 +695,7 @@ class UserResourceIT {
695
695
  .collectList().block()<% } %>.size();
696
696
 
697
697
  // Update the user
698
- <%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>get<% } %>();
698
+ <%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>();
699
699
 
700
700
  <%= user.adminUserDto %> user = new <%= user.adminUserDto %>();
701
701
  user.setId(updatedUser.getId());
@@ -733,7 +733,7 @@ class UserResourceIT {
733
733
  // Validate the User in the database
734
734
  assertPersistedUsers(users -> {
735
735
  assertThat(users).hasSize(databaseSizeBeforeUpdate);
736
- <%= user.persistClass %> testUser = users.stream().filter(usr -> usr.getId().equals(updatedUser.getId())).findFirst().get();
736
+ <%= user.persistClass %> testUser = users.stream().filter(usr -> usr.getId().equals(updatedUser.getId())).findFirst().orElseThrow();
737
737
  assertThat(testUser.getLogin()).isEqualTo(UPDATED_LOGIN);
738
738
  assertThat(testUser.getFirstName()).isEqualTo(UPDATED_FIRSTNAME);
739
739
  assertThat(testUser.getLastName()).isEqualTo(UPDATED_LASTNAME);
@@ -784,7 +784,7 @@ class UserResourceIT {
784
784
  <%_ } _%>
785
785
 
786
786
  // Update the user
787
- <%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>get<% } %>();
787
+ <%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>();
788
788
 
789
789
  <%= user.adminUserDto %> user = new <%= user.adminUserDto %>();
790
790
  user.setId(updatedUser.getId());
@@ -859,7 +859,7 @@ class UserResourceIT {
859
859
  <%_ } _%>
860
860
 
861
861
  // Update the user
862
- <%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>get<% } %>();
862
+ <%= user.persistClass %> updatedUser = userRepository.findById(user.getId()).<% if (reactive) { %>block<% } else { %>orElseThrow<% } %>();
863
863
 
864
864
  <%= user.adminUserDto %> user = new <%= user.adminUserDto %>();
865
865
  user.setId(updatedUser.getId());
@@ -23,6 +23,9 @@ const javaxCacheApi = {
23
23
  const hibernateJCache = {
24
24
  groupId: 'org.hibernate.orm',
25
25
  artifactId: 'hibernate-jcache',
26
+ // TODO drop forced version. Refer to https://github.com/jhipster/generator-jhipster/issues/22579
27
+ // eslint-disable-next-line no-template-curly-in-string
28
+ version: '${hibernate.version}',
26
29
  };
27
30
  // eslint-disable-next-line import/prefer-default-export
28
31
  export const getCacheProviderMavenDefinition = (cacheProvider, javaDependencies) => {
@@ -38,7 +38,6 @@ export default class SpringControllerGenerator extends BaseGenerator {
38
38
  this.name = this.options.name;
39
39
  this.option('default', {
40
40
  type: Boolean,
41
- default: false,
42
41
  description: 'default option',
43
42
  });
44
43
  this.defaultOption = this.options.default;
@@ -50,8 +50,10 @@ export const getImperativeMavenDefinition = ({ javaDependencies }) => ({
50
50
  properties: [{ property: 'hibernate.version', value: javaDependencies.hibernate }],
51
51
  dependencies: [
52
52
  { groupId: 'org.springframework.boot', artifactId: 'spring-boot-starter-data-jpa' },
53
- { groupId: 'com.fasterxml.jackson.datatype', artifactId: 'jackson-datatype-hibernate5-jakarta' },
54
- { groupId: 'org.hibernate.orm', artifactId: 'hibernate-core' },
53
+ { groupId: 'com.fasterxml.jackson.datatype', artifactId: 'jackson-datatype-hibernate6' },
54
+ // TODO drop forced version. Refer to https://github.com/jhipster/generator-jhipster/issues/22579
55
+ // eslint-disable-next-line no-template-curly-in-string
56
+ { groupId: 'org.hibernate.orm', artifactId: 'hibernate-core', version: '${hibernate.version}' },
55
57
  { groupId: 'org.hibernate.orm', artifactId: 'hibernate-jpamodelgen', scope: 'provided' },
56
58
  { groupId: 'org.hibernate.validator', artifactId: 'hibernate-validator' },
57
59
  { groupId: 'org.springframework.security', artifactId: 'spring-security-data' },
@@ -101,9 +103,7 @@ export const getDatabaseTypeMavenDefinition = (databaseType, { inProfile, javaDe
101
103
  ],
102
104
  },
103
105
  r2dbc: {
104
- // TODO drop version once spring-boot 3.1.0 is released https://github.com/spring-projects/spring-boot/issues/34625
105
- // dependencies: [{ inProfile, groupId: 'org.mariadb', artifactId: 'r2dbc-mariadb', version: javaDependencies['r2dbc-mariadb'] }],
106
- dependencies: [{ inProfile, groupId: 'io.asyncer', artifactId: 'r2dbc-mysql', version: javaDependencies['r2dbc-mysql'] }],
106
+ dependencies: [{ inProfile, groupId: 'org.mariadb', artifactId: 'r2dbc-mariadb' }],
107
107
  },
108
108
  },
109
109
  mssql: {
@@ -125,7 +125,7 @@ export const getDatabaseTypeMavenDefinition = (databaseType, { inProfile, javaDe
125
125
  ],
126
126
  },
127
127
  r2dbc: {
128
- dependencies: [{ inProfile, groupId: 'io.asyncer', artifactId: 'r2dbc-mysql', version: javaDependencies['r2dbc-mysql'] }],
128
+ dependencies: [{ inProfile, groupId: 'io.asyncer', artifactId: 'r2dbc-mysql' }],
129
129
  },
130
130
  },
131
131
  oracle: {
@@ -75,10 +75,6 @@ const databaseData = {
75
75
  defaultUsername: 'root',
76
76
  constraintNameMaxLength: 64,
77
77
  tableNameMaxLength: 64,
78
- r2dbc: {
79
- // TODO switch to mariadb if r2dbc-mariadb is reinstated
80
- protocolSuffix: 'mysql://',
81
- },
82
78
  },
83
79
  [MYSQL]: {
84
80
  name: 'MySQL',
@@ -69,7 +69,7 @@ public class SqlTestContainersSpringContextCustomizerFactory implements ContextC
69
69
  }
70
70
  }
71
71
  <%_ if (reactive) { _%>
72
- testValues = testValues.and("spring.r2dbc.url=" + prodTestContainer.getTestContainer().getJdbcUrl().replace("jdbc", "r2dbc")<% if (prodDatabaseTypeMariadb) { %>.replace("mariadb", "mysql")<% } else if (prodDatabaseTypeMssql) { %>.replace(";encrypt=false", "")<% } %> + "<%- prodDatabaseExtraOptions %>");
72
+ testValues = testValues.and("spring.r2dbc.url=" + prodTestContainer.getTestContainer().getJdbcUrl().replace("jdbc", "r2dbc")<% if (prodDatabaseTypeMssql) { %>.replace(";encrypt=false", "")<% } %> + "<%- prodDatabaseExtraOptions %>");
73
73
  testValues = testValues.and("spring.r2dbc.username=" + prodTestContainer.getTestContainer().getUsername());
74
74
  testValues = testValues.and("spring.r2dbc.password=" + prodTestContainer.getTestContainer().getPassword());
75
75
  testValues = testValues.and("spring.liquibase.url=" + prodTestContainer.getTestContainer().getJdbcUrl() + "<%- prodDatabaseExtraOptions %>");
@@ -32,7 +32,6 @@ export default class SpringServiceGenerator extends BaseGenerator {
32
32
  this.name = this.options.name;
33
33
  this.option('default', {
34
34
  type: Boolean,
35
- default: false,
36
35
  description: 'default option',
37
36
  });
38
37
  this.defaultOption = this.options.default;
@@ -22,7 +22,7 @@ import semver from 'semver';
22
22
  import fs from 'fs';
23
23
  import gitignore from 'parse-gitignore';
24
24
  import path from 'path';
25
- import childProcess from 'child_process';
25
+ import latestVersion from 'latest-version';
26
26
  import BaseGenerator from '../base/index.mjs';
27
27
  import { upgradeFilesTask as upgradeLanguagesFilesTask } from '../languages/index.mjs';
28
28
  import { SERVER_MAIN_RES_DIR } from '../generator-constants.mjs';
@@ -78,24 +78,12 @@ export default class UpgradeGenerator extends BaseGenerator {
78
78
  description: 'Upgrade to specific blueprint versions instead of the latest, e.g. --target-blueprint-versions foo@0.0.1,bar@1.0.2',
79
79
  type: String,
80
80
  });
81
- // This adds support for a `--skip-install` flag
82
- this.option('skip-install', {
83
- description: 'Skips installing dependencies during the upgrade process',
84
- type: Boolean,
85
- default: false,
86
- });
87
81
  // This adds support for a `--silent` flag
88
82
  this.option('silent', {
89
83
  description: 'Hides output of the generation process',
90
84
  type: Boolean,
91
85
  default: false,
92
86
  });
93
- // This adds support for a `--skip-checks` flag
94
- this.option('skip-checks', {
95
- description: 'Disable checks during project regeneration',
96
- type: Boolean,
97
- default: false,
98
- });
99
87
  if (this.options.help) {
100
88
  return;
101
89
  }
@@ -109,7 +97,7 @@ export default class UpgradeGenerator extends BaseGenerator {
109
97
  }
110
98
  }
111
99
  get [BaseGenerator.INITIALIZING]() {
112
- return {
100
+ return this.asInitializingTaskGroup({
113
101
  displayLogo() {
114
102
  this.log.log(chalk.green('Welcome to the JHipster Upgrade Sub-Generator'));
115
103
  this.log.log(chalk.green('This will upgrade your current application codebase to the latest JHipster version'));
@@ -121,7 +109,7 @@ export default class UpgradeGenerator extends BaseGenerator {
121
109
  this.currentJhipsterVersion = this.config.get('jhipsterVersion');
122
110
  this.clientPackageManager = this.config.get('clientPackageManager');
123
111
  },
124
- };
112
+ });
125
113
  }
126
114
  _rmRf(file) {
127
115
  const absolutePath = path.resolve(file);
@@ -178,13 +166,11 @@ export default class UpgradeGenerator extends BaseGenerator {
178
166
  const skipChecksOption = this.skipChecks ? '--skip-checks' : '';
179
167
  const regenerateCmd = `${generatorCommand} --with-entities --force --skip-install --skip-git --ignore-errors --no-insight ${skipChecksOption}`;
180
168
  this.log.verboseInfo(regenerateCmd);
181
- try {
182
- childProcess.execSync(regenerateCmd, { stdio: 'inherit' });
183
- this.success(`Successfully regenerated application with JHipster ${jhipsterVersion}${blueprintInfo}`);
184
- }
185
- catch (err) {
186
- throw new Error(`Something went wrong while generating project! ${err}`);
169
+ const result = this.spawnCommandSync(regenerateCmd);
170
+ if (result.exitCode !== 0) {
171
+ throw new Error(`Something went wrong while generating project! ${result.exitCode}`);
187
172
  }
173
+ this.success(`Successfully regenerated application with JHipster ${jhipsterVersion}${blueprintInfo}`);
188
174
  }
189
175
  _gitCommitAll(commitMsg) {
190
176
  const gitAdd = this.gitExec(['add', '-A'], { maxBuffer: 1024 * 10000, silent: this.silent });
@@ -204,17 +190,6 @@ export default class UpgradeGenerator extends BaseGenerator {
204
190
  this._rmRf(keystore);
205
191
  this._gitCommitAll(`Generated with JHipster ${jhipsterVersion}${blueprintInfo}`);
206
192
  }
207
- _retrieveLatestVersion(packageName) {
208
- this.log.verboseInfo(`Looking for latest ${packageName} version...`);
209
- const commandPrefix = 'npm show';
210
- const pkgInfo = shelljs.exec(`${commandPrefix} ${packageName} version`, { silent: this.silent });
211
- if (pkgInfo.stderr) {
212
- this.log.warn(pkgInfo.stderr);
213
- throw new Error(`Something went wrong fetching the latest ${packageName} version number...\n${pkgInfo.stderr}`);
214
- }
215
- const msg = pkgInfo.stdout;
216
- return msg.replace('\n', '');
217
- }
218
193
  _installNpmPackageLocally(npmPackage, version) {
219
194
  this.log.verboseInfo(`Installing ${npmPackage} ${version} locally`);
220
195
  const commandPrefix = 'npm install';
@@ -261,32 +236,28 @@ export default class UpgradeGenerator extends BaseGenerator {
261
236
  }
262
237
  return true;
263
238
  })
264
- .map(blueprint => {
265
- return new Promise(resolve => {
266
- const latestVersion = this._retrieveLatestVersion(blueprint.name);
267
- blueprint.latestBlueprintVersion = latestVersion;
268
- if (semver.lt(blueprint.version, blueprint.latestBlueprintVersion)) {
269
- this.newBlueprintVersionFound = true;
270
- this.success(`New ${blueprint.name} version found: ${blueprint.latestBlueprintVersion}`);
271
- }
272
- else if (this.force) {
273
- this.newBlueprintVersionFound = true;
274
- this.log.log(chalk.yellow('Forced re-generation'));
275
- }
276
- else {
277
- if (this.newBlueprintVersionFound === undefined) {
278
- this.newBlueprintVersionFound = false;
279
- }
280
- this.log.warn(`${chalk.green('No update available.')} Application has already been generated with latest version for blueprint: ${blueprint.name}`);
239
+ .map(async (blueprint) => {
240
+ blueprint.latestBlueprintVersion = await latestVersion(blueprint.name);
241
+ if (semver.lt(blueprint.version, blueprint.latestBlueprintVersion)) {
242
+ this.newBlueprintVersionFound = true;
243
+ this.success(`New ${blueprint.name} version found: ${blueprint.latestBlueprintVersion}`);
244
+ }
245
+ else if (this.force) {
246
+ this.newBlueprintVersionFound = true;
247
+ this.log.log(chalk.yellow('Forced re-generation'));
248
+ }
249
+ else {
250
+ if (this.newBlueprintVersionFound === undefined) {
251
+ this.newBlueprintVersionFound = false;
281
252
  }
282
- this.success(`Done checking for new version for blueprint ${blueprint.name}`);
283
- resolve();
284
- });
253
+ this.log.warn(`${chalk.green('No update available.')} Application has already been generated with latest version for blueprint: ${blueprint.name}`);
254
+ }
255
+ this.success(`Done checking for new version for blueprint ${blueprint.name}`);
285
256
  })).then(() => {
286
257
  this.success('Done checking for new version of blueprints');
287
258
  });
288
259
  },
289
- checkLatestJhipsterVersion() {
260
+ async checkLatestJhipsterVersion() {
290
261
  if (this.targetJhipsterVersion) {
291
262
  if (this.targetJhipsterVersion === GLOBAL_VERSION) {
292
263
  this.originalTargetJhipsterVersion = this.targetJhipsterVersion;
@@ -296,8 +267,7 @@ export default class UpgradeGenerator extends BaseGenerator {
296
267
  return;
297
268
  }
298
269
  this.log.verboseInfo(`Looking for latest ${GENERATOR_JHIPSTER} version...`);
299
- const latestVersion = this._retrieveLatestVersion(GENERATOR_JHIPSTER);
300
- this.targetJhipsterVersion = latestVersion;
270
+ this.targetJhipsterVersion = await latestVersion(GENERATOR_JHIPSTER);
301
271
  if (semver.lt(this.currentJhipsterVersion, this.targetJhipsterVersion)) {
302
272
  this.success(`New ${GENERATOR_JHIPSTER} version found: ${this.targetJhipsterVersion}`);
303
273
  }