From e09f501c45a87d82b0aaf26a8bc77fb5eb2c258d Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Sun, 21 Nov 2021 11:10:39 +0100
Subject: [PATCH] #174 - Add interfaces to base data structure

---
 .../playpad/trigger/CartTriggerItem.java      |  9 +++---
 .../trigger/CartTriggerViewController.java    |  6 ++--
 .../trigger/VolumeTriggerViewController.java  |  3 +-
 .../main/java/de/tobias/playpad/pad/Pad.java  |  3 +-
 .../de/tobias/playpad/project/Project.java    |  3 +-
 .../playpad/project/ProjectSettings.java      |  3 +-
 .../de/tobias/playpad/project/api/IPad.java   | 15 +++++++++
 .../de/tobias/playpad/project/api/IPage.java  |  5 +++
 .../tobias/playpad/project/api/IProject.java  | 11 +++++++
 .../playpad/project/api/IProjectSettings.java |  8 +++++
 .../de/tobias/playpad/project/page/Page.java  |  3 +-
 .../playpad/tigger/TriggerItemFactory.java    |  1 -
 .../playpad/view/main/ProjectPreviewView.java | 22 ++++++-------
 .../plugin/api/trigger/RemoteTriggerItem.java | 31 +++++++++++++++++++
 .../api/trigger/RemoteTriggerItemFactory.java | 24 ++++++++++++++
 .../RemoteTriggerItemSettingsController.java  |  4 +++
 .../main/resources/plugin/webapi/Trigger.xml  |  3 ++
 .../plugin/webapi/lang/base_de.properties     |  2 ++
 .../playpad/plugin/api/WebApiPlugin.scala     |  4 ++-
 19 files changed, 134 insertions(+), 26 deletions(-)
 create mode 100644 PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPad.java
 create mode 100644 PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPage.java
 create mode 100644 PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProject.java
 create mode 100644 PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProjectSettings.java
 create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItem.java
 create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemFactory.java
 create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemSettingsController.java
 create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/Trigger.xml

