@@ -468,6 +468,9 @@ private Set<MethodMetadata> retrieveBeanMethodMetadata(SourceClass sourceClass)
468
468
* the superclass exposure on a different config class with the same superclass.
469
469
*/
470
470
private void removeKnownSuperclass (String removedClass , boolean replace ) {
471
+ String replacedSuperclass = null ;
472
+ ConfigurationClass replacingClass = null ;
473
+
471
474
Iterator <Map .Entry <String , List <ConfigurationClass >>> it = this .knownSuperclasses .entrySet ().iterator ();
472
475
while (it .hasNext ()) {
473
476
Map .Entry <String , List <ConfigurationClass >> entry = it .next ();
@@ -476,22 +479,29 @@ private void removeKnownSuperclass(String removedClass, boolean replace) {
476
479
it .remove ();
477
480
}
478
481
else if (replace ) {
479
- try {
480
- ConfigurationClass otherClass = entry .getValue ().get (0 );
481
- SourceClass sourceClass = asSourceClass (otherClass , DEFAULT_EXCLUSION_FILTER ).getSuperClass ();
482
- while (!sourceClass .getMetadata ().getClassName ().equals (entry .getKey ()) &&
483
- sourceClass .getMetadata ().getSuperClassName () != null ) {
484
- sourceClass = sourceClass .getSuperClass ();
485
- }
486
- doProcessConfigurationClass (otherClass , sourceClass , DEFAULT_EXCLUSION_FILTER );
487
- }
488
- catch (IOException ex ) {
489
- throw new BeanDefinitionStoreException (
490
- "I/O failure while removing configuration class [" + removedClass + "]" , ex );
491
- }
482
+ replacedSuperclass = entry .getKey ();
483
+ replacingClass = entry .getValue ().get (0 );
492
484
}
493
485
}
494
486
}
487
+
488
+ if (replacingClass != null ) {
489
+ try {
490
+ SourceClass sourceClass = asSourceClass (replacingClass , DEFAULT_EXCLUSION_FILTER ).getSuperClass ();
491
+ while (!sourceClass .getMetadata ().getClassName ().equals (replacedSuperclass ) &&
492
+ sourceClass .getMetadata ().getSuperClassName () != null ) {
493
+ sourceClass = sourceClass .getSuperClass ();
494
+ }
495
+ do {
496
+ sourceClass = doProcessConfigurationClass (replacingClass , sourceClass , DEFAULT_EXCLUSION_FILTER );
497
+ }
498
+ while (sourceClass != null );
499
+ }
500
+ catch (IOException ex ) {
501
+ throw new BeanDefinitionStoreException (
502
+ "I/O failure while removing configuration class [" + removedClass + "]" , ex );
503
+ }
504
+ }
495
505
}
496
506
497
507
/**
0 commit comments