This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git


The following commit(s) were added to refs/heads/master by this push:
     new dcf8dacf Fix PluginDescriptorCache
dcf8dacf is described below

commit dcf8dacfd40c870efaa20b8e4d5e6736ed6c5656
Author: Stefan Oehme <st.oe...@gmail.com>
AuthorDate: Thu Apr 6 15:36:32 2023 +0200

    Fix PluginDescriptorCache
    
    The second get-method wasn't actually overloaded, but had a different
    signature than the superclass. This resulted in the superclass cache
    being filled and never cleared, even when flush is called.
---
 .../invalidating/InvalidatingPluginDescriptorCache.java  | 10 ++++------
 .../invalidating/InvalidatingPluginDescriptorCache.java  | 16 +++++-----------
 2 files changed, 9 insertions(+), 17 deletions(-)

diff --git 
a/daemon-m39/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
 
b/daemon-m39/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
index 23862274..0d8b924f 100644
--- 
a/daemon-m39/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
+++ 
b/daemon-m39/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
@@ -48,12 +48,6 @@ import org.mvndaemon.mvnd.cache.CacheRecord;
 @Priority(10)
 public class InvalidatingPluginDescriptorCache extends 
DefaultPluginDescriptorCache {
 
-    @FunctionalInterface
-    public interface PluginDescriptorSupplier {
-        PluginDescriptor load()
-                throws PluginResolutionException, 
PluginDescriptorParsingException, InvalidPluginDescriptorException;
-    }
-
     protected static class Record implements CacheRecord {
 
         private final PluginDescriptor descriptor;
@@ -71,6 +65,9 @@ public class InvalidatingPluginDescriptorCache extends 
DefaultPluginDescriptorCa
         @Override
         public void invalidate() {
             ClassRealm realm = descriptor.getClassRealm();
+            if (realm == null) {
+                return;
+            }
             try {
                 realm.getWorld().disposeRealm(realm.getId());
             } catch (NoSuchRealmException e) {
@@ -97,6 +94,7 @@ public class InvalidatingPluginDescriptorCache extends 
DefaultPluginDescriptorCa
         return r != null ? clone(r.descriptor) : null;
     }
 
+    @Override
     public PluginDescriptor get(Key key, PluginDescriptorSupplier supplier)
             throws PluginDescriptorParsingException, 
PluginResolutionException, InvalidPluginDescriptorException {
         try {
diff --git 
a/daemon-m40/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
 
b/daemon-m40/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
index 23862274..18f4205c 100644
--- 
a/daemon-m40/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
+++ 
b/daemon-m40/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
@@ -29,10 +29,7 @@ import java.util.Optional;
 import java.util.stream.Stream;
 
 import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.DefaultPluginDescriptorCache;
-import org.apache.maven.plugin.InvalidPluginDescriptorException;
-import org.apache.maven.plugin.PluginDescriptorParsingException;
-import org.apache.maven.plugin.PluginResolutionException;
+import org.apache.maven.plugin.*;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
@@ -47,13 +44,6 @@ import org.mvndaemon.mvnd.cache.CacheRecord;
 @Named
 @Priority(10)
 public class InvalidatingPluginDescriptorCache extends 
DefaultPluginDescriptorCache {
-
-    @FunctionalInterface
-    public interface PluginDescriptorSupplier {
-        PluginDescriptor load()
-                throws PluginResolutionException, 
PluginDescriptorParsingException, InvalidPluginDescriptorException;
-    }
-
     protected static class Record implements CacheRecord {
 
         private final PluginDescriptor descriptor;
@@ -71,6 +61,9 @@ public class InvalidatingPluginDescriptorCache extends 
DefaultPluginDescriptorCa
         @Override
         public void invalidate() {
             ClassRealm realm = descriptor.getClassRealm();
+            if (realm == null) {
+                return;
+            }
             try {
                 realm.getWorld().disposeRealm(realm.getId());
             } catch (NoSuchRealmException e) {
@@ -97,6 +90,7 @@ public class InvalidatingPluginDescriptorCache extends 
DefaultPluginDescriptorCa
         return r != null ? clone(r.descriptor) : null;
     }
 
+    @Override
     public PluginDescriptor get(Key key, PluginDescriptorSupplier supplier)
             throws PluginDescriptorParsingException, 
PluginResolutionException, InvalidPluginDescriptorException {
         try {

Reply via email to