diff --git a/generators/cucumber/__snapshots__/generator.spec.ts.snap b/generators/cucumber/__snapshots__/generator.spec.ts.snap index b1d26b2f41ba..a797648b8bf2 100644 --- a/generators/cucumber/__snapshots__/generator.spec.ts.snap +++ b/generators/cucumber/__snapshots__/generator.spec.ts.snap @@ -338,4 +338,4 @@ public class UserStepDefs extends StepDefs { "stateCleared": "modified", }, } -`; \ No newline at end of file +`; diff --git a/generators/generator-constants.js b/generators/generator-constants.js index f2654e3aa749..e2db95f91c02 100644 --- a/generators/generator-constants.js +++ b/generators/generator-constants.js @@ -36,12 +36,12 @@ export const javaDependencies = { /** * spring-boot version should match the one managed by https://mvnrepository.com/artifact/tech.jhipster/jhipster-dependencies/JHIPSTER_DEPENDENCIES_VERSION */ - 'spring-boot': '3.2.2', + 'spring-boot': '3.2.3', /* * hibernate version should match the one managed by https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies/SPRING_BOOT_VERSION * Required due to hibernate-jpamodelgen annotation processor. */ - hibernate: '6.4.1.Final', + hibernate: '6.4.4.Final', /* * cassandra driver version should match the one managed by https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies/SPRING_BOOT_VERSION * Required due to java-driver-mapper-processor annotation processor. diff --git a/generators/server/templates/build.gradle.ejs b/generators/server/templates/build.gradle.ejs index f556e52c3624..7eceecedf360 100644 --- a/generators/server/templates/build.gradle.ejs +++ b/generators/server/templates/build.gradle.ejs @@ -262,13 +262,9 @@ dependencies { <%_ if (searchEngineElasticsearch) { _%> testImplementation "org.awaitility:awaitility:${awaitilityVersion}" <%_ } _%> -<%_ if (databaseTypeSql) { _%> +<%_ if (databaseTypeSql && !reactive) { _%> implementation "org.hibernate.orm:hibernate-core" -<%_ } _%> -<%_ if (databaseTypeSql) { _%> annotationProcessor "org.hibernate.orm:hibernate-jpamodelgen:${hibernateVersion}" -<%_ } _%> -<%_ if (databaseTypeSql) { _%> implementation "org.hibernate.validator:hibernate-validator" <%_ } _%> <%_ if (reactive) { _%> @@ -317,6 +313,7 @@ if (addSpringMilestoneRepository) { _%> <%_ } _%> <%_ if (databaseTypeSql && reactive) { _%> implementation "org.springframework.boot:spring-boot-starter-data-r2dbc" + implementation "jakarta.persistence:jakarta.persistence-api" <%_ } _%> implementation "org.springframework.boot:spring-boot-starter-logging" implementation "org.springframework.boot:spring-boot-starter-mail" diff --git a/generators/server/templates/gradle.properties.ejs b/generators/server/templates/gradle.properties.ejs index d51376d35708..c0ceee01a2df 100644 --- a/generators/server/templates/gradle.properties.ejs +++ b/generators/server/templates/gradle.properties.ejs @@ -24,9 +24,11 @@ jhipsterDependenciesVersion=<%= jhipsterDependenciesVersion %> # The spring-boot version should match the one managed by # https://mvnrepository.com/artifact/tech.jhipster/jhipster-dependencies/<%= jhipsterDependenciesVersion %> springBootVersion=<%- javaDependencies['spring-boot'] %> +<%_ if (databaseTypeSql && !reactive) { _%> # The hibernate version should match the one managed by # https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies/<%- javaDependencies['spring-boot'] %> --> hibernateVersion=<%- javaDependencies.hibernate %> +<%_ } _%> mapstructVersion=<%- javaDependencies.mapstruct %> archunitJunit5Version=<%- javaDependencies['archunit-junit5'] %> <%_ if (enableSwaggerCodegen) { _%> diff --git a/generators/server/templates/gradle/profile_dev.gradle.ejs b/generators/server/templates/gradle/profile_dev.gradle.ejs index 349f228af081..7b3266826c1c 100644 --- a/generators/server/templates/gradle/profile_dev.gradle.ejs +++ b/generators/server/templates/gradle/profile_dev.gradle.ejs @@ -30,18 +30,20 @@ sourceSets { configurations { all { resolutionStrategy { + <%_ if (!reactive) { _%> // TODO drop forced version. Refer to https://github.com/jhipster/generator-jhipster/issues/22579 force "org.hibernate.orm:hibernate-core:${hibernateVersion}" -<%_ if (enableHibernateCache && (cacheProviderEhcache || cacheProviderCaffeine || cacheProviderRedis)) { _%> + <%_ if (enableHibernateCache && (cacheProviderEhcache || cacheProviderCaffeine || cacheProviderRedis)) { _%> // TODO drop forced version. Refer to https://github.com/jhipster/generator-jhipster/issues/22579 force "org.hibernate.orm:hibernate-jcache:${hibernateVersion}" -<%_ } _%> -<%_ if (prodDatabaseDriver?.r2dbc?.version) { _%> + <%_ } _%> + <%_ } _%> + <%_ if (prodDatabaseDriver?.r2dbc?.version) { _%> force "<%- prodDatabaseDriver.r2dbc.groupId %>:<%- prodDatabaseDriver.r2dbc.artifactId %>:<%- prodDatabaseDriver.r2dbc.version %>" -<%_ } _%> -<%_ if (prodDatabaseDriver?.jdbc?.version) { _%> + <%_ } _%> + <%_ if (prodDatabaseDriver?.jdbc?.version) { _%> force "<%- prodDatabaseDriver.jdbc.groupId %>:<%- prodDatabaseDriver.jdbc.artifactId %>:<%- prodDatabaseDriver.jdbc.version %>" -<%_ } _%> + <%_ } _%> } } } diff --git a/generators/server/templates/gradle/profile_prod.gradle.ejs b/generators/server/templates/gradle/profile_prod.gradle.ejs index 6e16b6224bfb..18f58be621b3 100644 --- a/generators/server/templates/gradle/profile_prod.gradle.ejs +++ b/generators/server/templates/gradle/profile_prod.gradle.ejs @@ -30,18 +30,20 @@ sourceSets { configurations { all { resolutionStrategy { + <%_ if (!reactive) { _%> // TODO drop forced version. Refer to https://github.com/jhipster/generator-jhipster/issues/22579 force "org.hibernate.orm:hibernate-core:${hibernateVersion}" -<%_ if (enableHibernateCache && (cacheProviderEhcache || cacheProviderCaffeine || cacheProviderRedis)) { _%> + <%_ if (enableHibernateCache && (cacheProviderEhcache || cacheProviderCaffeine || cacheProviderRedis)) { _%> // TODO drop forced version. Refer to https://github.com/jhipster/generator-jhipster/issues/22579 force "org.hibernate.orm:hibernate-jcache:${hibernateVersion}" -<%_ } _%> -<%_ if (prodDatabaseDriver?.r2dbc?.version) { _%> + <%_ } _%> + <%_ } _%> + <%_ if (prodDatabaseDriver?.r2dbc?.version) { _%> force "<%- prodDatabaseDriver.r2dbc.groupId %>:<%- prodDatabaseDriver.r2dbc.artifactId %>:<%- prodDatabaseDriver.r2dbc.version %>" -<%_ } _%> -<%_ if (prodDatabaseDriver?.jdbc?.version) { _%> + <%_ } _%> + <%_ if (prodDatabaseDriver?.jdbc?.version) { _%> force "<%- prodDatabaseDriver.jdbc.groupId %>:<%- prodDatabaseDriver.jdbc.artifactId %>:<%- prodDatabaseDriver.jdbc.version %>" -<%_ } _%> + <%_ } _%> } } } diff --git a/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs b/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs index 5cdcbf04c016..42e2af704a58 100644 --- a/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs +++ b/generators/server/templates/src/main/java/_package_/config/SecurityJwtConfiguration.java.ejs @@ -26,6 +26,8 @@ import com.nimbusds.jose.jwk.source.ImmutableSecret; import com.nimbusds.jose.util.Base64; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -46,6 +48,8 @@ import org.springframework.security.oauth2.server.resource.web.DefaultBearerToke @Configuration public class SecurityJwtConfiguration { + private final Logger log = LoggerFactory.getLogger(SecurityJwtConfiguration.class); + @Value("${jhipster.security.authentication.jwt.base64-secret}") private String jwtKey; @@ -62,6 +66,13 @@ public class SecurityJwtConfiguration { metersService.trackTokenExpired(); } else if (e.getMessage().contains("Failed to validate the token")) { metersService.trackTokenInvalidSignature(); + } else if ( + e.getMessage().contains("Invalid JWT serialization:") || + e.getMessage().contains("Invalid unsecured/JWS/JWE header:") + ) { + metersService.trackTokenMalformed(); + } else { + log.error("Unknown JWT reactive error {}", e.getMessage()); } }); } catch (Exception e) { @@ -69,6 +80,8 @@ public class SecurityJwtConfiguration { metersService.trackTokenMalformed(); } else if (e.getMessage().contains("Failed to validate the token")) { metersService.trackTokenInvalidSignature(); + } else { + log.error("Unknown JWT error {}", e.getMessage()); } throw e; } @@ -86,6 +99,8 @@ public class SecurityJwtConfiguration { e.getMessage().contains("Invalid unsecured/JWS/JWE") ) { metersService.trackTokenMalformed(); + } else { + log.error("Unknown JWT error {}", e.getMessage()); } throw e; } diff --git a/generators/spring-data-neo4j/templates/src/main/java/_package_/config/DatabaseConfiguration.java_neo4j.ejs b/generators/spring-data-neo4j/templates/src/main/java/_package_/config/DatabaseConfiguration.java_neo4j.ejs index 1be1aae131f0..fe262e2bec72 100644 --- a/generators/spring-data-neo4j/templates/src/main/java/_package_/config/DatabaseConfiguration.java_neo4j.ejs +++ b/generators/spring-data-neo4j/templates/src/main/java/_package_/config/DatabaseConfiguration.java_neo4j.ejs @@ -19,24 +19,15 @@ package <%= packageName %>.config; -import org.neo4j.driver.Driver; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; <%_ if (searchEngineElasticsearch) { _%> import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.FilterType; import org.springframework.data.elasticsearch.repository.config.Enable<% if (reactive) { %>Reactive<% } %>ElasticsearchRepositories; +import org.springframework.data.neo4j.repository.<% if (reactive) { %>Reactive<% } %>Neo4jRepository; <%_ } _%> -import org.springframework.data.neo4j.core.<% if (reactive) { %>Reactive<% } %>DatabaseSelectionProvider; -import org.springframework.data.neo4j.core.transaction.<% if (reactive) { %>Reactive<% } %>Neo4jTransactionManager; import org.springframework.data.neo4j.repository.config.Enable<% if (reactive) { %>Reactive<% } %>Neo4jRepositories; -import org.springframework.data.neo4j.repository.config.<% if (reactive) { %>Reactive<% } %>Neo4jRepositoryConfigurationExtension; - -<%_ if (searchEngineElasticsearch) { _%> -import org.springframework.data.neo4j.repository.<% if (reactive) { %>Reactive<% } %>Neo4jRepository; -<%_ } _%> -import org.springframework.transaction.<% if (reactive) { %>Reactive<% } %>TransactionManager; @Configuration <%_ if (searchEngineElasticsearch) { _%> @@ -47,10 +38,4 @@ import org.springframework.transaction.<% if (reactive) { %>Reactive<% } %>Trans <%_ if (searchEngineElasticsearch) { _%> @Enable<% if (reactive) { %>Reactive<% } %>ElasticsearchRepositories("<%= packageName %>.repository.search") <%_ } _%> -public class DatabaseConfiguration { - - @Bean(<% if (reactive) { %>Reactive<% } %>Neo4jRepositoryConfigurationExtension.DEFAULT_TRANSACTION_MANAGER_BEAN_NAME) - public <% if (reactive) { %>Reactive<% } %>TransactionManager transactionManager(Driver driver, <% if (reactive) { %>Reactive<% } %>DatabaseSelectionProvider databaseNameProvider) { - return new <% if (reactive) { %>Reactive<% } %>Neo4jTransactionManager(driver, databaseNameProvider); - } -} +public class DatabaseConfiguration {}