Reduces noise in the logs
diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
index 21bc0fc..c66d5c9 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
+++ b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
@@ -40,6 +40,7 @@
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.regex.Pattern;
@@ -53,6 +54,9 @@
private static final Logger LOG = LogManager.getLogger(OgnlUtil.class);
+ // Flag used to reduce flooding logs with WARNs about using DevMode excluded packages
+ private final AtomicBoolean warnReported = new AtomicBoolean(false);
+
private final ConcurrentMap<String, Object> expressions = new ConcurrentHashMap<>();
private final ConcurrentMap<Class<?>, BeanInfo> beanInfoCache = new ConcurrentHashMap<>();
private TypeConverter defaultConverter;
@@ -806,7 +810,10 @@
memberAccess.setDisallowProxyMemberAccess(disallowProxyMemberAccess);
if (devMode) {
- LOG.warn("Working in devMode, using devMode excluded classes and packages!");
+ if (!warnReported.get()) {
+ warnReported.set(true);
+ LOG.warn("Working in devMode, using devMode excluded classes and packages!");
+ }
memberAccess.setExcludedClasses(devModeExcludedClasses);
memberAccess.setExcludedPackageNamePatterns(devModeExcludedPackageNamePatterns);
memberAccess.setExcludedPackageNames(devModeExcludedPackageNames);