diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java index 67e0a77e1..c81f66b44 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java @@ -210,8 +210,8 @@ public class JpaDistributionSetType extends AbstractJpaNamedEntity implements Di @Override public boolean checkComplete(final DistributionSet distributionSet) { - List smTypes = distributionSet.getModules().stream().map(SoftwareModule::getType) - .collect(Collectors.toList()); + final List smTypes = distributionSet.getModules().stream().map(SoftwareModule::getType) + .distinct().collect(Collectors.toList()); if (smTypes.isEmpty()) { return false; } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetTypeManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetTypeManagementTest.java index 21bfe9cd9..c6245abcb 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetTypeManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/DistributionSetTypeManagementTest.java @@ -12,6 +12,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -33,6 +34,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.NamedEntity; import org.eclipse.hawkbit.repository.model.NamedVersionedEntity; +import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.test.matcher.Expect; import org.eclipse.hawkbit.repository.test.matcher.ExpectEvents; import org.junit.Test; @@ -347,4 +349,18 @@ public class DistributionSetTypeManagementTest extends AbstractJpaIntegrationTes assertThat(distributionSetTypeManagement.getByKey("softdeleted").get().isDeleted()).isEqualTo(true); } + @Test + @Description("Verifies that when no SoftwareModules are assigned to a Distribution then the DistributionSet is not complete.") + public void shouldFailWhenDistributionSetHasNoSoftwareModulesAssigned() { + + final JpaDistributionSetType jpaDistributionSetType = (JpaDistributionSetType) distributionSetTypeManagement + .create(entityFactory.distributionSetType().create().key("newType").name("new Type")); + + final List softwareModules = new ArrayList<>(); + + final DistributionSet distributionSet = testdataFactory.createDistributionSet("DistributionOne", "3.1.2", + jpaDistributionSetType, softwareModules); + + assertThat(jpaDistributionSetType.checkComplete(distributionSet)).isFalse(); + } }