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
* @throws Exception
*/
public OAuth2Configurer oauth2() throws Exception {
return getOrApply(new OAuth2Configurer());
public OAuth2Configurer<HttpSecurity> oauth2() throws Exception {
return getOrApply(new OAuth2Configurer<>());
}
/**

View File

@ -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);
}
}