diff --git a/oauth2/oauth2-authorization-server/spring-security-oauth2-authorization-server.gradle b/oauth2/oauth2-authorization-server/spring-security-oauth2-authorization-server.gradle index 0d19d51df5d..6d0dfca6e4d 100644 --- a/oauth2/oauth2-authorization-server/spring-security-oauth2-authorization-server.gradle +++ b/oauth2/oauth2-authorization-server/spring-security-oauth2-authorization-server.gradle @@ -1,3 +1,7 @@ +plugins { + id 'compile-warnings-error' +} + apply plugin: 'io.spring.convention.spring-module' dependencies { diff --git a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/JdbcOAuth2AuthorizationService.java b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/JdbcOAuth2AuthorizationService.java index 1488eed18ea..852f958f55d 100644 --- a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/JdbcOAuth2AuthorizationService.java +++ b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/JdbcOAuth2AuthorizationService.java @@ -505,6 +505,7 @@ Map readValue(String data) { * 3. */ @Deprecated(forRemoval = true, since = "7.0") + @SuppressWarnings("removal") public static class OAuth2AuthorizationRowMapper extends AbstractOAuth2AuthorizationRowMapper { private ObjectMapper objectMapper = Jackson2.createObjectMapper(); @@ -747,6 +748,7 @@ String writeValueAsString(Map data) throws Exception { * Jackson 3. */ @Deprecated(forRemoval = true, since = "7.0") + @SuppressWarnings("removal") public static class OAuth2AuthorizationParametersMapper extends AbstractOAuth2AuthorizationParametersMapper { private ObjectMapper objectMapper = Jackson2.createObjectMapper(); @@ -895,6 +897,7 @@ private String writeMap(Map data) { @Deprecated(forRemoval = true, since = "7.0") private static final class Jackson2 { + @SuppressWarnings("removal") private static ObjectMapper createObjectMapper() { ObjectMapper objectMapper = new ObjectMapper(); ClassLoader classLoader = Jackson2.class.getClassLoader(); diff --git a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/aot/hint/OAuth2AuthorizationServerBeanRegistrationAotProcessor.java b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/aot/hint/OAuth2AuthorizationServerBeanRegistrationAotProcessor.java index 071f8a20a81..34199fdaf40 100644 --- a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/aot/hint/OAuth2AuthorizationServerBeanRegistrationAotProcessor.java +++ b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/aot/hint/OAuth2AuthorizationServerBeanRegistrationAotProcessor.java @@ -116,11 +116,11 @@ public void applyTo(GenerationContext generationContext, BeanRegistrationCode be private void registerHints(RuntimeHints hints) { // Collections -> UnmodifiableSet, UnmodifiableList, UnmodifiableMap, // UnmodifiableRandomAccessList, etc. - hints.reflection().registerType(Collections.class, MemberCategory.DECLARED_CLASSES); + hints.reflection().registerType(Collections.class); // HashSet hints.reflection() - .registerType(HashSet.class, MemberCategory.DECLARED_FIELDS, + .registerType(HashSet.class, MemberCategory.ACCESS_DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS); hints.reflection() @@ -138,19 +138,12 @@ private void registerHints(RuntimeHints hints) { TypeReference.of(AuthorizationGrantType.class), TypeReference.of(OAuth2AuthorizationResponseType.class), TypeReference.of(OAuth2TokenFormat.class)), - (builder) -> builder.withMembers(MemberCategory.DECLARED_FIELDS, + (builder) -> builder.withMembers(MemberCategory.ACCESS_DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS)); // Jackson Modules if (jackson2Present) { - hints.reflection() - .registerTypes( - Arrays.asList(TypeReference.of(CoreJackson2Module.class), - TypeReference.of(WebServletJackson2Module.class), - TypeReference.of(OAuth2AuthorizationServerJackson2Module.class)), - (builder) -> builder.withMembers(MemberCategory.DECLARED_FIELDS, - MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, - MemberCategory.INVOKE_DECLARED_METHODS)); + registerJackson2Modules(hints); } if (jackson3Present) { hints.reflection() @@ -158,7 +151,7 @@ private void registerHints(RuntimeHints hints) { Arrays.asList(TypeReference.of(CoreJacksonModule.class), TypeReference.of(WebServletJacksonModule.class), TypeReference.of(OAuth2AuthorizationServerJacksonModule.class)), - (builder) -> builder.withMembers(MemberCategory.DECLARED_FIELDS, + (builder) -> builder.withMembers(MemberCategory.ACCESS_DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS)); } @@ -222,7 +215,7 @@ private void registerHints(RuntimeHints hints) { hints.reflection() .registerType(TypeReference .of("org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken"), - (builder) -> builder.withMembers(MemberCategory.DECLARED_FIELDS, + (builder) -> builder.withMembers(MemberCategory.ACCESS_DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS)); @@ -231,7 +224,7 @@ private void registerHints(RuntimeHints hints) { hints.reflection() .registerType(TypeReference .of("org.springframework.security.oauth2.client.jackson2.OAuth2ClientJackson2Module"), - (builder) -> builder.withMembers(MemberCategory.DECLARED_FIELDS, + (builder) -> builder.withMembers(MemberCategory.ACCESS_DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS)); } @@ -240,7 +233,7 @@ private void registerHints(RuntimeHints hints) { .registerType( TypeReference .of("org.springframework.security.oauth2.client.jackson.OAuth2ClientJacksonModule"), - (builder) -> builder.withMembers(MemberCategory.DECLARED_FIELDS, + (builder) -> builder.withMembers(MemberCategory.ACCESS_DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS)); } @@ -281,6 +274,17 @@ private void registerHints(RuntimeHints hints) { } } + @SuppressWarnings("removal") + private void registerJackson2Modules(RuntimeHints hints) { + hints.reflection() + .registerTypes( + Arrays.asList(TypeReference.of(CoreJackson2Module.class), + TypeReference.of(WebServletJackson2Module.class), + TypeReference.of(OAuth2AuthorizationServerJackson2Module.class)), + (builder) -> builder.withMembers(MemberCategory.ACCESS_DECLARED_FIELDS, + MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS)); + } + private static Class loadClass(String className) { try { return Class.forName(className); diff --git a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/aot/hint/OAuth2AuthorizationServerRuntimeHints.java b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/aot/hint/OAuth2AuthorizationServerRuntimeHints.java index 12854d6c906..a9227faafc6 100644 --- a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/aot/hint/OAuth2AuthorizationServerRuntimeHints.java +++ b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/aot/hint/OAuth2AuthorizationServerRuntimeHints.java @@ -46,7 +46,8 @@ public void registerHints(RuntimeHints hints, ClassLoader classLoader) { .of("org.springframework.security.oauth2.server.authorization.web.OAuth2AuthorizationEndpointFilter$OAuth2AuthorizationCodeRequestValidatingFilter"), MemberCategory.INVOKE_DECLARED_CONSTRUCTORS); hints.reflection() - .registerType(OAuth2AuthorizationCodeRequestAuthenticationToken.class, MemberCategory.DECLARED_FIELDS); + .registerType(OAuth2AuthorizationCodeRequestAuthenticationToken.class, + MemberCategory.ACCESS_DECLARED_FIELDS); } diff --git a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/client/JdbcRegisteredClientRepository.java b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/client/JdbcRegisteredClientRepository.java index 29786a17128..4a10b5a8962 100644 --- a/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/client/JdbcRegisteredClientRepository.java +++ b/oauth2/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/client/JdbcRegisteredClientRepository.java @@ -283,6 +283,7 @@ Map readValue(String data) { * @deprecated Use {@link JsonMapperRegisteredClientRowMapper} to switch to Jackson 3. */ @Deprecated(forRemoval = true, since = "7.0") + @SuppressWarnings("removal") public static class RegisteredClientRowMapper extends AbstractRegisteredClientRowMapper { private ObjectMapper objectMapper = Jackson2.createObjectMapper(); @@ -435,6 +436,7 @@ String writeValueAsString(Map data) throws Exception { * Jackson 3. */ @Deprecated(forRemoval = true, since = "7.0") + @SuppressWarnings("removal") public static class RegisteredClientParametersMapper extends AbstractRegisteredClientParametersMapper { private ObjectMapper objectMapper = Jackson2.createObjectMapper(); @@ -527,6 +529,7 @@ private String writeMap(Map data) { @Deprecated(forRemoval = true, since = "7.0") private static final class Jackson2 { + @SuppressWarnings("removal") private static ObjectMapper createObjectMapper() { ObjectMapper objectMapper = new ObjectMapper(); ClassLoader classLoader = Jackson2.class.getClassLoader(); diff --git a/oauth2/oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/JdbcOAuth2AuthorizationServiceTests.java b/oauth2/oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/JdbcOAuth2AuthorizationServiceTests.java index 04f7a9a3103..62b55c23f7e 100644 --- a/oauth2/oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/JdbcOAuth2AuthorizationServiceTests.java +++ b/oauth2/oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/JdbcOAuth2AuthorizationServiceTests.java @@ -657,6 +657,7 @@ private OAuth2Authorization findBy(String filter, Object... args) { return !result.isEmpty() ? result.get(0) : null; } + @SuppressWarnings("removal") private static final class CustomOAuth2AuthorizationRowMapper extends JdbcOAuth2AuthorizationService.OAuth2AuthorizationRowMapper { @@ -794,6 +795,7 @@ private Map parseMap(String data) { } + @SuppressWarnings("removal") private static final class CustomOAuth2AuthorizationParametersMapper extends JdbcOAuth2AuthorizationService.OAuth2AuthorizationParametersMapper {