瀏覽代碼

use lazyGet instead of lombok due to cross-class call

tags/v1.4.49
Jonathan Cobb 3 年之前
父節點
當前提交
a73495026b
共有 2 個檔案被更改,包括 14 行新增8 行删除
  1. +7
    -1
      bubble-server/src/main/java/bubble/rule/social/block/UserBlockerConfig.java
  2. +7
    -7
      bubble-server/src/main/java/bubble/rule/social/block/UserBlockerStreamFilter.java

+ 7
- 1
bubble-server/src/main/java/bubble/rule/social/block/UserBlockerConfig.java 查看文件

@@ -15,11 +15,17 @@ import org.cobbzilla.util.handlebars.HasHandlebars;
import org.cobbzilla.util.io.regex.RegexChunkConfig;
import org.cobbzilla.util.javascript.StandardJsEngine;

import java.util.concurrent.atomic.AtomicReference;

import static org.cobbzilla.util.daemon.ZillaRuntime.lazyGet;
import static org.cobbzilla.util.reflect.ReflectionUtil.instantiate;

public class UserBlockerConfig extends RegexChunkConfig implements RuleConfig {

public static final StandardJsEngine STANDARD_JS_ENGINE = new StandardJsEngine();
private static final AtomicReference<StandardJsEngine> standardJsEngine = new AtomicReference<>();
public static StandardJsEngine getStandardJsEngine () {
return lazyGet(standardJsEngine, StandardJsEngine::new, () -> null);
}

@Getter @Setter private String blockedCommentCheck;
@Getter @Setter private String blockedCommentReplacement;


+ 7
- 7
bubble-server/src/main/java/bubble/rule/social/block/UserBlockerStreamFilter.java 查看文件

@@ -26,7 +26,7 @@ import java.util.regex.Matcher;

import static bubble.ApiConstants.*;
import static bubble.rule.AbstractAppRuleDriver.getDataId;
import static bubble.rule.social.block.UserBlockerConfig.STANDARD_JS_ENGINE;
import static bubble.rule.social.block.UserBlockerConfig.getStandardJsEngine;
import static java.util.concurrent.TimeUnit.MINUTES;
import static org.cobbzilla.util.json.JsonUtil.COMPACT_MAPPER;
import static org.cobbzilla.util.json.JsonUtil.json;
@@ -41,10 +41,10 @@ public class UserBlockerStreamFilter implements RegexStreamFilter {
public static final String PROP_UNBLOCK_URL = "unblockUrl";
public static final String PROP_CHUNK_START_REGEX = "chunkStartRegex";

private String requestId;
private AppMatcher matcher;
private AppRule rule;
private String apiBase;
private final String requestId;
private final AppMatcher matcher;
private final AppRule rule;
private final String apiBase;
@Setter private AppDataDAO dataDAO;

public UserBlockerStreamFilter(String requestId, AppMatcher matcher, AppRule rule, String apiBase) {
@@ -151,7 +151,7 @@ public class UserBlockerStreamFilter implements RegexStreamFilter {
return HandlebarsUtil.apply(config.getHandlebars(), config.getBlockedCommentReplacement(), ctx);
}

private Map<String, Boolean> blockCache = new ExpirationMap<>(MINUTES.toMillis(1), ExpirationEvictionPolicy.atime);
private final Map<String, Boolean> blockCache = new ExpirationMap<>(MINUTES.toMillis(1), ExpirationEvictionPolicy.atime);
protected boolean isUserBlocked(String requestId, String userId) {
return blockCache.computeIfAbsent(requestId+":"+userId, k -> {
if (userId == null) return false;
@@ -171,7 +171,7 @@ public class UserBlockerStreamFilter implements RegexStreamFilter {
ctx.put("blocked", blockedComment.getProperties());
ctx.put("current", candidateComment.getProperties());
try {
return STANDARD_JS_ENGINE.evaluateBoolean(config.getBlockedCommentCheck(), ctx);
return getStandardJsEngine().evaluateBoolean(config.getBlockedCommentCheck(), ctx);
} catch (Exception e) {
log.error("isCommentBlocked: error evaluating "+config.getBlockedCommentCheck()+" with ctx="+ctx+": "+e);
return false;


Loading…
取消
儲存