Add optional dependencies to plugin descriptors and plugin center dto

This commit is contained in:
Konstantin Schaper
2020-07-21 11:39:08 +02:00
parent d1c0dee201
commit 38047a25aa
5 changed files with 30 additions and 3 deletions

View File

@@ -21,12 +21,14 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package sonia.scm.plugin;
import java.util.Optional;
import java.util.Set;
import static java.util.Collections.emptySet;
/**
* @since 2.0.0
*/
@@ -35,13 +37,23 @@ public class AvailablePluginDescriptor implements PluginDescriptor {
private final PluginInformation information;
private final PluginCondition condition;
private final Set<String> dependencies;
private final Set<String> optionalDependencies;
private final String url;
private final String checksum;
/**
* @deprecated Use {@link #AvailablePluginDescriptor(PluginInformation, PluginCondition, Set, Set, String, String)} instead
*/
@Deprecated
public AvailablePluginDescriptor(PluginInformation information, PluginCondition condition, Set<String> dependencies, String url, String checksum) {
this(information, condition, dependencies, emptySet(), url, checksum);
}
public AvailablePluginDescriptor(PluginInformation information, PluginCondition condition, Set<String> dependencies, Set<String> optionalDependencies, String url, String checksum) {
this.information = information;
this.condition = condition;
this.dependencies = dependencies;
this.optionalDependencies = optionalDependencies;
this.url = url;
this.checksum = checksum;
}
@@ -68,4 +80,9 @@ public class AvailablePluginDescriptor implements PluginDescriptor {
public Set<String> getDependencies() {
return dependencies;
}
@Override
public Set<String> getOptionalDependencies() {
return optionalDependencies;
}
}

View File

@@ -191,6 +191,7 @@ public final class InstalledPluginDescriptor extends ScmModule implements Plugin
*
* @since 2.0.0
*/
@Override
public Set<String> getOptionalDependencies() {
if (optionalDependencies == null)
{

View File

@@ -21,11 +21,13 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package sonia.scm.plugin;
import java.util.Set;
import static java.util.Collections.emptySet;
public interface PluginDescriptor {
PluginInformation getInformation();
@@ -34,4 +36,8 @@ public interface PluginDescriptor {
Set<String> getDependencies();
default Set<String> getOptionalDependencies() {
return emptySet();
}
}

View File

@@ -85,6 +85,9 @@ public final class PluginCenterDto implements Serializable {
@XmlElement(name = "dependencies")
private Set<String> dependencies;
@XmlElement(name = "optionalDependencies")
private Set<String> optionalDependencies;
@XmlElement(name = "_links")
private Map<String, Link> links;
}

View File

@@ -43,7 +43,7 @@ public abstract class PluginCenterDtoMapper {
for (PluginCenterDto.Plugin plugin : pluginCenterDto.getEmbedded().getPlugins()) {
String url = plugin.getLinks().get("download").getHref();
AvailablePluginDescriptor descriptor = new AvailablePluginDescriptor(
map(plugin), map(plugin.getConditions()), plugin.getDependencies(), url, plugin.getSha256sum()
map(plugin), map(plugin.getConditions()), plugin.getDependencies(), plugin.getOptionalDependencies(), url, plugin.getSha256sum()
);
plugins.add(new AvailablePlugin(descriptor));
}