PluginController.java

package org.entando.kubernetes.controller.plugin;

import java.util.List;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.entando.kubernetes.model.plugin.EntandoPlugin;
import org.entando.kubernetes.model.plugin.EntandoPluginInfo;
import org.entando.kubernetes.model.web.response.SimpleRestResponse;
import org.entando.kubernetes.service.KubernetesService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class PluginController implements PluginResource {

    private final KubernetesService kubernetesService;

    public PluginController(KubernetesService kubernetesService) {
        this.kubernetesService = kubernetesService;
    }

    @Override
    public SimpleRestResponse<List<EntandoPlugin>> listLinkedPlugin() {
        log.info("Listing all deployed plugins");
        final List<EntandoPlugin> list = kubernetesService.getLinkedPlugins();
        final SimpleRestResponse<List<EntandoPlugin>> entity = new SimpleRestResponse<>();
        entity.setPayload(list);
        return entity;
    }

    @Override
    public SimpleRestResponse<List<EntandoPluginInfo>> listLinkedPluginInfo() {
        log.info("Listing info about all linked plugins");
        final List<EntandoPlugin> linkedPlugins = kubernetesService.getLinkedPlugins();

        List<EntandoPluginInfo> payload = linkedPlugins.stream()
                .map(this::convertToEntandoPluginInfo)
                .collect(Collectors.toList());

        return new SimpleRestResponse<>(payload);
    }

    @Override
    public SimpleRestResponse<EntandoPlugin> get(@PathVariable final String pluginId) {
        log.info("Requesting plugin with identifier {}", pluginId);
        return new SimpleRestResponse<>(kubernetesService.getLinkedPlugin(pluginId));
    }

    private EntandoPluginInfo convertToEntandoPluginInfo(EntandoPlugin entandoPlugin) {
        EntandoPluginInfo result = new EntandoPluginInfo();

        result.setName(entandoPlugin.getMetadata().getName());
        result.setId(entandoPlugin.getMetadata().getUid());
        if (entandoPlugin.getMetadata().getAnnotations() != null) {
            result.setDescription(entandoPlugin.getMetadata().getAnnotations().get("description"));
        }

        return result;
    }


}