Fix package tangle in OAuth2Configurer

Fixes gh-5342
This commit is contained in:
Joe Grandja 2018-06-08 10:50:15 -04:00
parent 81e19ad85e
commit 81a73e1f55
2 changed files with 41 additions and 11 deletions

View File

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

View File

@ -15,6 +15,8 @@
*/ */
package org.springframework.security.config.annotation.web.configurers.oauth2; 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.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.config.annotation.web.configurers.oauth2.client.OAuth2ClientConfigurer; 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 OAuth2ClientConfigurer
* @see AbstractHttpConfigurer * @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. * 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} * @return the {@link OAuth2ClientConfigurer}
* @throws Exception * @throws Exception
*/ */
public OAuth2ClientConfigurer<HttpSecurity> client() throws Exception { public OAuth2ClientConfigurer<B> client() throws Exception {
return this.getOrApply(new OAuth2ClientConfigurer<>()); this.clientEnabled = true;
return this.clientConfigurer;
} }
@SuppressWarnings("unchecked") @Override
private <C extends AbstractHttpConfigurer<C, HttpSecurity>> C getOrApply(C configurer) throws Exception { public void init(B builder) throws Exception {
C existingConfigurer = (C) this.getBuilder().getConfigurer(configurer.getClass()); if (this.clientEnabled) {
if (existingConfigurer != null) { this.clientConfigurer.init(builder);
return existingConfigurer;
} }
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);
} }
} }