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 {