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]

Reply via email to