From fa58dbb0d777a00a1f69d39b9c66a67f302ed9c0 Mon Sep 17 00:00:00 2001 From: qxo <49526356@qq.com> Date: Tue, 15 Feb 2022 21:20:50 +0800 Subject: [PATCH] adding feature flags to Context instead of system properties --- src/org/mozilla/javascript/Context.java | 18 ++++++++++++ src/org/mozilla/javascript/JavaMembers.java | 31 ++++++--------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/org/mozilla/javascript/Context.java b/src/org/mozilla/javascript/Context.java index 8836e045f0..f57f1a499a 100644 --- a/src/org/mozilla/javascript/Context.java +++ b/src/org/mozilla/javascript/Context.java @@ -340,6 +340,24 @@ public class Context implements Closeable { */ public static final int FEATURE_ENABLE_JAVA_MAP_ACCESS = 21; + /** + * Configure whether JavaMembers lazy init off. + * + *
default is lazy init. + * + * @since 1.7 Release 15 + */ + public static final int FEATURE_JAVAMEMBERS_LAZY_INIT_OFF = 22; + + /** + * Configure whether JavaMembers reflect cache off. + * + *
default is cache on.
+ *
+ * @since 1.7 Release 15
+ */
+ public static final int FEATURE_JAVAMEMBERS_REFLECT_CACHE_OFF = 23;
+
public static final String languageVersionProperty = "language version";
public static final String errorReporterProperty = "error reporter";
diff --git a/src/org/mozilla/javascript/JavaMembers.java b/src/org/mozilla/javascript/JavaMembers.java
index 1cc6028cd4..7541570210 100644
--- a/src/org/mozilla/javascript/JavaMembers.java
+++ b/src/org/mozilla/javascript/JavaMembers.java
@@ -16,7 +16,6 @@
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.security.AccessControlContext;
-import java.security.AccessControlException;
import java.security.AllPermission;
import java.security.Permission;
import java.util.ArrayList;
@@ -43,18 +42,12 @@ class JavaMembers {
private static final Permission allPermission = new AllPermission();
- // rhino_JavaMembers_lazyInit=true for enable
- private static final boolean LAZY_INIT =
- "true".equals(getProperty("rhino_JavaMembers_lazyInit", "true"));
-
- // rhino_JavaMembers_reflect_cache_on=false for disable
- private static final boolean CACHE_ON =
- !"false".equals(getProperty("rhino_JavaMembers_reflect_cache_on", "true"));
-
// private final boolean includeProtected;
private final boolean includePrivate;
private final ClassReflectBean cfCache;
private final Scriptable javaMemberScope;
+ private final boolean lazyInit;
+ private final boolean reflectCacheOn;
JavaMembers(Scriptable scope, Class> cl) {
this(scope, cl, false);
@@ -72,6 +65,8 @@ class JavaMembers {
this.staticMembers = new HashMap