implement simplified PluginManager API

This commit is contained in:
Sebastian Sdorra
2019-08-20 12:29:59 +02:00
parent 3f1521bcca
commit 9d66f14627
9 changed files with 443 additions and 32 deletions

View File

@@ -1,26 +1,26 @@
package sonia.scm.plugin;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Mapper
public interface PluginCenterDtoMapper {
public abstract class PluginCenterDtoMapper {
@Mapping(source = "conditions", target = "condition")
PluginInformation map(PluginCenterDto.Plugin plugin);
static final PluginCenterDtoMapper INSTANCE = Mappers.getMapper(PluginCenterDtoMapper.class);
PluginCondition map(PluginCenterDto.Condition condition);
abstract PluginInformation map(PluginCenterDto.Plugin plugin);
abstract PluginCondition map(PluginCenterDto.Condition condition);
static Set<PluginInformation> map(List<PluginCenterDto.Plugin> dtos) {
PluginCenterDtoMapper mapper = Mappers.getMapper(PluginCenterDtoMapper.class);
Set<PluginInformation> plugins = new HashSet<>();
for (PluginCenterDto.Plugin plugin : dtos) {
plugins.add(mapper.map(plugin));
Set<AvailablePlugin> map(PluginCenterDto pluginCenterDto) {
Set<AvailablePlugin> plugins = new HashSet<>();
for (PluginCenterDto.Plugin plugin : pluginCenterDto.getEmbedded().getPlugins()) {
AvailablePluginDescriptor descriptor = new AvailablePluginDescriptor(
map(plugin), map(plugin.getConditions()), plugin.getDependencies()
);
plugins.add(new AvailablePlugin(descriptor));
}
return plugins;
}