From 5468949a552d096e258b8e15630abed6b7fc90d8 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 21 May 2015 18:06:26 +0100 Subject: [PATCH] Update to latest 1.3 code --- .../CrshAutoConfigurationTests.java | 2 +- .../condition/SpringBootCondition.java | 16 ++++++++++++++++ ...ecurityOAuth2ResourceServerConfiguration.java | 11 ++--------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/CrshAutoConfigurationTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/CrshAutoConfigurationTests.java index 04d84e1634b..8f6581fd3db 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/CrshAutoConfigurationTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/CrshAutoConfigurationTests.java @@ -373,7 +373,7 @@ public class CrshAutoConfigurationTests { @Bean public AccessDecisionManager shellAccessDecisionManager() { - List> voters = new ArrayList>(); + List voters = new ArrayList(); RoleVoter voter = new RoleVoter(); voter.setRolePrefix(""); voters.add(voter); diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/SpringBootCondition.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/SpringBootCondition.java index aa1dcb3e877..c4ed041c2fb 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/SpringBootCondition.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/SpringBootCondition.java @@ -18,12 +18,16 @@ package org.springframework.boot.autoconfigure.condition; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.beans.BeanUtils; import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; +import org.springframework.context.annotation.Conditional; +import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.core.type.AnnotationMetadata; import org.springframework.core.type.ClassMetadata; import org.springframework.core.type.MethodMetadata; +import org.springframework.core.type.StandardAnnotationMetadata; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; @@ -37,6 +41,18 @@ import org.springframework.util.StringUtils; public abstract class SpringBootCondition implements Condition { private final Log logger = LogFactory.getLog(getClass()); + + public static boolean evaluateForClass(Class annotated, ConditionContext context) { + Conditional conditional = AnnotationUtils.findAnnotation(annotated, Conditional.class); + StandardAnnotationMetadata metadata = new StandardAnnotationMetadata(annotated); + for (Class type : conditional.value()) { + Condition condition = BeanUtils.instantiateClass(type); + if (condition.matches(context, metadata)) { + return true; + } + } + return false; + } @Override public final boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/resource/SpringSecurityOAuth2ResourceServerConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/resource/SpringSecurityOAuth2ResourceServerConfiguration.java index 985c8dda3ad..a869cc389b0 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/resource/SpringSecurityOAuth2ResourceServerConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/resource/SpringSecurityOAuth2ResourceServerConfiguration.java @@ -22,7 +22,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.boot.autoconfigure.condition.OnBeanCondition; import org.springframework.boot.autoconfigure.condition.SpringBootCondition; import org.springframework.boot.autoconfigure.security.SecurityProperties; import org.springframework.boot.autoconfigure.security.oauth2.ClientCredentialsProperties; @@ -36,7 +35,6 @@ import org.springframework.context.annotation.ConfigurationCondition; import org.springframework.context.annotation.Import; import org.springframework.core.env.Environment; import org.springframework.core.type.AnnotatedTypeMetadata; -import org.springframework.core.type.StandardAnnotationMetadata; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerEndpointsConfiguration; import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; @@ -111,11 +109,6 @@ public class SpringSecurityOAuth2ResourceServerConfiguration { protected static class ResourceServerCondition extends SpringBootCondition implements ConfigurationCondition { - private OnBeanCondition condition = new OnBeanCondition(); - - private StandardAnnotationMetadata beanMetaData = new StandardAnnotationMetadata( - ResourceServerCondition.class); - @Override public ConfigurationPhase getConfigurationPhase() { return ConfigurationPhase.REGISTER_BEAN; @@ -143,9 +136,9 @@ public class SpringSecurityOAuth2ResourceServerConfiguration { .isPresent( "org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerEndpointsConfiguration", null)) { - if (this.condition.matches(context, this.beanMetaData)) { + if (SpringBootCondition.evaluateForClass(ResourceServerCondition.class, context)) { return ConditionOutcome - .match("found authorization server configuration"); + .match("found authorization server endpoints configuration"); } } return ConditionOutcome