From: Mathieu Baudier Date: Sun, 24 Sep 2023 09:59:58 +0000 (+0200) Subject: Predictable order of search filter constraints X-Git-Tag: v2.3.19~9 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=1569fe3bc12468da2207504ae3348bb2b9ccd2e3;p=lgpl%2Fargeo-commons.git Predictable order of search filter constraints --- diff --git a/org.argeo.api.acr/src/org/argeo/api/acr/search/ContentFilter.java b/org.argeo.api.acr/src/org/argeo/api/acr/search/ContentFilter.java index 55ed21531..df7d56269 100644 --- a/org.argeo.api.acr/src/org/argeo/api/acr/search/ContentFilter.java +++ b/org.argeo.api.acr/src/org/argeo/api/acr/search/ContentFilter.java @@ -1,7 +1,8 @@ package org.argeo.api.acr.search; -import java.util.HashSet; -import java.util.Set; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import java.util.function.Consumer; import javax.xml.namespace.QName; @@ -10,7 +11,8 @@ import org.argeo.api.acr.QNamed; /** A constraint filtering based ona given composition (and/or). */ public abstract class ContentFilter implements Constraint { - private Set constraintss = new HashSet<>(); + // even though not necessary, we use a list in order to have a predictable order + private List constraints = new ArrayList<>(); private COMPOSITION composition; @@ -98,21 +100,21 @@ public abstract class ContentFilter implements } else { operatorToAdd = operator; } - constraintss.add(operatorToAdd); + constraints.add(operatorToAdd); } /** Checks that the root operator is not set. */ private void checkAddConstraint() { - if (composition == null && !constraintss.isEmpty()) - throw new IllegalStateException("An operator is already registered (" + constraintss.iterator().next() + if (composition == null && !constraints.isEmpty()) + throw new IllegalStateException("An operator is already registered (" + constraints.iterator().next() + ") and no composition is defined"); } /* * ACCESSORs */ - public Set getConstraints() { - return constraintss; + public Collection getConstraints() { + return constraints; } public boolean isUnion() {