Improve exception message when configuration class parsing fails

This commit improves the exception that is thrown when a particular
source class cannot be parsed. Previously, the message would include
the root configuration class, which may not be the class that
actually failed as parsing can trigger component scan. There's now
a dedicated catch that generates an exception message that includes the
class that is currently parsed.

Closes gh-31146
This commit is contained in:
Stéphane Nicoll 2023-10-24 18:30:26 +02:00
parent a71eb3fb08
commit d23263619a
1 changed files with 11 additions and 4 deletions

View File

@ -238,11 +238,18 @@ class ConfigurationClassParser {
}
// Recursively process the configuration class and its superclass hierarchy.
SourceClass sourceClass = asSourceClass(configClass, filter);
do {
sourceClass = doProcessConfigurationClass(configClass, sourceClass, filter);
SourceClass sourceClass = null;
try {
sourceClass = asSourceClass(configClass, filter);
do {
sourceClass = doProcessConfigurationClass(configClass, sourceClass, filter);
}
while (sourceClass != null);
}
catch (IOException ex) {
throw new BeanDefinitionStoreException(
"I/O failure while processing configuration class [" + sourceClass + "]", ex);
}
while (sourceClass != null);
this.configurationClasses.put(configClass, configClass);
}