diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDto.java index 4dce1e9e92..282b9860b3 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PluginDto.java @@ -53,6 +53,7 @@ public class PluginDto extends HalRepresentation { private Boolean core; private Boolean markedForUninstall; private Set dependencies; + private Set optionalDependencies; public PluginDto(Links links) { add(links); 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 1d71735278..0156a976ec 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 @@ -68,6 +68,7 @@ public abstract class PluginDtoMapper { private void map(PluginDto dto, Plugin plugin) { dto.setDependencies(plugin.getDescriptor().getDependencies()); + dto.setOptionalDependencies(plugin.getDescriptor().getOptionalDependencies()); map(plugin.getDescriptor().getInformation(), dto); if (dto.getCategory() == null) { dto.setCategory("Miscellaneous"); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java index 7c3c3975c0..9a6b51db7a 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/PluginDtoMapperTest.java @@ -164,6 +164,15 @@ class PluginDtoMapperTest { assertThat(dto.getDependencies()).containsOnly("one", "two"); } + @Test + void shouldAppendOptionalDependencies() { + AvailablePlugin plugin = createAvailable(createPluginInformation()); + when(plugin.getDescriptor().getOptionalDependencies()).thenReturn(ImmutableSet.of("one", "two")); + + PluginDto dto = mapper.mapAvailable(plugin); + assertThat(dto.getOptionalDependencies()).containsOnly("one", "two"); + } + @Test void shouldAppendUninstallLink() { when(subject.isPermitted("plugin:write")).thenReturn(true);