mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-21 16:19:42 +00:00
Refactor CacheCondition to remove multiple casts
Closes gh-47208
This commit is contained in:
+8
-6
@@ -26,7 +26,7 @@ import org.springframework.context.annotation.ConditionContext;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.core.type.AnnotatedTypeMetadata;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
import org.springframework.core.type.ClassMetadata;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* General cache condition used with all cache configuration classes.
|
||||
@@ -39,10 +39,12 @@ class CacheCondition extends SpringBootCondition {
|
||||
|
||||
@Override
|
||||
public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) {
|
||||
String sourceClass = "";
|
||||
if (metadata instanceof ClassMetadata classMetadata) {
|
||||
sourceClass = classMetadata.getClassName();
|
||||
}
|
||||
Assert.isInstanceOf(AnnotationMetadata.class, metadata);
|
||||
return extracted(context, (AnnotationMetadata) metadata);
|
||||
}
|
||||
|
||||
private ConditionOutcome extracted(ConditionContext context, AnnotationMetadata metadata) {
|
||||
String sourceClass = metadata.getClassName();
|
||||
ConditionMessage.Builder message = ConditionMessage.forCondition("Cache", sourceClass);
|
||||
Environment environment = context.getEnvironment();
|
||||
try {
|
||||
@@ -50,7 +52,7 @@ class CacheCondition extends SpringBootCondition {
|
||||
if (!specified.isBound()) {
|
||||
return ConditionOutcome.match(message.because("automatic cache type"));
|
||||
}
|
||||
CacheType required = CacheConfigurations.getType(((AnnotationMetadata) metadata).getClassName());
|
||||
CacheType required = CacheConfigurations.getType(metadata.getClassName());
|
||||
if (specified.get() == required) {
|
||||
return ConditionOutcome.match(message.because(specified.get() + " cache type"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user