mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 16:35:45 +01:00
show restart checkbox only if restarting is supported
This commit is contained in:
@@ -21,12 +21,13 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
package sonia.scm.api.v2.resources;
|
||||
|
||||
import de.otto.edison.hal.Links;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.MappingTarget;
|
||||
import sonia.scm.lifecycle.Restarter;
|
||||
import sonia.scm.plugin.AvailablePlugin;
|
||||
import sonia.scm.plugin.InstalledPlugin;
|
||||
import sonia.scm.plugin.Plugin;
|
||||
@@ -47,6 +48,9 @@ public abstract class PluginDtoMapper {
|
||||
@Inject
|
||||
private ResourceLinks resourceLinks;
|
||||
|
||||
@Inject
|
||||
private Restarter restarter;
|
||||
|
||||
public abstract void map(PluginInformation plugin, @MappingTarget PluginDto dto);
|
||||
|
||||
public PluginDto mapInstalled(InstalledPlugin plugin, List<AvailablePlugin> availablePlugins) {
|
||||
@@ -78,12 +82,20 @@ public abstract class PluginDtoMapper {
|
||||
.self(information.getName()));
|
||||
|
||||
if (!plugin.isPending() && PluginPermissions.manage().isPermitted()) {
|
||||
links.single(link("install", resourceLinks.availablePlugin().install(information.getName())));
|
||||
String href = resourceLinks.availablePlugin().install(information.getName());
|
||||
appendLink(links, "install", href);
|
||||
}
|
||||
|
||||
return new PluginDto(links.build());
|
||||
}
|
||||
|
||||
private void appendLink(Links.Builder links, String name, String href) {
|
||||
links.single(link(name, href));
|
||||
if (restarter.isSupported()) {
|
||||
links.single(link(name + "WithRestart", href + "?restart=true"));
|
||||
}
|
||||
}
|
||||
|
||||
private PluginDto createDtoForInstalled(InstalledPlugin plugin, List<AvailablePlugin> availablePlugins) {
|
||||
PluginInformation information = plugin.getDescriptor().getInformation();
|
||||
Optional<AvailablePlugin> availablePlugin = checkForUpdates(plugin, availablePlugins);
|
||||
@@ -96,13 +108,16 @@ public abstract class PluginDtoMapper {
|
||||
&& !availablePlugin.get().isPending()
|
||||
&& PluginPermissions.manage().isPermitted()
|
||||
) {
|
||||
links.single(link("update", resourceLinks.availablePlugin().install(information.getName())));
|
||||
String href = resourceLinks.availablePlugin().install(information.getName());
|
||||
appendLink(links, "update", href);
|
||||
}
|
||||
|
||||
if (plugin.isUninstallable()
|
||||
&& (!availablePlugin.isPresent() || !availablePlugin.get().isPending())
|
||||
&& PluginPermissions.manage().isPermitted()
|
||||
) {
|
||||
links.single(link("uninstall", resourceLinks.installedPlugin().uninstall(information.getName())));
|
||||
String href = resourceLinks.installedPlugin().uninstall(information.getName());
|
||||
appendLink(links, "uninstall", href);
|
||||
}
|
||||
|
||||
PluginDto dto = new PluginDto(links.build());
|
||||
|
||||
Reference in New Issue
Block a user