diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagement.java index c93412228..3a0d16da2 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagement.java @@ -169,8 +169,7 @@ public interface TargetFilterQueryManagement { Page findByAutoAssignDSAndRsql(@NotNull Pageable pageable, long setId, String rsqlParam); /** - * Retrieves all {@link TargetFilterQuery}s with an auto-assign distribution - * set. + * Retrieves all {@link TargetFilterQuery}s with an auto-assign distribution set. * * @param pageable pagination information * @return the page with the found {@link TargetFilterQuery}s diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java index bef1957fe..d1a15a19e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.repository.jpa.model; +import java.io.Serial; import java.util.Optional; import jakarta.persistence.Column; @@ -37,14 +38,14 @@ import org.eclipse.hawkbit.repository.model.helper.EventPublisherHolder; * Stored target filter. */ @Entity -@Table(name = "sp_target_filter_query", uniqueConstraints = @UniqueConstraint(columnNames = { "name", - "tenant" }, name = "uk_tenant_custom_filter_name")) -// exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for -// sub entities +@Table( + name = "sp_target_filter_query", + uniqueConstraints = @UniqueConstraint(columnNames = { "name", "tenant" }, name = "uk_tenant_custom_filter_name")) +// exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") -public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity - implements TargetFilterQuery, EventAwareEntity { +public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity implements TargetFilterQuery, EventAwareEntity { + @Serial private static final long serialVersionUID = 1L; @Column(name = "name", length = NamedEntity.NAME_MAX_SIZE, nullable = false) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/RolloutGroupManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/RolloutGroupManagementTest.java index 3a50f705b..c0804b0a3 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/RolloutGroupManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/RolloutGroupManagementTest.java @@ -47,13 +47,12 @@ import org.springframework.util.CollectionUtils; class RolloutGroupManagementTest extends AbstractJpaIntegrationTest { @Test - @Description("Verifies that management get access reacts as specfied on calls for non existing entities by means " - + "of Optional not present.") + @Description("Verifies that management get access reacts as specified on calls for non existing entities by means " + + "of Optional not present.") @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 0) }) void nonExistingEntityAccessReturnsNotPresent() { assertThat(rolloutGroupManagement.get(NOT_EXIST_IDL)).isNotPresent(); assertThat(rolloutGroupManagement.getWithDetailedStatus(NOT_EXIST_IDL)).isNotPresent(); - } @Test @@ -219,7 +218,7 @@ class RolloutGroupManagementTest extends AbstractJpaIntegrationTest { } @Test - @Description("Tests the rollout status mapping.") + @Description("Tests the rollout group status mapping.") void testRolloutGroupStatusConvert() { final long id = rolloutGroupRepository.findByRolloutId( testdataFactory.createAndStartRollout(1, 0, 1, "100", "80").getId(), PAGE).getContent() @@ -282,5 +281,4 @@ class RolloutGroupManagementTest extends AbstractJpaIntegrationTest { private Target reloadTarget(final Target targetCancelled) { return targetManagement.get(targetCancelled.getId()).orElseThrow(); } - -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetFilterQueryManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetFilterQueryManagementTest.java index 3ae3a94e6..4c67c6732 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetFilterQueryManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetFilterQueryManagementTest.java @@ -19,6 +19,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.Arrays; import java.util.List; +import java.util.function.Supplier; import jakarta.validation.ConstraintViolationException; @@ -27,6 +28,7 @@ import io.qameta.allure.Feature; import io.qameta.allure.Step; import io.qameta.allure.Story; import org.assertj.core.api.Assertions; +import org.eclipse.hawkbit.exception.AbstractServerRtException; import org.eclipse.hawkbit.repository.TargetFilterQueryManagement; import org.eclipse.hawkbit.repository.builder.AutoAssignDistributionSetUpdate; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent; @@ -41,6 +43,7 @@ import org.eclipse.hawkbit.repository.exception.InvalidAutoAssignActionTypeExcep import org.eclipse.hawkbit.repository.exception.InvalidDistributionSetException; import org.eclipse.hawkbit.repository.exception.RSQLParameterUnsupportedFieldException; import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest; +import org.eclipse.hawkbit.repository.jpa.model.JpaTargetFilterQuery; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action.ActionType; import org.eclipse.hawkbit.repository.model.DistributionSet; @@ -236,7 +239,6 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest @Test @Description("Updates an existing filter query with a query string that addresses too many targets.") public void updateTargetFilterQueryWithQueryThatExceedsQuota() { - // create targets final int maxTargets = quotaManagement.getMaxTargetsPerAutoAssignment(); testdataFactory.createTargets(maxTargets + 1, "target%s"); @@ -389,7 +391,7 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest final DistributionSet ds = testdataFactory.createDistributionSet(); final Long filterId = targetFilterQueryManagement .create(entityFactory.targetFilterQuery().create().name("a") - .query("name==*").autoAssignDistributionSet(ds).autoAssignWeight(23)).getId(); + .query("name==*").autoAssignDistributionSet(ds).autoAssignWeight(23)).getId(); assertThat( targetFilterQueryManagement .updateAutoAssignDS(entityFactory.targetFilterQuery().updateAutoAssign(filterId).ds(null).weight(null))) @@ -481,6 +483,34 @@ public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest .ds(incompleteDistributionSet.getId()))); } + @Test + @Description("Tests the auto assign action type mapping.") + void testAutoAssignActionTypeConvert() { + for (final ActionType actionType : ActionType.values()) { + final Supplier create = () -> + targetFilterQueryManagement.create( + entityFactory.targetFilterQuery() + .create() + .name("testAutoAssignActionTypeConvert_" + actionType) + .query("name==*") + .autoAssignActionType(actionType)) + .getId(); + if (actionType == ActionType.TIMEFORCED) { + assertThatExceptionOfType(AbstractServerRtException.class).isThrownBy(create::get); + } else { + assertThat(targetFilterQueryManagement.get(create.get()).orElseThrow().getAutoAssignActionType()).isEqualTo(actionType); + } + } + + assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> + ((JpaTargetFilterQuery) targetFilterQueryManagement.create( + entityFactory.targetFilterQuery() + .create() + .name("testAutoAssignActionTypeConvert") + .query("name==*"))) + .setAutoAssignActionType(ActionType.TIMEFORCED)); + } + @Step private void verifyAutoAssignmentWithDefaultActionType(final String filterName, final TargetFilterQuery targetFilterQuery, final DistributionSet distributionSet) {