From 339f45ca6a79245f7b51dcd9a6c9cf7e2d12a4ad Mon Sep 17 00:00:00 2001 From: Dominik Herbst Date: Tue, 4 Oct 2016 11:57:56 +0200 Subject: [PATCH] Fixed sanitizing of filter query sort parameters. Corrected name of TargetManagement method Signed-off-by: Dominik Herbst --- .../resource/MgmtDistributionSetResource.java | 2 +- .../MgmtTargetFilterQueryResource.java | 2 +- .../mgmt/rest/resource/PagingUtility.java | 9 +++++++++ .../hawkbit/repository/TargetManagement.java | 20 ++++++++++--------- .../repository/jpa/JpaTargetManagement.java | 6 +++--- .../jpa/autoassign/AutoAssignChecker.java | 2 +- .../jpa/TargetManagementSearchTest.java | 3 +-- .../jpa/autoassign/AutoAssignCheckerTest.java | 2 +- .../DistributionSetSelectWindow.java | 2 +- 9 files changed, 29 insertions(+), 19 deletions(-) diff --git a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResource.java b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResource.java index 055ed7399..03ec68648 100644 --- a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResource.java +++ b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResource.java @@ -240,7 +240,7 @@ public class MgmtDistributionSetResource implements MgmtDistributionSetRestApi { final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); final int sanitizedLimitParam = PagingUtility.sanitizePageLimitParam(pagingLimitParam); - final Sort sorting = PagingUtility.sanitizeTargetSortParam(sortParam); + final Sort sorting = PagingUtility.sanitizeTargetFilterQuerySortParam(sortParam); final Pageable pageable = new OffsetBasedPageRequest(sanitizedOffsetParam, sanitizedLimitParam, sorting); final Page targetFilterQueries; diff --git a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetFilterQueryResource.java b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetFilterQueryResource.java index 5fcfdcf93..1fc7c6c85 100644 --- a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetFilterQueryResource.java +++ b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetFilterQueryResource.java @@ -72,7 +72,7 @@ public class MgmtTargetFilterQueryResource implements MgmtTargetFilterQueryRestA final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); final int sanitizedLimitParam = PagingUtility.sanitizePageLimitParam(pagingLimitParam); - final Sort sorting = PagingUtility.sanitizeTargetSortParam(sortParam); + final Sort sorting = PagingUtility.sanitizeTargetFilterQuerySortParam(sortParam); final Pageable pageable = new OffsetBasedPageRequest(sanitizedOffsetParam, sanitizedLimitParam, sorting); final Slice findTargetFiltersAll; diff --git a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/PagingUtility.java b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/PagingUtility.java index abd9e9ec4..d70109e3d 100644 --- a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/PagingUtility.java +++ b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/PagingUtility.java @@ -20,6 +20,7 @@ import org.eclipse.hawkbit.repository.SoftwareModuleFields; import org.eclipse.hawkbit.repository.SoftwareModuleMetadataFields; import org.eclipse.hawkbit.repository.SoftwareModuleTypeFields; import org.eclipse.hawkbit.repository.TargetFields; +import org.eclipse.hawkbit.repository.TargetFilterQueryFields; import org.eclipse.hawkbit.rest.util.SortUtility; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; @@ -59,6 +60,14 @@ public final class PagingUtility { return new Sort(SortUtility.parse(TargetFields.class, sortParam)); } + static Sort sanitizeTargetFilterQuerySortParam(final String sortParam) { + if (sortParam == null) { + // default + return new Sort(Direction.ASC, TargetFilterQueryFields.NAME.getFieldName()); + } + return new Sort(SortUtility.parse(TargetFilterQueryFields.class, sortParam)); + } + static Sort sanitizeSoftwareModuleSortParam(final String sortParam) { if (sortParam == null) { // default diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java index d8d9e3b20..d7c791db7 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java @@ -244,32 +244,34 @@ public interface TargetManagement { /** * Finds all targets for all the given parameter {@link TargetFilterQuery} - * and that don't have the specified assigned distribution set. - * and returns not the full target but {@link TargetIdName}. + * and that don't have the specified distribution set in their action + * history. * * @param pageRequest * the pageRequest to enhance the query for paging and sorting + * @param distributionSetId + * id of the {@link DistributionSet} * @param targetFilterQuery * {@link TargetFilterQuery} * @return the found {@link TargetIdName}s */ @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) - Page findAllTargetIdsByTargetFilterQueryAndNonDS(@NotNull Pageable pageRequest, - Long distributionSetId, - @NotNull TargetFilterQuery targetFilterQuery); + Page findAllTargetsByTargetFilterQueryAndNonDS(@NotNull Pageable pageRequest, Long distributionSetId, + @NotNull TargetFilterQuery targetFilterQuery); /** * Counts all targets for all the given parameter {@link TargetFilterQuery} - * and that don't have the specified assigned distribution set. and returns - * not the full target but {@link TargetIdName}. + * and that don't have the specified distribution set in their action + * history. * + * @param distributionSetId + * id of the {@link DistributionSet} * @param targetFilterQuery * {@link TargetFilterQuery} * @return the found {@link TargetIdName}s */ @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) - Long countTargetByTargetFilterQueryAndNonDS(Long distributionSetId, - @NotNull TargetFilterQuery targetFilterQuery); + Long countTargetsByTargetFilterQueryAndNonDS(Long distributionSetId, @NotNull TargetFilterQuery targetFilterQuery); /** * retrieves {@link Target}s by the assigned {@link DistributionSet} without diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaTargetManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaTargetManagement.java index 530d48d58..329fb3dfd 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaTargetManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaTargetManagement.java @@ -563,8 +563,8 @@ public class JpaTargetManagement implements TargetManagement { } @Override - public Page findAllTargetIdsByTargetFilterQueryAndNonDS(@NotNull Pageable pageRequest, - Long distributionSetId, @NotNull TargetFilterQuery targetFilterQuery) { + public Page findAllTargetsByTargetFilterQueryAndNonDS(@NotNull Pageable pageRequest, + Long distributionSetId, @NotNull TargetFilterQuery targetFilterQuery) { final Specification spec = RSQLUtility.parse(targetFilterQuery.getQuery(), TargetFields.class); @@ -577,7 +577,7 @@ public class JpaTargetManagement implements TargetManagement { } @Override - public Long countTargetByTargetFilterQueryAndNonDS(Long distributionSetId, @NotNull TargetFilterQuery targetFilterQuery) { + public Long countTargetsByTargetFilterQueryAndNonDS(Long distributionSetId, @NotNull TargetFilterQuery targetFilterQuery) { final Specification spec = RSQLUtility.parse(targetFilterQuery.getQuery(), TargetFields.class); final List> specList = new ArrayList<>(); specList.add(spec); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/autoassign/AutoAssignChecker.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/autoassign/AutoAssignChecker.java index f35aab453..ed001f481 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/autoassign/AutoAssignChecker.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/autoassign/AutoAssignChecker.java @@ -156,7 +156,7 @@ public class AutoAssignChecker { * @return list of targets with action type */ private List getTargetsWithActionType(TargetFilterQuery targetFilterQuery, Long dsId, int count) { - Page targets = targetManagement.findAllTargetIdsByTargetFilterQueryAndNonDS(new PageRequest(0, count), + Page targets = targetManagement.findAllTargetsByTargetFilterQueryAndNonDS(new PageRequest(0, count), dsId, targetFilterQuery); return targets.getContent().stream() diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementSearchTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementSearchTest.java index 58856f16c..e94eb355f 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementSearchTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementSearchTest.java @@ -25,7 +25,6 @@ import org.eclipse.hawkbit.repository.jpa.model.JpaTargetTag; import org.eclipse.hawkbit.repository.model.*; import org.eclipse.hawkbit.repository.model.Action.Status; import org.junit.Test; -import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Slice; import com.google.common.collect.Lists; @@ -733,7 +732,7 @@ public class TargetManagementSearchTest extends AbstractJpaIntegrationTest { deploymentManagement.assignDistributionSet(assignedSet, assignedTargets); - List result = targetManagement.findAllTargetIdsByTargetFilterQueryAndNonDS(pageReq, + List result = targetManagement.findAllTargetsByTargetFilterQueryAndNonDS(pageReq, assignedSet.getId(), tfq).getContent(); assertThat(result) .as("count of targets").hasSize(unassignedTargets.size()) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/autoassign/AutoAssignCheckerTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/autoassign/AutoAssignCheckerTest.java index 5ce015550..47fab431e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/autoassign/AutoAssignCheckerTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/autoassign/AutoAssignCheckerTest.java @@ -73,7 +73,7 @@ public class AutoAssignCheckerTest extends AbstractJpaIntegrationTest { verifyThatTargetsHaveDistributionSetAssignment(setB, targets.subList(10, 20), targetsCount); // Count the number of targets that will be assigned with setA - assertThat(targetManagement.countTargetByTargetFilterQueryAndNonDS(setA.getId(), targetFilterQuery)) + assertThat(targetManagement.countTargetsByTargetFilterQueryAndNonDS(setA.getId(), targetFilterQuery)) .isEqualTo(90); // Run the check diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/DistributionSetSelectWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/DistributionSetSelectWindow.java index d1e77e529..f0f484526 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/DistributionSetSelectWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/DistributionSetSelectWindow.java @@ -248,7 +248,7 @@ public class DistributionSetSelectWindow layout.setMargin(true); setContent(layout); - Long targetsCount = targetManagement.countTargetByTargetFilterQueryAndNonDS(distributionSetId, targetFilterQuery); + Long targetsCount = targetManagement.countTargetsByTargetFilterQueryAndNonDS(distributionSetId, targetFilterQuery); Label mainTextLabel; if(targetsCount == 0) { mainTextLabel = new Label(i18n.get("message.confirm.assign.consequences.none"));