diff --git a/scm-core/src/main/java/sonia/scm/plugin/InstalledPlugin.java b/scm-core/src/main/java/sonia/scm/plugin/InstalledPlugin.java index 19f9584408..fc1fbac94a 100644 --- a/scm-core/src/main/java/sonia/scm/plugin/InstalledPlugin.java +++ b/scm-core/src/main/java/sonia/scm/plugin/InstalledPlugin.java @@ -42,21 +42,21 @@ import java.nio.file.Path; * @author Sebastian Sdorra * @since 2.0.0 */ -public final class InstalledPlugin +public final class InstalledPlugin implements Plugin { /** * Constructs a new plugin wrapper. * - * @param plugin wrapped plugin + * @param descriptor wrapped plugin * @param classLoader plugin class loader * @param webResourceLoader web resource loader * @param directory plugin directory */ - public InstalledPlugin(InstalledPluginDescriptor plugin, ClassLoader classLoader, + public InstalledPlugin(InstalledPluginDescriptor descriptor, ClassLoader classLoader, WebResourceLoader webResourceLoader, Path directory) { - this.plugin = plugin; + this.descriptor = descriptor; this.classLoader = classLoader; this.webResourceLoader = webResourceLoader; this.directory = directory; @@ -94,18 +94,19 @@ public final class InstalledPlugin */ public String getId() { - return plugin.getInformation().getId(); + return descriptor.getInformation().getId(); } /** - * Returns the plugin. + * Returns the plugin descriptor. * * - * @return plugin + * @return plugin descriptor */ - public InstalledPluginDescriptor getPlugin() + @Override + public InstalledPluginDescriptor getDescriptor() { - return plugin; + return descriptor; } /** @@ -119,6 +120,11 @@ public final class InstalledPlugin return webResourceLoader; } + @Override + public PluginState getState() { + return PluginState.INSTALLED; + } + //~--- fields --------------------------------------------------------------- /** plugin class loader */ @@ -128,7 +134,7 @@ public final class InstalledPlugin private final Path directory; /** plugin */ - private final InstalledPluginDescriptor plugin; + private final InstalledPluginDescriptor descriptor; /** plugin web resource loader */ private final WebResourceLoader webResourceLoader; diff --git a/scm-core/src/main/java/sonia/scm/plugin/Plugin.java b/scm-core/src/main/java/sonia/scm/plugin/Plugin.java new file mode 100644 index 0000000000..e39d23c046 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/plugin/Plugin.java @@ -0,0 +1,8 @@ +package sonia.scm.plugin; + +public interface Plugin { + + PluginDescriptor getDescriptor(); + PluginState getState(); + +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InstalledPluginResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InstalledPluginResource.java index e18f6772dc..66347814a3 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InstalledPluginResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InstalledPluginResource.java @@ -77,7 +77,7 @@ public class InstalledPluginResource { PluginPermissions.read().check(); Optional pluginDto = pluginLoader.getInstalledPlugins() .stream() - .filter(plugin -> name.equals(plugin.getPlugin().getInformation().getName())) + .filter(plugin -> name.equals(plugin.getDescriptor().getInformation().getName())) .map(mapper::map) .findFirst(); if (pluginDto.isPresent()) { diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java index 4967c55b31..4710fa943c 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDtoMapper.java @@ -21,7 +21,7 @@ public abstract class PluginDtoMapper { private ResourceLinks resourceLinks; public PluginDto map(InstalledPlugin plugin) { - return map(plugin.getPlugin().getInformation()); + return map(plugin.getDescriptor().getInformation()); } public abstract PluginDto map(PluginInformation plugin); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UIPluginDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UIPluginDtoMapper.java index 8a2b6cb0c1..5eecaa0561 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UIPluginDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UIPluginDtoMapper.java @@ -27,7 +27,7 @@ public class UIPluginDtoMapper { public UIPluginDto map(InstalledPlugin plugin) { UIPluginDto dto = new UIPluginDto( - plugin.getPlugin().getInformation().getName(), + plugin.getDescriptor().getInformation().getName(), getScriptResources(plugin) ); @@ -41,7 +41,7 @@ public class UIPluginDtoMapper { } private Set getScriptResources(InstalledPlugin wrapper) { - Set scriptResources = wrapper.getPlugin().getResources().getScriptResources(); + Set scriptResources = wrapper.getDescriptor().getResources().getScriptResources(); if (scriptResources != null) { return scriptResources.stream() .map(this::addContextPath) diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UIPluginResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UIPluginResource.java index d34bcbe3ba..1c779653a0 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UIPluginResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UIPluginResource.java @@ -86,7 +86,7 @@ public class UIPluginResource { } private boolean filter(InstalledPlugin plugin) { - return plugin.getPlugin().getResources() != null; + return plugin.getDescriptor().getResources() != null; } } diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java index 509870abf8..c19c19b377 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -131,7 +131,7 @@ public class DefaultPluginManager implements PluginManager for (InstalledPlugin wrapper : pluginLoader.getInstalledPlugins()) { - InstalledPluginDescriptor plugin = wrapper.getPlugin(); + InstalledPluginDescriptor plugin = wrapper.getDescriptor(); PluginInformation info = plugin.getInformation(); if ((info != null) && info.isValid()) diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PluginsInternal.java b/scm-webapp/src/main/java/sonia/scm/plugin/PluginsInternal.java index 9ac8bcbe71..242086aa85 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/PluginsInternal.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/PluginsInternal.java @@ -202,7 +202,7 @@ public final class PluginsInternal @Override public InstalledPluginDescriptor apply(InstalledPlugin wrapper) { - return wrapper.getPlugin(); + return wrapper.getDescriptor(); } } } diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UIRootResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UIRootResourceTest.java index 7fd605f24c..4987dec644 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UIRootResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/UIRootResourceTest.java @@ -189,7 +189,7 @@ public class UIRootResourceTest { when(wrapper.getId()).thenReturn(id); InstalledPluginDescriptor plugin = mock(InstalledPluginDescriptor.class); - when(wrapper.getPlugin()).thenReturn(plugin); + when(wrapper.getDescriptor()).thenReturn(plugin); when(plugin.getResources()).thenReturn(pluginResources); PluginInformation information = mock(PluginInformation.class);