2
0
Эх сурвалжийг харах

Fix package tangle in OAuth2Configurer

Fixes gh-5342
Joe Grandja 7 жил өмнө
parent
commit
81a73e1f55

+ 2 - 2
config/src/main/java/org/springframework/security/config/annotation/web/builders/HttpSecurity.java

@@ -999,8 +999,8 @@ public final class HttpSecurity extends
 	 * @return the {@link OAuth2Configurer} for further customizations
 	 * @throws Exception
 	 */
-	public OAuth2Configurer oauth2() throws Exception {
-		return getOrApply(new OAuth2Configurer());
+	public OAuth2Configurer<HttpSecurity> oauth2() throws Exception {
+		return getOrApply(new OAuth2Configurer<>());
 	}
 
 	/**

+ 39 - 9
config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/OAuth2Configurer.java

@@ -15,6 +15,8 @@
  */
 package org.springframework.security.config.annotation.web.configurers.oauth2;
 
+import org.springframework.security.config.annotation.ObjectPostProcessor;
+import org.springframework.security.config.annotation.web.HttpSecurityBuilder;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
 import org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2ClientConfigurer;
@@ -29,7 +31,11 @@ import org.springframework.security.config.annotation.web.configurers.oauth2.cli
  * @see OAuth2ClientConfigurer
  * @see AbstractHttpConfigurer
  */
-public final class OAuth2Configurer extends AbstractHttpConfigurer<OAuth2Configurer, HttpSecurity> {
+public final class OAuth2Configurer<B extends HttpSecurityBuilder<B>>
+		extends AbstractHttpConfigurer<OAuth2Configurer<B>, B> {
+
+	private final OAuth2ClientConfigurer<B> clientConfigurer = new OAuth2ClientConfigurer<>();
+	private boolean clientEnabled;
 
 	/**
 	 * Returns the {@link OAuth2ClientConfigurer} for configuring OAuth 2.0 Client support.
@@ -37,16 +43,40 @@ public final class OAuth2Configurer extends AbstractHttpConfigurer<OAuth2Configu
 	 * @return the {@link OAuth2ClientConfigurer}
 	 * @throws Exception
 	 */
-	public OAuth2ClientConfigurer<HttpSecurity> client() throws Exception {
-		return this.getOrApply(new OAuth2ClientConfigurer<>());
+	public OAuth2ClientConfigurer<B> client() throws Exception {
+		this.clientEnabled = true;
+		return this.clientConfigurer;
 	}
 
-	@SuppressWarnings("unchecked")
-	private <C extends AbstractHttpConfigurer<C, HttpSecurity>> C getOrApply(C configurer) throws Exception {
-		C existingConfigurer = (C) this.getBuilder().getConfigurer(configurer.getClass());
-		if (existingConfigurer != null) {
-			return existingConfigurer;
+	@Override
+	public void init(B builder) throws Exception {
+		if (this.clientEnabled) {
+			this.clientConfigurer.init(builder);
 		}
-		return this.getBuilder().apply(configurer);
+	}
+
+	@Override
+	public void configure(B builder) throws Exception {
+		if (this.clientEnabled) {
+			this.clientConfigurer.configure(builder);
+		}
+	}
+
+	@Override
+	public void setBuilder(B builder) {
+		this.clientConfigurer.setBuilder(builder);
+		super.setBuilder(builder);
+	}
+
+	@Override
+	public void addObjectPostProcessor(ObjectPostProcessor<?> objectPostProcessor) {
+		this.clientConfigurer.addObjectPostProcessor(objectPostProcessor);
+		super.addObjectPostProcessor(objectPostProcessor);
+	}
+
+	@Override
+	public OAuth2Configurer<B> withObjectPostProcessor(ObjectPostProcessor<?> objectPostProcessor) {
+		this.clientConfigurer.withObjectPostProcessor(objectPostProcessor);
+		return super.withObjectPostProcessor(objectPostProcessor);
 	}
 }