From bb41c0078c5c5773f1ff2fee95e1d83fe8b2925e Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Wed, 22 Jan 2020 10:57:48 -0500 Subject: [PATCH] WIP. adapting RuleEngine to chunked filtering --- .../resources/stream/AppRuleHarness.java | 5 ++-- .../resources/stream/FilterHttpResource.java | 25 +++++++++---------- .../bubble/resources/stream/RuleEngine.java | 8 +++++- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/bubble-server/src/main/java/bubble/resources/stream/AppRuleHarness.java b/bubble-server/src/main/java/bubble/resources/stream/AppRuleHarness.java index afa1e527..b577f221 100644 --- a/bubble-server/src/main/java/bubble/resources/stream/AppRuleHarness.java +++ b/bubble-server/src/main/java/bubble/resources/stream/AppRuleHarness.java @@ -20,7 +20,6 @@ public class AppRuleHarness implements Comparable { this.rule = rule; } - @Override public int compareTo(AppRuleHarness other) { - return HasPriority.compare(other.getRule(), getRule()); - } + @Override public int compareTo(AppRuleHarness other) { return HasPriority.compare(other.getRule(), getRule()); } + } diff --git a/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java b/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java index 08d7d0e9..b0d481d4 100644 --- a/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java +++ b/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java @@ -187,21 +187,20 @@ public class FilterHttpResource { if (log.isDebugEnabled()) { log.debug("filterHttp: starting with requestId="+requestId+", deviceId="+deviceId+", matchersJson="+matchersJson+", contentType="+contentType+", last="+last); - - // for now, just try to return unmodified... -// if (last != null && last) { -// log.debug("filterHttp: DEBUG: last chunk detected, returning empty response"); -// return ok(); // no response body -// } else { -// log.debug("filterHttp: DEBUG: chunk detected, returning chunk as passthru response"); -// return passthru(request); -// } } - final boolean isLast = last != null && last; - return ruleEngine.applyRulesToChunkAndSendResponse( - request, filterRequest.getId(), filterRequest.getAccount(), filterRequest.getDevice(), filterRequest.getMatchers(), - isLast); + // for now, just try to return unmodified... + if (last != null && last) { + log.debug("filterHttp: DEBUG: last chunk detected, returning empty response"); + return ok(); // no response body + } else { + log.debug("filterHttp: DEBUG: chunk detected, returning chunk as passthru response"); + return passthru(request); + } +// final boolean isLast = last != null && last; +// return ruleEngine.applyRulesToChunkAndSendResponse( +// request, filterRequest.getId(), filterRequest.getAccount(), filterRequest.getDevice(), filterRequest.getMatchers(), +// isLast); } public Response passthru(@Context ContainerRequest request) { return ruleEngine.passthru(request); } diff --git a/bubble-server/src/main/java/bubble/resources/stream/RuleEngine.java b/bubble-server/src/main/java/bubble/resources/stream/RuleEngine.java index 1da546b6..29a073fc 100644 --- a/bubble-server/src/main/java/bubble/resources/stream/RuleEngine.java +++ b/bubble-server/src/main/java/bubble/resources/stream/RuleEngine.java @@ -7,6 +7,7 @@ import bubble.model.account.Account; import bubble.model.app.AppMatcher; import bubble.model.app.AppRule; import bubble.model.app.RuleDriver; +import bubble.model.device.Device; import bubble.rule.AppRuleDriver; import bubble.server.BubbleConfiguration; import lombok.Cleanup; @@ -56,7 +57,12 @@ public class RuleEngine { @Autowired private RuleDriverDAO driverDAO; @Autowired private BubbleConfiguration configuration; - public boolean preprocess(FilterMatchersRequest filter, Request req, ContainerRequest request, Account account, String matcherUuid) { + public boolean preprocess(FilterMatchersRequest filter, + Request req, + ContainerRequest request, + Account account, + Device device, + String matcherUuid) { final AppRuleHarness ruleHarness = initRules(account, new String[]{ matcherUuid }).get(0); return ruleHarness.getDriver().preprocess(ruleHarness, filter, account, req, request); }