From 230ac848ebd72ff476d925a7b03fbf0d4b447580 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Tue, 20 Aug 2019 16:39:50 +0200 Subject: [PATCH 1/4] ignore old plugins folder --- .../src/main/java/sonia/scm/plugin/PluginProcessor.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java index b91ee9b1ee..0613f4ef07 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java @@ -60,6 +60,8 @@ import java.util.Date; import java.util.List; import java.util.Set; +import static java.util.stream.Collectors.toList; + //~--- JDK imports ------------------------------------------------------------ /** @@ -171,7 +173,11 @@ public final class PluginProcessor extract(archives); - List dirs = collectPluginDirectories(pluginDirectory); + List dirs = + collectPluginDirectories(pluginDirectory) + .stream() + .filter(dir -> !dir.endsWith("sonia.scm.plugins")) + .collect(toList()); logger.debug("process {} directories: {}", dirs.size(), dirs); From 58e5667e82b86192645dc90a219fe69a2142aa2a Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Tue, 27 Aug 2019 08:52:38 +0200 Subject: [PATCH 2/4] pluginprocessor only consider directories that contains plugin.xml --- .../src/main/java/sonia/scm/plugin/PluginProcessor.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java index 0613f4ef07..6f1b18034e 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java @@ -59,6 +59,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; +import java.util.function.Predicate; import static java.util.stream.Collectors.toList; @@ -176,7 +177,7 @@ public final class PluginProcessor List dirs = collectPluginDirectories(pluginDirectory) .stream() - .filter(dir -> !dir.endsWith("sonia.scm.plugins")) + .filter(isPluginDirectory()) .collect(toList()); logger.debug("process {} directories: {}", dirs.size(), dirs); @@ -200,6 +201,10 @@ public final class PluginProcessor return ImmutableSet.copyOf(wrappers); } + private Predicate isPluginDirectory() { + return dir -> new File(dir.resolve("META-INF/scm/plugin.xml").toString()).exists(); + } + /** * Method description * From b36c2dd698f14d5e951e41870ca2dada2c6d8300 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 27 Aug 2019 13:59:14 +0200 Subject: [PATCH 3/4] use nio api and added test for plugin directory check --- .../main/java/sonia/scm/plugin/PluginProcessor.java | 3 ++- .../java/sonia/scm/plugin/PluginProcessorTest.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java index 6f1b18034e..5588349cc8 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java @@ -71,6 +71,7 @@ import static java.util.stream.Collectors.toList; * * TODO don't mix nio and io */ +@SuppressWarnings("squid:S3725") // performance is not critical, for this type of checks public final class PluginProcessor { @@ -202,7 +203,7 @@ public final class PluginProcessor } private Predicate isPluginDirectory() { - return dir -> new File(dir.resolve("META-INF/scm/plugin.xml").toString()).exists(); + return dir -> Files.exists(dir.resolve(DIRECTORY_METAINF).resolve("scm").resolve("plugin.xml")); } /** diff --git a/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java b/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java index 87e9cbf7b7..e9eaea3afa 100644 --- a/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java +++ b/scm-webapp/src/test/java/sonia/scm/plugin/PluginProcessorTest.java @@ -134,6 +134,16 @@ public class PluginProcessorTest assertThat(plugin.getId(), is(PLUGIN_A.id)); } + @Test + public void shouldCollectPluginsAndDoNotFailOnNonPluginDirectories() throws IOException { + new File(pluginDirectory, "some-directory").mkdirs(); + + copySmp(PLUGIN_A); + PluginWrapper plugin = collectAndGetFirst(); + + assertThat(plugin.getId(), is(PLUGIN_A.id)); + } + /** * Method description * From 3cd1cdfa4f6bf3efd002e40a31d8b7da4d9987eb Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 27 Aug 2019 12:30:25 +0000 Subject: [PATCH 4/4] Close branch bugfix/ignore_old_plugin_dir