ImportRegistry properly tracks excluded superclasses
Issue: SPR-14972
This commit is contained in:
@@ -129,7 +129,7 @@ class ConfigurationClassBeanDefinitionReader {
|
||||
if (StringUtils.hasLength(beanName) && this.registry.containsBeanDefinition(beanName)) {
|
||||
this.registry.removeBeanDefinition(beanName);
|
||||
}
|
||||
this.importRegistry.removeImportingClassFor(configClass.getMetadata().getClassName());
|
||||
this.importRegistry.removeImportingClass(configClass.getMetadata().getClassName());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -643,23 +643,24 @@ class ConfigurationClassParser {
|
||||
this.imports.add(importedClass, importingClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeImportingClassFor(String importedClass) {
|
||||
for (List<AnnotationMetadata> list : this.imports.values()) {
|
||||
for (Iterator<AnnotationMetadata> iterator = list.iterator(); iterator.hasNext();) {
|
||||
if (iterator.next().getClassName().equals(importedClass)) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnnotationMetadata getImportingClassFor(String importedClass) {
|
||||
List<AnnotationMetadata> list = this.imports.get(importedClass);
|
||||
return (!CollectionUtils.isEmpty(list) ? list.get(list.size() - 1) : null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeImportingClass(String importingClass) {
|
||||
for (List<AnnotationMetadata> list : this.imports.values()) {
|
||||
for (Iterator<AnnotationMetadata> iterator = list.iterator(); iterator.hasNext();) {
|
||||
if (iterator.next().getClassName().equals(importingClass)) {
|
||||
iterator.remove();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a stack containing (in order)
|
||||
* <ul>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -38,7 +38,7 @@ public interface ConfigurationCondition extends Condition {
|
||||
/**
|
||||
* The various configuration phases where the condition could be evaluated.
|
||||
*/
|
||||
public static enum ConfigurationPhase {
|
||||
enum ConfigurationPhase {
|
||||
|
||||
/**
|
||||
* The {@link Condition} should be evaluated as a {@code @Configuration}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -26,6 +26,6 @@ interface ImportRegistry {
|
||||
|
||||
AnnotationMetadata getImportingClassFor(String importedClass);
|
||||
|
||||
void removeImportingClassFor(String importedClass);
|
||||
void removeImportingClass(String importingClass);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user