From 3192973abd7bf2ea4f89eab9d724d02f27829c97 Mon Sep 17 00:00:00 2001 From: Felipe Desiderati Date: Wed, 2 Aug 2023 20:45:59 -0300 Subject: [PATCH] Version 3.0.1 - Fixed a minor bug involving the CORS configuration and circular dependencies. --- README.md | 5 ++- common-parent-info/pom.xml | 2 +- .../SecurityExceptionHandlingController.java | 3 +- .../WebSecurityAutoConfiguration.java | 32 ++++++++++--------- .../configuration/OpenApiConfiguration.java | 2 +- .../configuration/WebAutoConfiguration.java | 6 ++-- 6 files changed, 27 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 33599fc..40c4429 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Commons Herd.io --------------- [![Build Status](https://github.com/desiderati/commons/workflows/Build/badge.svg)](https://github.com/desiderati/commons/actions) -[![Version](https://img.shields.io/badge/Version-3.0.0.RELEASE-red.svg)](https://github.com/desiderati/commons/releases) +[![Version](https://img.shields.io/badge/Version-3.0.1.RELEASE-red.svg)](https://github.com/desiderati/commons/releases) [![GitHub Stars](https://img.shields.io/github/stars/desiderati/commons.svg?label=GitHub%20Stars)](https://github.com/desiderati/commons/) [![LICENSE](https://img.shields.io/badge/License-MIT-lightgrey.svg)](https://github.com/desiderati/commons/blob/master/LICENSE) @@ -24,6 +24,9 @@ Changelog All project changes will be documented in this file. +#### [3.0.1.RELEASE] - 2023-08-02 +- Fixed a minor bug involving the CORS configuration and circular dependencies. + #### [3.0.0.RELEASE] - 2023-04-03 - Added Spring Cloud Support. - Migrated from Apache ActiveMQ to Apache Artemis. diff --git a/common-parent-info/pom.xml b/common-parent-info/pom.xml index 3a51958..c0e3675 100644 --- a/common-parent-info/pom.xml +++ b/common-parent-info/pom.xml @@ -82,7 +82,7 @@ - 3.0.0.RELEASE + 3.0.1.RELEASE ${revision} diff --git a/common-web-security/src/main/java/io/herd/common/web/security/configuration/SecurityExceptionHandlingController.java b/common-web-security/src/main/java/io/herd/common/web/security/configuration/SecurityExceptionHandlingController.java index 4a6d040..0c51943 100644 --- a/common-web-security/src/main/java/io/herd/common/web/security/configuration/SecurityExceptionHandlingController.java +++ b/common-web-security/src/main/java/io/herd/common/web/security/configuration/SecurityExceptionHandlingController.java @@ -38,9 +38,8 @@ import java.util.List; - @Slf4j -@ConditionalOnWebApplication +@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) @ControllerAdvice(annotations = {RestController.class, RepositoryRestController.class}) public class SecurityExceptionHandlingController extends ExceptionHandlingController { diff --git a/common-web-security/src/main/java/io/herd/common/web/security/configuration/WebSecurityAutoConfiguration.java b/common-web-security/src/main/java/io/herd/common/web/security/configuration/WebSecurityAutoConfiguration.java index 3eaac2c..be5dbe7 100644 --- a/common-web-security/src/main/java/io/herd/common/web/security/configuration/WebSecurityAutoConfiguration.java +++ b/common-web-security/src/main/java/io/herd/common/web/security/configuration/WebSecurityAutoConfiguration.java @@ -60,7 +60,7 @@ @Slf4j @Configuration(proxyBeanMethods = false) -@ConditionalOnWebApplication +@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) @EnableWebSecurity @EnableMethodSecurity(securedEnabled = true) @PropertySource("classpath:application-common-web-security.properties") @@ -96,34 +96,36 @@ public class WebSecurityAutoConfiguration implements WebMvcConfigurer { private CorsProperties webSecurityCorsProperties; private CorsFilter graphQLCorsFilter; - @Autowired(required = false) // Prevent circular dependency. - public void setJwtAuthenticationFilter(JwtAuthenticationFilter jwtAuthenticationFilter) { + @Autowired + public void setDefaultApiBasePath(String defaultApiBasePath) { + this.defaultApiBasePath = defaultApiBasePath; + } + + @Autowired(required = false) + public void setJwtAuthenticationFilter(@Lazy JwtAuthenticationFilter jwtAuthenticationFilter) { this.jwtAuthenticationFilter = jwtAuthenticationFilter; } - @Autowired(required = false) // Prevent circular dependency. - public void setJwtAuthorizationFilter(JwtAuthorizationFilter jwtAuthorizationFilter) { + @Autowired(required = false) + public void setJwtAuthorizationFilter(@Lazy JwtAuthorizationFilter jwtAuthorizationFilter) { this.jwtAuthorizationFilter = jwtAuthorizationFilter; } - @Autowired(required = false) // Prevent circular dependency. - public void setSignRequestAuthorizationFilter(SignRequestAuthorizationFilter signRequestAuthorizationFilter) { + @Autowired(required = false) + public void setSignRequestAuthorizationFilter( + @Lazy SignRequestAuthorizationFilter signRequestAuthorizationFilter + ) { this.signRequestAuthorizationFilter = signRequestAuthorizationFilter; } - @Autowired(required = false) // Prevent circular dependency. - public void setDefaultApiBasePath(String defaultApiBasePath) { - this.defaultApiBasePath = defaultApiBasePath; - } - - @Autowired(required = false) // Lazy binding. + @Autowired(required = false) public void setWebSecurityCorsProperties( - @Qualifier("webSecurityCorsProperties") CorsProperties webSecurityCorsProperties + @Lazy @Qualifier("webSecurityCorsProperties") CorsProperties webSecurityCorsProperties ) { this.webSecurityCorsProperties = webSecurityCorsProperties; } - @Autowired(required = false) // Only defined if CORS enabled for GraphQL. + @Autowired(required = false) public void setGraphQLCorsFilter(@Qualifier("corsConfigurer") CorsFilter graphQLCorsFilter) { this.graphQLCorsFilter = graphQLCorsFilter; } diff --git a/common-web/src/main/java/io/herd/common/web/configuration/OpenApiConfiguration.java b/common-web/src/main/java/io/herd/common/web/configuration/OpenApiConfiguration.java index a8d9153..89514f1 100644 --- a/common-web/src/main/java/io/herd/common/web/configuration/OpenApiConfiguration.java +++ b/common-web/src/main/java/io/herd/common/web/configuration/OpenApiConfiguration.java @@ -46,7 +46,7 @@ * via Open API (formally Swagger API). */ @Configuration -@ConditionalOnWebApplication +@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) @ConditionalOnProperty(name = "springdoc.enabled", havingValue = "true") @EnableConfigurationProperties(SpringDocProperties.class) @Import({ diff --git a/common-web/src/main/java/io/herd/common/web/configuration/WebAutoConfiguration.java b/common-web/src/main/java/io/herd/common/web/configuration/WebAutoConfiguration.java index aa1e490..3aac1df 100644 --- a/common-web/src/main/java/io/herd/common/web/configuration/WebAutoConfiguration.java +++ b/common-web/src/main/java/io/herd/common/web/configuration/WebAutoConfiguration.java @@ -70,7 +70,7 @@ @Slf4j @Configuration(proxyBeanMethods = false) -@ConditionalOnWebApplication +@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) @AutoConfigureAfter({HibernateJpaAutoConfiguration.class, GraphQLWebAutoConfiguration.class}) @EnableWebMvc @EnableConfigurationProperties(OpenApiClientProperties.class) @@ -106,9 +106,9 @@ public WebAutoConfiguration( this.entityManager = entityManager.getIfAvailable(); } - @Autowired(required = false) // Lazy binding. + @Autowired public void setWebCorsProperties( - @Qualifier("webCorsProperties") CorsProperties webCorsProperties + @Lazy @Qualifier("webCorsProperties") CorsProperties webCorsProperties ) { this.webCorsProperties = webCorsProperties; }