From 78155bd164db125e94dd6ee29d37663247956778 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Thu, 6 Feb 2020 20:52:35 -0500 Subject: [PATCH] sort block list entries. fix traffic_analytics test --- .../java/bubble/app/bblock/BlockListEntry.java | 15 +++++++++------ .../app/bblock/BubbleBlockAppConfigDriver.java | 14 +++++--------- .../resources/models/include/fake_filter.json | 6 +++--- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/bubble-server/src/main/java/bubble/app/bblock/BlockListEntry.java b/bubble-server/src/main/java/bubble/app/bblock/BlockListEntry.java index a2af240a..6fed2f39 100644 --- a/bubble-server/src/main/java/bubble/app/bblock/BlockListEntry.java +++ b/bubble-server/src/main/java/bubble/app/bblock/BlockListEntry.java @@ -1,15 +1,12 @@ package bubble.app.bblock; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; import lombok.experimental.Accessors; import static org.cobbzilla.util.security.ShaUtil.sha256_hex; -@NoArgsConstructor @AllArgsConstructor @Accessors(chain=true) -public class BlockListEntry { +@NoArgsConstructor @AllArgsConstructor @Accessors(chain=true) @EqualsAndHashCode(of={"rule"}) +public class BlockListEntry implements Comparable { public static BlockListEntry sourceRule(String rule) { return new BlockListEntry(BlockListEntryType.builtin, rule); @@ -27,4 +24,10 @@ public class BlockListEntry { @Getter @Setter private BlockListEntryType ruleType; @Getter @Setter private String rule; + @Override public int compareTo(BlockListEntry o) { + if (rule == null) return o.rule == null ? 0 : -1; + if (o.rule == null) return 1; + return rule.compareTo(o.rule); + } + } diff --git a/bubble-server/src/main/java/bubble/app/bblock/BubbleBlockAppConfigDriver.java b/bubble-server/src/main/java/bubble/app/bblock/BubbleBlockAppConfigDriver.java index 1554220e..b09fa9cc 100644 --- a/bubble-server/src/main/java/bubble/app/bblock/BubbleBlockAppConfigDriver.java +++ b/bubble-server/src/main/java/bubble/app/bblock/BubbleBlockAppConfigDriver.java @@ -22,13 +22,10 @@ import org.cobbzilla.util.string.ValidationRegexes; import org.cobbzilla.wizard.validation.ValidationResult; import org.springframework.beans.factory.annotation.Autowired; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; -import static java.util.Collections.emptyList; +import static java.util.Collections.emptySet; import static org.cobbzilla.util.daemon.ZillaRuntime.*; import static org.cobbzilla.util.http.HttpSchemes.SCHEME_HTTPS; import static org.cobbzilla.util.http.HttpSchemes.isHttpOrHttps; @@ -75,15 +72,14 @@ public class BubbleBlockAppConfigDriver implements AppConfigDriver { throw notFoundEx(view); } - private List loadListEntries(Account account, BubbleApp app, String id) { + private Set loadListEntries(Account account, BubbleApp app, String id) { final BubbleBlockList list = loadList(account, app, id); if (list == null) throw notFoundEx(id); if (list.hasAdditionalEntries()) { return Arrays.stream(list.getAdditionalEntries()) - .map(BlockListEntry::additionalRule) - .collect(Collectors.toList()); + .map(BlockListEntry::additionalRule).collect(Collectors.toCollection(TreeSet::new)); } - return emptyList(); + return emptySet(); } private BubbleBlockList loadList(Account account, BubbleApp app, String id) { diff --git a/bubble-server/src/test/resources/models/include/fake_filter.json b/bubble-server/src/test/resources/models/include/fake_filter.json index fa4859b9..008e7880 100644 --- a/bubble-server/src/test/resources/models/include/fake_filter.json +++ b/bubble-server/src/test/resources/models/include/fake_filter.json @@ -8,16 +8,16 @@ "userAgent": "Test-User-Agent 1.0.0", "remoteAddr": "127.0.0.1", "jsCheck": "true", - "timestamp": "<>" + "requestSuffix": "<>" } }, { "comment": "make request to <><>", "request": { - "uri":"filter/matchers/<>.<>", + "uri":"filter/matchers/<>.<>", "entity": { - "requestId": "<>.<>", + "requestId": "<>.<>", "fqdn": "<>", "uri": "<>", "userAgent": "<>",