From f266d65c950059b7cd85d3097e68fafd5f044d62 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Sun, 15 Nov 2020 13:37:41 +0100
Subject: [PATCH] #163 - Update libPlugins, prevent duplicated plugin loading

---
 .../playpad/initialize/PluginLoadingTask.scala     |  8 ++++++++
 PlayWallCore/pom.xml                               |  4 ++++
 .../tobias/playpad/plugin/ModernPluginManager.java | 14 +++++++-------
 .../playpad/awakeplugin/AwakePluginImpl.java       |  2 +-
 .../equalizerplugin/impl/EqualizerPluginImpl.java  |  2 +-
 .../launchpadplugin/impl/LaunchpadPluginImpl.java  |  2 +-
 .../plugin/media/main/impl/MediaPluginImpl.java    |  2 +-
 .../playpad/plugin/NativeAudioPluginImpl.scala     |  3 ++-
 .../playpad/plugin/playout/PlayoutLogPlugin.java   |  2 +-
 .../tobias/playpad/plugin/api/WebApiPlugin.scala   |  3 ++-
 pom.xml                                            |  9 +--------
 11 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/PlayWall/src/main/scala/de/tobias/playpad/initialize/PluginLoadingTask.scala b/PlayWall/src/main/scala/de/tobias/playpad/initialize/PluginLoadingTask.scala
index 0d415d80..7b4d7bac 100644
--- a/PlayWall/src/main/scala/de/tobias/playpad/initialize/PluginLoadingTask.scala
+++ b/PlayWall/src/main/scala/de/tobias/playpad/initialize/PluginLoadingTask.scala
@@ -1,4 +1,5 @@
 package de.tobias.playpad.initialize
+
 import java.io.IOException
 import java.nio.file.{Path, Paths}
 
@@ -8,6 +9,8 @@ import de.thecodelabs.utils.application.ApplicationUtils
 import de.thecodelabs.utils.application.container.PathType
 import de.tobias.playpad.PlayPadImpl
 import de.tobias.playpad.plugin.ModernPluginManager
+import javafx.application.Platform
+import org.controlsfx.dialog.ExceptionDialog
 
 class PluginLoadingTask extends PlayPadInitializeTask {
 	override def name(): String = "Plugins"
@@ -34,6 +37,11 @@ class PluginLoadingTask extends PlayPadInitializeTask {
 			case e: Exception =>
 				Logger.error("Unable to load plugins")
 				Logger.error(e)
+
+				Platform.runLater(() => {
+					val dialog = new ExceptionDialog(e)
+					dialog.showAndWait()
+				})
 		}
 	}
 
diff --git a/PlayWallCore/pom.xml b/PlayWallCore/pom.xml
index e2f7f2d2..0bef26a7 100644
--- a/PlayWallCore/pom.xml
+++ b/PlayWallCore/pom.xml
@@ -29,10 +29,14 @@
         <dependency>
             <groupId>de.thecodelabs</groupId>
             <artifactId>libPlugins-core</artifactId>
+            <version>${libPlugins.version}</version>
+            <classifier>java8</classifier>
         </dependency>
         <dependency>
             <groupId>de.thecodelabs</groupId>
             <artifactId>libPlugins-versionizer</artifactId>
+            <version>${libPlugins.version}</version>
+            <classifier>java8</classifier>
         </dependency>
         <dependency>
             <groupId>de.thecodelabs.versionizer</groupId>
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/ModernPluginManager.java b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/ModernPluginManager.java
index 6a771056..40505787 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/plugin/ModernPluginManager.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/plugin/ModernPluginManager.java
@@ -2,8 +2,8 @@ package de.tobias.playpad.plugin;
 
 import de.thecodelabs.logger.Logger;
 import de.thecodelabs.plugins.Plugin;
-import de.thecodelabs.plugins.PluginArtifact;
 import de.thecodelabs.plugins.PluginManager;
+import de.thecodelabs.plugins.versionizer.PluginArtifact;
 import de.thecodelabs.utils.application.ApplicationUtils;
 import de.thecodelabs.utils.application.container.PathType;
 import de.tobias.playpad.PlayPadPlugin;