diff --git a/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItem.java b/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItem.java
index 7bb7597b..a9bb720c 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItem.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/trigger/CartTriggerItem.java
@@ -19,14 +19,13 @@ public class CartTriggerItem extends TriggerItem {
 	private boolean allCarts;
 	private PadStatus newStatus; // Only Play, Pause, Stop
 
-	private String type;
+	private final String type;
 
 	CartTriggerItem(String type) {
-		super();
 		this.type = type;
-		newStatus = PadStatus.PLAY;
-		allCarts = false;
-		uuids = new UniqList<>();
+		this.newStatus = PadStatus.PLAY;
+		this.allCarts = false;
+		this.uuids = new UniqList<>();
 	}
 
 	public List<UUID> getCarts() {
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java
index 1168ae13..1d58f123 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/CartTriggerViewController.java
@@ -3,9 +3,9 @@ package de.tobias.playpad.viewcontroller.option.pad.trigger;
 import de.thecodelabs.utils.ui.NVC;
 import de.thecodelabs.utils.util.Localization;
 import de.tobias.playpad.PlayPadMain;
-import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadStatus;
 import de.tobias.playpad.project.Project;
+import de.tobias.playpad.project.api.IPad;
 import de.tobias.playpad.trigger.CartTriggerItem;
 import de.tobias.playpad.view.main.ProjectPreviewView;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
@@ -35,12 +35,12 @@ public class CartTriggerViewController extends NVC {
 		this.item = item;
 
 		Project project = PlayPadMain.getProgramInstance().getCurrentProject();
-		final List<Pad> pads = item.getCarts().stream().map(project::getPad).collect(Collectors.toList());
+		final List<? extends IPad> pads = item.getCarts().stream().map(project::getPad).collect(Collectors.toList());
 		projectPreviewView = new ProjectPreviewView(project, pads, mainViewController.getPage());
 		projectPreviewView.setPadding(new Insets(0, 0, 0, 164));
 		projectPreviewView.selectedProperty().addListener((InvalidationListener) observable -> {
 			item.getCarts().clear();
-			for (Pad pad : projectPreviewView.getSelected()) {
+			for (IPad pad : projectPreviewView.getSelected()) {
 				item.getCarts().add(pad.getUuid());
 			}
 		});
diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java
index f48a5734..66718e15 100644
--- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java
+++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/trigger/VolumeTriggerViewController.java
@@ -6,6 +6,7 @@ import de.tobias.playpad.PlayPadMain;
 import de.tobias.playpad.Strings;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.project.Project;
+import de.tobias.playpad.project.api.IPad;
 import de.tobias.playpad.trigger.VolumeTriggerItem;
 import de.tobias.playpad.view.main.ProjectPreviewView;
 import de.tobias.playpad.viewcontroller.main.IMainViewController;
@@ -48,7 +49,7 @@ public class VolumeTriggerViewController extends NVC {
 		projectPreviewView.setPadding(new Insets(0, 0, 0, 164));
 		projectPreviewView.selectedProperty().addListener((InvalidationListener) observable -> {
 			item.getCarts().clear();
-			for (Pad pad : projectPreviewView.getSelected()) {
+			for (IPad pad : projectPreviewView.getSelected()) {
 				item.getCarts().add(pad.getUuid());
 			}
 		});
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
index cbefe4d2..cfc4fdd2 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/Pad.java
@@ -16,6 +16,7 @@ import de.tobias.playpad.pad.mediapath.MediaPath;
 import de.tobias.playpad.pad.viewcontroller.AbstractPadViewController;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.project.ProjectSettings;
+import de.tobias.playpad.project.api.IPad;
 import de.tobias.playpad.project.page.PadIndex;
 import de.tobias.playpad.project.page.Page;
 import de.tobias.playpad.project.page.PageCoordinate;
@@ -39,7 +40,7 @@ import java.util.UUID;
  * @author tobias
  * @version 6.2.0
  */
-public class Pad {
+public class Pad implements IPad {
 
 	private UUID uuid;
 	private IntegerProperty positionProperty = new SimpleIntegerProperty();
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/Project.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/Project.java
index eedc4bca..9d9d3962 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/project/Project.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/Project.java
@@ -3,6 +3,7 @@ package de.tobias.playpad.project;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadStatus;
 import de.tobias.playpad.pad.mediapath.MediaPath;
+import de.tobias.playpad.project.api.IProject;
 import de.tobias.playpad.project.page.PadIndex;
 import de.tobias.playpad.project.page.Page;
 import de.tobias.playpad.project.ref.ProjectReference;
@@ -27,7 +28,7 @@ import java.util.stream.Collectors;
  * @author tobias
  * @since 6.0.0
  */
-public class Project {
+public class Project implements IProject {
 
 	/**
 	 * Project file extension.
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java
index 0e4d089f..34c06549 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/ProjectSettings.java
@@ -2,10 +2,11 @@ package de.tobias.playpad.project;
 
 import de.thecodelabs.storage.settings.annotation.Key;
 import de.thecodelabs.utils.application.ApplicationUtils;
+import de.tobias.playpad.project.api.IProjectSettings;
 
 import java.nio.file.Path;
 
-public class ProjectSettings {
+public class ProjectSettings implements IProjectSettings {
 
 	public static final int MAX_PAGES;
 
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPad.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPad.java
new file mode 100644
index 00000000..cca8d720
--- /dev/null
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPad.java
@@ -0,0 +1,15 @@
+package de.tobias.playpad.project.api;
+
+import de.tobias.playpad.pad.PadStatus;
+
+import java.util.UUID;
+
+public interface IPad {
+	UUID getUuid();
+
+	String getName();
+
+	PadStatus getStatus();
+
+	int getPositionReadable();
+}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPage.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPage.java
new file mode 100644
index 00000000..23ba1b4a
--- /dev/null
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IPage.java
@@ -0,0 +1,5 @@
+package de.tobias.playpad.project.api;
+
+public interface IPage {
+	IPad getPad(int x, int y);
+}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProject.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProject.java
new file mode 100644
index 00000000..1b19a1ba
--- /dev/null
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProject.java
@@ -0,0 +1,11 @@
+package de.tobias.playpad.project.api;
+
+import java.util.List;
+
+public interface IProject {
+	List<? extends IPage> getPages();
+
+	IPage getPage(int index);
+
+	IProjectSettings getSettings();
+}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProjectSettings.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProjectSettings.java
new file mode 100644
index 00000000..d2970dcb
--- /dev/null
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/api/IProjectSettings.java
@@ -0,0 +1,8 @@
+package de.tobias.playpad.project.api;
+
+public interface IProjectSettings {
+
+	int getColumns();
+
+	int getRows();
+}
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/project/page/Page.java b/PlayWallCore/src/main/java/de/tobias/playpad/project/page/Page.java
index 24f20789..1419a7e8 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/project/page/Page.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/project/page/Page.java
@@ -3,6 +3,7 @@ package de.tobias.playpad.project.page;
 import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.project.Project;
 import de.tobias.playpad.project.ProjectSettings;
+import de.tobias.playpad.project.api.IPage;
 import de.tobias.playpad.server.sync.command.CommandManager;
 import de.tobias.playpad.server.sync.command.Commands;
 import de.tobias.playpad.server.sync.listener.upstream.PageUpdateListener;
@@ -16,7 +17,7 @@ import java.util.*;
  * @author tobias
  * @since 6.0.0
  */
-public class Page {
+public class Page implements IPage {
 
 	private UUID id;
 	private IntegerProperty positionProperty;
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java
index 118dc560..38723727 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerItemFactory.java
@@ -13,5 +13,4 @@ public abstract class TriggerItemFactory extends Component {
 	public abstract TriggerItem newInstance(Trigger trigger);
 
 	public abstract NVC getSettingsController(TriggerItem item, IMainViewController mainViewController);
-
 }
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java b/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java
index 2e16c3cb..849d9300 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/view/main/ProjectPreviewView.java
@@ -1,9 +1,9 @@
 package de.tobias.playpad.view.main;
 
-import de.tobias.playpad.pad.Pad;
 import de.tobias.playpad.pad.PadStatus;
-import de.tobias.playpad.project.Project;
-import de.tobias.playpad.project.page.Page;
+import de.tobias.playpad.project.api.IPad;
+import de.tobias.playpad.project.api.IPage;
+import de.tobias.playpad.project.api.IProject;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
 import javafx.geometry.Insets;
@@ -18,10 +18,10 @@ import java.util.List;
 
 public class ProjectPreviewView extends Pagination {
 
-	private final Project project;
-	private final ObservableList<Pad> selected;
+	private final IProject project;
+	private final ObservableList<IPad> selected;
 
-	public ProjectPreviewView(Project project, List<Pad> preSelect, int initialPage) {
+	public ProjectPreviewView(IProject project, List<? extends IPad> preSelect, int initialPage) {
 		super(project.getPages().size());
 		this.project = project;
 		this.selected = FXCollections.observableArrayList(preSelect);
@@ -38,10 +38,10 @@ public class ProjectPreviewView extends Pagination {
 
 		gridPane.setPadding(new Insets(0, 0, 7, 0));
 
-		final Page page = project.getPage(index);
+		final IPage page = project.getPage(index);
 		for (int x = 0; x < project.getSettings().getColumns(); x++) {
 			for (int y = 0; y < project.getSettings().getRows(); y++) {
-				final Pad pad = page.getPad(x, y);
+				final IPad pad = page.getPad(x, y);
 				ToggleButton toggleButton = getToggleButton(selected, pad);
 
 				gridPane.add(toggleButton, x, y);
@@ -50,7 +50,7 @@ public class ProjectPreviewView extends Pagination {
 		return gridPane;
 	}
 
-	private ToggleButton getToggleButton(List<Pad> preSelect, Pad pad) {
+	private ToggleButton getToggleButton(List<IPad> preSelect, IPad pad) {
 		ToggleButton toggleButton = new ToggleButton(String.valueOf(pad.getPositionReadable()));
 		if (pad.getStatus() != PadStatus.EMPTY) {
 			toggleButton.setTooltip(new Tooltip(pad.getName()));
@@ -72,11 +72,11 @@ public class ProjectPreviewView extends Pagination {
 		return toggleButton;
 	}
 
-	public List<Pad> getSelected() {
+	public List<? extends IPad> getSelected() {
 		return selected;
 	}
 
-	public ObservableList<Pad> selectedProperty() {
+	public ObservableList<? extends IPad> selectedProperty() {
 		return selected;
 	}
 }
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItem.java b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItem.java
new file mode 100644
index 00000000..87371e60
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItem.java
@@ -0,0 +1,31 @@
+package de.tobias.playpad.plugin.api.trigger;
+
+import de.tobias.playpad.pad.Pad;
+import de.tobias.playpad.profile.Profile;
+import de.tobias.playpad.project.Project;
+import de.tobias.playpad.tigger.TriggerItem;
+import de.tobias.playpad.viewcontroller.main.IMainViewController;
+
+public class RemoteTriggerItem extends TriggerItem {
+
+	private final String type;
+
+	public RemoteTriggerItem(String type) {
+		this.type = type;
+	}
+
+	@Override
+	public String getType() {
+		return type;
+	}
+
+	@Override
+	public void performAction(Pad pad, Project project, IMainViewController controller, Profile profile) {
+
+	}
+
+	@Override
+	public TriggerItem copy() {
+		return null;
+	}
+}
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemFactory.java b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemFactory.java
new file mode 100644
index 00000000..1e5bb19c
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemFactory.java
@@ -0,0 +1,24 @@
+package de.tobias.playpad.plugin.api.trigger;
+
+import de.thecodelabs.utils.ui.NVC;
+import de.tobias.playpad.tigger.Trigger;
+import de.tobias.playpad.tigger.TriggerItem;
+import de.tobias.playpad.tigger.TriggerItemFactory;
+import de.tobias.playpad.viewcontroller.main.IMainViewController;
+
+public class RemoteTriggerItemFactory extends TriggerItemFactory {
+
+	public RemoteTriggerItemFactory(String type) {
+		super(type);
+	}
+
+	@Override
+	public TriggerItem newInstance(Trigger trigger) {
+		return new RemoteTriggerItem(getType());
+	}
+
+	@Override
+	public NVC getSettingsController(TriggerItem item, IMainViewController mainViewController) {
+		return null;
+	}
+}
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemSettingsController.java b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemSettingsController.java
new file mode 100644
index 00000000..235f933d
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/trigger/RemoteTriggerItemSettingsController.java
@@ -0,0 +1,4 @@
+package de.tobias.playpad.plugin.api.trigger;
+
+public class RemoteTriggerItemSettingsController {
+}
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/Trigger.xml b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/Trigger.xml
new file mode 100644
index 00000000..5fb97b9b
--- /dev/null
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/Trigger.xml
@@ -0,0 +1,3 @@
+<Actions>
+    <Component id="RemoteCart" name="Trigger.RemoteCart.Name">de.tobias.playpad.plugin.api.trigger.RemoteTriggerItemFactory</Component>
+</Actions>
\ No newline at end of file
diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/lang/base_de.properties b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/lang/base_de.properties
index 7a95dbf9..74bfbb3a 100644
--- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/lang/base_de.properties
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/resources/plugin/webapi/lang/base_de.properties
@@ -11,3 +11,5 @@ webapi-settings.remote.address=IP-Address/Host
 webapi-settings.remote.port=Port
 webapi-settings.remote.add=Hinzuf\u00FCgen
 webapi-settings.remote.remove=L\u00F6schen
+
+Trigger.RemoteCart.Name=Remote Kachel
\ No newline at end of file
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 23e9900a..d9323118 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
@@ -27,12 +27,15 @@ class WebApiPlugin extends PlayPadPluginStub with PluginArtifact {
 
 	override def startup(descriptor: PluginDescriptor): Unit = {
 		module = new Module(descriptor.getName, descriptor.getArtifactId)
+		Localization.addResourceBundle("plugin/webapi/lang/base", getClass.getClassLoader)
 
 		PlayPadPlugin.getInstance().addPadListener(new PadStatusListener)
 		PlayPadPlugin.getInstance().addGlobalListener(new ProjectListener)
 
 		Logger.debug("Enable Web API Plugin")
 
+		PlayPadPlugin.getRegistries.getTriggerItems.loadComponentsFromFile("plugin/webapi/Trigger.xml", getClass.getClassLoader, module, Localization.getBundle)
+
 		val settingsPath = WebApiPlugin.getWebApiSettingsPath
 		if (Files.exists(settingsPath)) {
 			webApiSettings = Storage.load(StorageTypes.JSON, classOf[WebApiSettings])
@@ -62,7 +65,6 @@ class WebApiPlugin extends PlayPadPluginStub with PluginArtifact {
 		})
 
 		PlayPadPlugin.getInstance().addGlobalSettingsTab(() => new WebApiSettingsViewController(webApiSettings))
-		Localization.addResourceBundle("plugin/webapi/lang/base", getClass.getClassLoader)
 	}
 
 	override def shutdown(): Unit = {
-- 
GitLab