bito-code-review[bot] commented on PR #15995:
URL: https://github.com/apache/grails-core/pull/15995#issuecomment-5006002306
<!-- Bito Reply -->
The suggestion to improve `logUnresolvedDependencies()` by checking
`delayedLoadPlugins` and `failedPlugins` is valid and would enhance the
accuracy of the dependency resolution warnings. Currently, the method only uses
`findPlugin(name)`, which returns `null` if a plugin is not registered, causing
it to be incorrectly classified as "missing" even if it exists but failed to
load or is delayed.
To implement this, you can update the logic to check these collections
before defaulting to the "missing" classification:
```groovy
private void logUnresolvedDependencies(PluginInfo plugin) {
var unresolvedDependencies = new ArrayList<String>();
for (var name : plugin.getDependsOnNames()) {
var requiredVersion = plugin.getMetadata().getDependentVersion(name);
var dependency = findPlugin(name);
if (dependency == null) {
// Check if it exists in failed or delayed collections
if (failedPlugins.containsKey(name)) {
unresolvedDependencies.add("dependency [" + name + "] failed
to load");
} else if (delayedLoadPlugins.stream().anyMatch(p ->
p.getName().equals(name))) {
unresolvedDependencies.add("dependency [" + name + "] is
delayed");
} else {
unresolvedDependencies.add("dependency [" + name + "] with
required version [" + requiredVersion + "] is missing");
}
} else if
(!GrailsVersionUtils.isValidVersion(dependency.getPluginVersion(),
requiredVersion)) {
unresolvedDependencies.add("dependency [" + name + "] has
version [" + dependency.getPluginVersion() + "] but requires [" +
requiredVersion + "]");
}
}
// ... log warning
}
```
**grails-core/src/main/groovy/org/apache/grails/core/plugins/DefaultPluginDiscovery.java**
```
if (dependency == null) {
// Check if it exists in failed or delayed collections
if (failedPlugins.containsKey(name)) {
unresolvedDependencies.add("dependency [" + name + "] failed
to load");
} else if (delayedLoadPlugins.stream().anyMatch(p ->
p.getName().equals(name))) {
unresolvedDependencies.add("dependency [" + name + "] is
delayed");
} else {
unresolvedDependencies.add("dependency [" + name + "] with
required version [" + requiredVersion + "] is missing");
}
} else if
(!GrailsVersionUtils.isValidVersion(dependency.getPluginVersion(),
requiredVersion)) {
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]