@@ -25,10 +25,10 @@ public class ModernPluginManager {
 
 	private static final String PLUGIN_INFO_TXT = "pluginInfo.txt";
 
-	private PluginManager pluginManager;
-	private Set<Path> deletedPlugins;
+	private final PluginManager pluginManager;
+	private final Set<Path> deletedPlugins;
 
-	private Set<Module> modules;
+	private final Set<Module> modules;
 
 	private static ModernPluginManager instance;
 
@@ -59,14 +59,14 @@ public class ModernPluginManager {
 
 	public void loadFile(Path path) {
 		if (path.endsWith("classes")) {
-			pluginManager.addFile(path);
+			pluginManager.addPluginFile(path);
 		} else {
-			pluginManager.addFolder(path);
+			pluginManager.addPluginsOfDirectory(path);
 		}
 		pluginManager.loadPlugins();
 
 		// Registriert Funktionen aus Plugin (Module)
-		for (Plugin p : pluginManager.getPlugins()) {
+		for (Plugin p : pluginManager.getLoadedPlugins()) {
 			if (p instanceof PlayPadPluginStub) {
 				modules.add(((PlayPadPluginStub) p).getModule());
 			}
diff --git a/PlayWallPlugins/PlayWallPluginAwake/src/main/java/de/tobias/playpad/awakeplugin/AwakePluginImpl.java b/PlayWallPlugins/PlayWallPluginAwake/src/main/java/de/tobias/playpad/awakeplugin/AwakePluginImpl.java
index aa546a32..4c47a3b6 100644
--- a/PlayWallPlugins/PlayWallPluginAwake/src/main/java/de/tobias/playpad/awakeplugin/AwakePluginImpl.java
+++ b/PlayWallPlugins/PlayWallPluginAwake/src/main/java/de/tobias/playpad/awakeplugin/AwakePluginImpl.java
@@ -1,8 +1,8 @@
 package de.tobias.playpad.awakeplugin;
 
 import de.thecodelabs.logger.Logger;
-import de.thecodelabs.plugins.PluginArtifact;
 import de.thecodelabs.plugins.PluginDescriptor;
+import de.thecodelabs.plugins.versionizer.PluginArtifact;
 import de.thecodelabs.utils.application.system.NativeApplication;
 import de.thecodelabs.utils.ui.icon.FontAwesomeType;
 import de.thecodelabs.utils.ui.icon.FontIcon;
diff --git a/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java b/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java
index 6ff24f83..f65d2d28 100644
--- a/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java
+++ b/PlayWallPlugins/PlayWallPluginEqualizer/src/main/java/de/tobias/playpad/equalizerplugin/impl/EqualizerPluginImpl.java
@@ -1,8 +1,8 @@
 package de.tobias.playpad.equalizerplugin.impl;
 
 import de.thecodelabs.logger.Logger;
-import de.thecodelabs.plugins.PluginArtifact;
 import de.thecodelabs.plugins.PluginDescriptor;
+import de.thecodelabs.plugins.versionizer.PluginArtifact;
 import de.thecodelabs.utils.application.ApplicationUtils;
 import de.thecodelabs.utils.application.container.PathType;
 import de.thecodelabs.utils.ui.NVCStage;
diff --git a/PlayWallPlugins/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/impl/LaunchpadPluginImpl.java b/PlayWallPlugins/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/impl/LaunchpadPluginImpl.java
index 3c153f97..0a62f947 100644
--- a/PlayWallPlugins/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/impl/LaunchpadPluginImpl.java
+++ b/PlayWallPlugins/PlayWallPluginLaunchpad/src/main/java/de/tobias/playpad/launchpadplugin/impl/LaunchpadPluginImpl.java
@@ -2,8 +2,8 @@ package de.tobias.playpad.launchpadplugin.impl;
 
 import de.thecodelabs.logger.Logger;
 import de.thecodelabs.midi.midi.feedback.MidiFeedbackTranscriptionRegistry;
-import de.thecodelabs.plugins.PluginArtifact;
 import de.thecodelabs.plugins.PluginDescriptor;
+import de.thecodelabs.plugins.versionizer.PluginArtifact;
 import de.tobias.playpad.launchpadplugin.midi.mk2.LaunchPadMK2;
 import de.tobias.playpad.launchpadplugin.midi.s.LaunchPadS;
 import de.tobias.playpad.plugin.Module;
diff --git a/PlayWallPlugins/PlayWallPluginMedia/src/main/java/de/tobias/playpad/plugin/media/main/impl/MediaPluginImpl.java b/PlayWallPlugins/PlayWallPluginMedia/src/main/java/de/tobias/playpad/plugin/media/main/impl/MediaPluginImpl.java
index 0565647d..3fa00ae7 100644
--- a/PlayWallPlugins/PlayWallPluginMedia/src/main/java/de/tobias/playpad/plugin/media/main/impl/MediaPluginImpl.java
+++ b/PlayWallPlugins/PlayWallPluginMedia/src/main/java/de/tobias/playpad/plugin/media/main/impl/MediaPluginImpl.java
@@ -2,8 +2,8 @@ package de.tobias.playpad.plugin.media.main.impl;
 
 import de.thecodelabs.logger.Logger;
 import de.thecodelabs.midi.action.ActionRegistry;
-import de.thecodelabs.plugins.PluginArtifact;
 import de.thecodelabs.plugins.PluginDescriptor;
+import de.thecodelabs.plugins.versionizer.PluginArtifact;
 import de.thecodelabs.utils.ui.icon.FontAwesomeType;
 import de.thecodelabs.utils.ui.icon.FontIcon;
 import de.thecodelabs.utils.ui.scene.HUD;
diff --git a/PlayWallPlugins/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/NativeAudioPluginImpl.scala b/PlayWallPlugins/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/NativeAudioPluginImpl.scala
index 040c23f8..c273ca5d 100644
--- a/PlayWallPlugins/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/NativeAudioPluginImpl.scala
+++ b/PlayWallPlugins/PlayWallPluginNativeAudio/src/main/scala/de/tobias/playpad/plugin/NativeAudioPluginImpl.scala
@@ -1,6 +1,7 @@
 package de.tobias.playpad.plugin
 
-import de.thecodelabs.plugins.{PluginArtifact, PluginDescriptor}
+import de.thecodelabs.plugins.PluginDescriptor
+import de.thecodelabs.plugins.versionizer.PluginArtifact
 import de.thecodelabs.utils.util.OS
 import de.thecodelabs.utils.util.OS.OSType
 import de.tobias.playpad.plugin.loader.{MacAudioImplLoader, WindowsAudioImplLoader}
diff --git a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java
index 278ec6c4..afa5ff76 100644
--- a/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java
+++ b/PlayWallPlugins/PlayWallPluginPlayoutLog/src/main/java/de/tobias/playpad/plugin/playout/PlayoutLogPlugin.java
@@ -2,8 +2,8 @@ package de.tobias.playpad.plugin.playout;
 
 import de.thecodelabs.logger.LogLevel;
 import de.thecodelabs.logger.Logger;
-import de.thecodelabs.plugins.PluginArtifact;
 import de.thecodelabs.plugins.PluginDescriptor;
+import de.thecodelabs.plugins.versionizer.PluginArtifact;
 import de.thecodelabs.utils.util.Localization;
 import de.tobias.playpad.PlayPadPlugin;
 import de.tobias.playpad.plugin.Module;
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala
index 2eb1c9a7..b48693f9 100644
--- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/WebApiPlugin.scala
@@ -1,7 +1,8 @@
 package de.tobias.playpad.plugin.api
 
 import de.thecodelabs.logger.Logger
-import de.thecodelabs.plugins.{PluginArtifact, PluginDescriptor}
+import de.thecodelabs.plugins.PluginDescriptor
+import de.thecodelabs.plugins.versionizer.PluginArtifact
 import de.tobias.playpad.PlayPadPlugin
 import de.tobias.playpad.plugin.api.websocket.WebSocketHandler
 import de.tobias.playpad.plugin.api.websocket.listener.{PadStatusListener, ProjectListener}
diff --git a/pom.xml b/pom.xml
index 08781928..cd8ee39d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
         <components.version>${project.version}</components.version>
 
         <jlibs.version>2.0.6</jlibs.version>
-        <libPlugins.version>2.2.1</libPlugins.version>
+        <libPlugins.version>3.0.6</libPlugins.version>
         <versionizer-api.version>1.2.0</versionizer-api.version>
 
         <jlayer.version>1.0.1</jlayer.version>
@@ -66,13 +66,6 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
-            <dependency>
-                <groupId>de.thecodelabs</groupId>
-                <artifactId>libPlugins</artifactId>
-                <version>${libPlugins.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
         </dependencies>
     </dependencyManagement>
 
-- 
GitLab