(Some Javadoc and comment adjustments)
diff --git a/src/main/java/freemarker/ext/beans/BeansWrapper.java b/src/main/java/freemarker/ext/beans/BeansWrapper.java
index 47eb5c7..372eefa 100644
--- a/src/main/java/freemarker/ext/beans/BeansWrapper.java
+++ b/src/main/java/freemarker/ext/beans/BeansWrapper.java
@@ -98,8 +98,8 @@
/**
* At this level of exposure, all methods and properties of the
- * wrapped objects are exposed to the template, and the {@link MemberAccessPolicy}
- * will be ignored.
+ * wrapped objects are exposed to the template, and even the {@link MemberAccessPolicy}
+ * is ignored.
*/
public static final int EXPOSE_ALL = 0;
@@ -113,6 +113,9 @@
* java.lang.Thread and java.lang.ThreadGroup methods that can change its
* state, as well as the usual suspects in java.lang.System and
* java.lang.Runtime.
+ *
+ * <p>Note that the {@link MemberAccessPolicy} will further restrict what's visible. That mechanism was introduced
+ * much later than "exposure levels", and it's the primary place to look at if you are concerned with safety.
*/
public static final int EXPOSE_SAFE = 1;
@@ -120,6 +123,8 @@
* At this level of exposure, only property getters are exposed.
* Additionally, property getters that map to unsafe methods are not
* exposed (i.e. Class.classLoader and Thread.contextClassLoader).
+ *
+ * <p>Note that the {@link MemberAccessPolicy} will further restrict what's visible.
*/
public static final int EXPOSE_PROPERTIES_ONLY = 2;
@@ -564,6 +569,8 @@
* Sets the method exposure level. By default, set to <code>EXPOSE_SAFE</code>.
* @param exposureLevel can be any of the <code>EXPOSE_xxx</code>
* constants.
+ * Note that {@link #setMemberAccessPolicy(MemberAccessPolicy)} further restricts what's visible, unless this is
+ * set to {@link #EXPOSE_ALL}.
*/
public void setExposureLevel(int exposureLevel) {
checkModifiable();
diff --git a/src/main/java/freemarker/ext/beans/ClassIntrospector.java b/src/main/java/freemarker/ext/beans/ClassIntrospector.java
index 98580fc..9ef5109 100644
--- a/src/main/java/freemarker/ext/beans/ClassIntrospector.java
+++ b/src/main/java/freemarker/ext/beans/ClassIntrospector.java
@@ -222,7 +222,7 @@
*
* @return A {@link Map} where each key is a property/method/field name (or a special {@link Object} key like
* {@link #CONSTRUCTORS_KEY}), each value is a {@link FastPropertyDescriptor} or {@link Method} or
- * {@link OverloadedMethods} or {@link Field} (but better check the source code...).
+ * {@link OverloadedMethods} or {@link Field} (but, you better check the source code).
*/
Map<Object, Object> get(Class<?> clazz) {
{
@@ -248,7 +248,7 @@
introspData = cache.get(clazz);
} catch (InterruptedException e) {
throw new RuntimeException(
- "Class inrospection data lookup aborded: " + e);
+ "Class introspection data lookup aborted: " + e);
}
}
if (introspData != null) return introspData;
@@ -388,7 +388,7 @@
((OverloadedMethods) previous).addMethod(method);
} else if (decision.getMethodShadowsProperty()
|| !(previous instanceof FastPropertyDescriptor)) {
- // Simple method (this far)
+ // Simple method (so far)
introspData.put(methodKey, method);
Class<?>[] replaced = getArgTypesByMethod(introspData).put(method,
method.getParameterTypes());
diff --git a/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java b/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java
index 5f0b26c..f5bdabd 100644
--- a/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java
+++ b/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java
@@ -36,7 +36,7 @@
import freemarker.template._TemplateAPI;
/**
- * Member access policy, used to implement default behavior that's mostly compatible with pre-2.3.30 versions, but is
+ * Member access policy to implement the default behavior that's mostly compatible with pre-2.3.30 versions, but is
* somewhat safer; it still can't provide safety in practice, if you allow untrusted users to edit templates! Use
* {@link WhitelistMemberAccessPolicy} if you need stricter control.
*
diff --git a/src/main/java/freemarker/ext/beans/MemberAccessPolicy.java b/src/main/java/freemarker/ext/beans/MemberAccessPolicy.java
index 2ca568d..6d7abdb 100644
--- a/src/main/java/freemarker/ext/beans/MemberAccessPolicy.java
+++ b/src/main/java/freemarker/ext/beans/MemberAccessPolicy.java
@@ -58,6 +58,10 @@
* {@link Object#equals(Object)} implementation if possible.
*
* @since 2.3.30
+ *
+ * @see DefaultMemberAccessPolicy
+ * @see WhitelistMemberAccessPolicy
+ * @see LegacyDefaultMemberAccessPolicy
*/
public interface MemberAccessPolicy {
/**
diff --git a/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java b/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
index 8dd134a..4980bd6 100644
--- a/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
+++ b/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
@@ -67,7 +67,7 @@
* The property name in the {@link PropertyDescriptor} can be anything,
* but the method (or methods) in it must belong to the class that
* is given as the <tt>clazz</tt> parameter or it must be inherited from
- * that class, or else whatever errors can occur later.
+ * that class, otherwise the behavior is undefined, and errors can occur later.
* {@link IndexedPropertyDescriptor}-s are supported.
* If a real JavaBean property of the same name exists, or a fake property
* of the same name was already assigned earlier, it won't be