This is an automated email from the ASF dual-hosted git repository.
ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git
The following commit(s) were added to refs/heads/2.3-gae by this push:
new 9771619f Renamed nonRecordZeroArgumentNonVoidMethodPolicy to
defaultZeroArgumentNonVoidMethodPolicy, as we will also need this for value
objects in later java versions.
9771619f is described below
commit 9771619f10f935fb0c5e96df538ce24168d7ba9a
Author: ddekany <[email protected]>
AuthorDate: Mon Apr 1 14:01:33 2024 +0200
Renamed nonRecordZeroArgumentNonVoidMethodPolicy to
defaultZeroArgumentNonVoidMethodPolicy, as we will also need this for value
objects in later java versions.
---
.../main/java/freemarker/ext/beans/BeansWrapper.java | 12 ++++++------
.../ext/beans/BeansWrapperConfiguration.java | 10 +++++-----
.../java/freemarker/ext/beans/ClassIntrospector.java | 14 +++++++-------
.../ext/beans/ClassIntrospectorBuilder.java | 20 ++++++++++----------
.../ext/beans/MethodAppearanceFineTuner.java | 2 +-
.../ext/beans/ZeroArgumentNonVoidMethodPolicy.java | 2 +-
.../beans/TestZeroArgumentNonVoidMethodPolicy.java | 12 ++++++------
freemarker-manual/src/main/docgen/en_US/book.xml | 9 +++------
8 files changed, 39 insertions(+), 42 deletions(-)
diff --git
a/freemarker-core/src/main/java/freemarker/ext/beans/BeansWrapper.java
b/freemarker-core/src/main/java/freemarker/ext/beans/BeansWrapper.java
index 3962bf9f..f7993f19 100644
--- a/freemarker-core/src/main/java/freemarker/ext/beans/BeansWrapper.java
+++ b/freemarker-core/src/main/java/freemarker/ext/beans/BeansWrapper.java
@@ -661,12 +661,12 @@ public class BeansWrapper implements RichObjectWrapper,
WriteProtectable {
*
* @since 2.3.33
*/
- public void
setNonRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy
nonRecordZeroArgumentNonVoidMethodPolicy) {
+ public void
setDefaultZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy
defaultZeroArgumentNonVoidMethodPolicy) {
checkModifiable();
- if (classIntrospector.getNonRecordZeroArgumentNonVoidMethodPolicy() !=
nonRecordZeroArgumentNonVoidMethodPolicy) {
+ if (classIntrospector.getDefaultZeroArgumentNonVoidMethodPolicy() !=
defaultZeroArgumentNonVoidMethodPolicy) {
ClassIntrospectorBuilder builder =
classIntrospector.createBuilder();
-
builder.setNonRecordZeroArgumentNonVoidMethodPolicy(nonRecordZeroArgumentNonVoidMethodPolicy);
+
builder.setDefaultZeroArgumentNonVoidMethodPolicy(defaultZeroArgumentNonVoidMethodPolicy);
replaceClassIntrospector(builder);
}
}
@@ -710,12 +710,12 @@ public class BeansWrapper implements RichObjectWrapper,
WriteProtectable {
}
/**
- * See {@link
#setNonRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)}.
+ * See {@link
#setDefaultZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)}.
*
* @since 2.3.33
*/
- public ZeroArgumentNonVoidMethodPolicy
getNonRecordZeroArgumentNonVoidMethodPolicy() {
- return classIntrospector.getNonRecordZeroArgumentNonVoidMethodPolicy();
+ public ZeroArgumentNonVoidMethodPolicy
getDefaultZeroArgumentNonVoidMethodPolicy() {
+ return classIntrospector.getDefaultZeroArgumentNonVoidMethodPolicy();
}
/**
diff --git
a/freemarker-core/src/main/java/freemarker/ext/beans/BeansWrapperConfiguration.java
b/freemarker-core/src/main/java/freemarker/ext/beans/BeansWrapperConfiguration.java
index a49fabbc..e69cf7a3 100644
---
a/freemarker-core/src/main/java/freemarker/ext/beans/BeansWrapperConfiguration.java
+++
b/freemarker-core/src/main/java/freemarker/ext/beans/BeansWrapperConfiguration.java
@@ -254,19 +254,19 @@ public abstract class BeansWrapperConfiguration
implements Cloneable {
/**
* @since 2.3.33
*/
- public ZeroArgumentNonVoidMethodPolicy
getNonRecordZeroArgumentNonVoidMethodPolicy() {
- return
classIntrospectorBuilder.getNonRecordZeroArgumentNonVoidMethodPolicy();
+ public ZeroArgumentNonVoidMethodPolicy
getDefaultZeroArgumentNonVoidMethodPolicy() {
+ return
classIntrospectorBuilder.getDefaultZeroArgumentNonVoidMethodPolicy();
}
/**
- * See {@link
BeansWrapper#setNonRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)}.
+ * See {@link
BeansWrapper#setDefaultZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)}.
*
* <p>Note that methods in this class are inherited by {@link
DefaultObjectWrapperBuilder}, which is what you normally use.
*
* @since 2.3.33
*/
- public void
setNonRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy
nonRecordZeroArgumentNonVoidMethodPolicy) {
-
classIntrospectorBuilder.setNonRecordZeroArgumentNonVoidMethodPolicy(nonRecordZeroArgumentNonVoidMethodPolicy);
+ public void
setDefaultZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy
defaultZeroArgumentNonVoidMethodPolicy) {
+
classIntrospectorBuilder.setDefaultZeroArgumentNonVoidMethodPolicy(defaultZeroArgumentNonVoidMethodPolicy);
}
/**
diff --git
a/freemarker-core/src/main/java/freemarker/ext/beans/ClassIntrospector.java
b/freemarker-core/src/main/java/freemarker/ext/beans/ClassIntrospector.java
index 66e75e03..90b109a1 100644
--- a/freemarker-core/src/main/java/freemarker/ext/beans/ClassIntrospector.java
+++ b/freemarker-core/src/main/java/freemarker/ext/beans/ClassIntrospector.java
@@ -153,7 +153,7 @@ class ClassIntrospector {
final MethodAppearanceFineTuner methodAppearanceFineTuner;
final MethodSorter methodSorter;
final boolean treatDefaultMethodsAsBeanMembers;
- final ZeroArgumentNonVoidMethodPolicy
nonRecordZeroArgumentNonVoidMethodPolicy;
+ final ZeroArgumentNonVoidMethodPolicy
defaultZeroArgumentNonVoidMethodPolicy;
final ZeroArgumentNonVoidMethodPolicy
recordZeroArgumentNonVoidMethodPolicy;
final private boolean recordAware;
final Version incompatibleImprovements;
@@ -197,12 +197,12 @@ class ClassIntrospector {
this.methodAppearanceFineTuner =
builder.getMethodAppearanceFineTuner();
this.methodSorter = builder.getMethodSorter();
this.treatDefaultMethodsAsBeanMembers =
builder.getTreatDefaultMethodsAsBeanMembers();
- this.nonRecordZeroArgumentNonVoidMethodPolicy =
builder.getNonRecordZeroArgumentNonVoidMethodPolicy();
+ this.defaultZeroArgumentNonVoidMethodPolicy =
builder.getDefaultZeroArgumentNonVoidMethodPolicy();
this.recordZeroArgumentNonVoidMethodPolicy =
builder.getRecordZeroArgumentNonVoidMethodPolicy();
- this.recordAware = nonRecordZeroArgumentNonVoidMethodPolicy !=
recordZeroArgumentNonVoidMethodPolicy;
+ this.recordAware = defaultZeroArgumentNonVoidMethodPolicy !=
recordZeroArgumentNonVoidMethodPolicy;
if (recordAware && _JavaVersions.JAVA_16 == null) {
throw new IllegalArgumentException(
- "nonRecordZeroArgumentNonVoidMethodPolicy !=
recordZeroArgumentNonVoidMethodPolicy, " +
+ "defaultZeroArgumentNonVoidMethodPolicy !=
recordZeroArgumentNonVoidMethodPolicy, " +
"but Java 16 support is not available.");
}
this.incompatibleImprovements = builder.getIncompatibleImprovements();
@@ -346,7 +346,7 @@ class ClassIntrospector {
boolean treatClassAsRecord = recordAware &&
_JavaVersions.JAVA_16.isRecord(clazz);
ZeroArgumentNonVoidMethodPolicy zeroArgumentNonVoidMethodPolicy =
treatClassAsRecord
? recordZeroArgumentNonVoidMethodPolicy
- : nonRecordZeroArgumentNonVoidMethodPolicy;
+ : defaultZeroArgumentNonVoidMethodPolicy;
// For real Java Beans properties only, used to exclude them from
creating fake properties based on ZeroArgumentNonVoidMethod.
Set<String> beanPropertyReadMethodNameCollector =
zeroArgumentNonVoidMethodPolicy != ZeroArgumentNonVoidMethodPolicy.METHOD_ONLY
@@ -1131,8 +1131,8 @@ class ClassIntrospector {
return treatDefaultMethodsAsBeanMembers;
}
- ZeroArgumentNonVoidMethodPolicy
getNonRecordZeroArgumentNonVoidMethodPolicy() {
- return nonRecordZeroArgumentNonVoidMethodPolicy;
+ ZeroArgumentNonVoidMethodPolicy
getDefaultZeroArgumentNonVoidMethodPolicy() {
+ return defaultZeroArgumentNonVoidMethodPolicy;
}
ZeroArgumentNonVoidMethodPolicy getRecordZeroArgumentNonVoidMethodPolicy()
{
diff --git
a/freemarker-core/src/main/java/freemarker/ext/beans/ClassIntrospectorBuilder.java
b/freemarker-core/src/main/java/freemarker/ext/beans/ClassIntrospectorBuilder.java
index 24ad2735..ea75987d 100644
---
a/freemarker-core/src/main/java/freemarker/ext/beans/ClassIntrospectorBuilder.java
+++
b/freemarker-core/src/main/java/freemarker/ext/beans/ClassIntrospectorBuilder.java
@@ -47,7 +47,7 @@ final class ClassIntrospectorBuilder implements Cloneable {
private boolean exposeFields;
private MemberAccessPolicy memberAccessPolicy;
private boolean treatDefaultMethodsAsBeanMembers;
- private ZeroArgumentNonVoidMethodPolicy
nonRecordZeroArgumentNonVoidMethodPolicy;
+ private ZeroArgumentNonVoidMethodPolicy
defaultZeroArgumentNonVoidMethodPolicy;
private ZeroArgumentNonVoidMethodPolicy
recordZeroArgumentNonVoidMethodPolicy;
private MethodAppearanceFineTuner methodAppearanceFineTuner;
private MethodSorter methodSorter;
@@ -63,7 +63,7 @@ final class ClassIntrospectorBuilder implements Cloneable {
exposeFields = ci.exposeFields;
memberAccessPolicy = ci.memberAccessPolicy;
treatDefaultMethodsAsBeanMembers = ci.treatDefaultMethodsAsBeanMembers;
- nonRecordZeroArgumentNonVoidMethodPolicy =
ci.nonRecordZeroArgumentNonVoidMethodPolicy;
+ defaultZeroArgumentNonVoidMethodPolicy =
ci.defaultZeroArgumentNonVoidMethodPolicy;
recordZeroArgumentNonVoidMethodPolicy =
ci.recordZeroArgumentNonVoidMethodPolicy;
methodAppearanceFineTuner = ci.methodAppearanceFineTuner;
methodSorter = ci.methodSorter;
@@ -75,7 +75,7 @@ final class ClassIntrospectorBuilder implements Cloneable {
// to some version changes that affects BeansWrapper, but not the
other way around.
this.incompatibleImprovements =
normalizeIncompatibleImprovementsVersion(incompatibleImprovements);
treatDefaultMethodsAsBeanMembers = incompatibleImprovements.intValue()
>= _VersionInts.V_2_3_26;
- nonRecordZeroArgumentNonVoidMethodPolicy =
ZeroArgumentNonVoidMethodPolicy.METHOD_ONLY;
+ defaultZeroArgumentNonVoidMethodPolicy =
ZeroArgumentNonVoidMethodPolicy.METHOD_ONLY;
recordZeroArgumentNonVoidMethodPolicy =
incompatibleImprovements.intValue() >= _VersionInts.V_2_3_33 &&
_JavaVersions.JAVA_16 != null
? ZeroArgumentNonVoidMethodPolicy.BOTH_PROPERTY_AND_METHOD :
ZeroArgumentNonVoidMethodPolicy.METHOD_ONLY;
memberAccessPolicy =
DefaultMemberAccessPolicy.getInstance(this.incompatibleImprovements);
@@ -106,7 +106,7 @@ final class ClassIntrospectorBuilder implements Cloneable {
result = prime * result + incompatibleImprovements.hashCode();
result = prime * result + (exposeFields ? 1231 : 1237);
result = prime * result + (treatDefaultMethodsAsBeanMembers ? 1231 :
1237);
- result = prime * result +
nonRecordZeroArgumentNonVoidMethodPolicy.hashCode();
+ result = prime * result +
defaultZeroArgumentNonVoidMethodPolicy.hashCode();
result = prime * result +
recordZeroArgumentNonVoidMethodPolicy.hashCode();
result = prime * result + exposureLevel;
result = prime * result + memberAccessPolicy.hashCode();
@@ -125,7 +125,7 @@ final class ClassIntrospectorBuilder implements Cloneable {
if (!incompatibleImprovements.equals(other.incompatibleImprovements))
return false;
if (exposeFields != other.exposeFields) return false;
if (treatDefaultMethodsAsBeanMembers !=
other.treatDefaultMethodsAsBeanMembers) return false;
- if (nonRecordZeroArgumentNonVoidMethodPolicy !=
other.nonRecordZeroArgumentNonVoidMethodPolicy) return false;
+ if (defaultZeroArgumentNonVoidMethodPolicy !=
other.defaultZeroArgumentNonVoidMethodPolicy) return false;
if (recordZeroArgumentNonVoidMethodPolicy !=
other.recordZeroArgumentNonVoidMethodPolicy) return false;
if (exposureLevel != other.exposureLevel) return false;
if (!memberAccessPolicy.equals(other.memberAccessPolicy)) return false;
@@ -168,16 +168,16 @@ final class ClassIntrospectorBuilder implements Cloneable
{
/**
* @since 2.3.33
*/
- public ZeroArgumentNonVoidMethodPolicy
getNonRecordZeroArgumentNonVoidMethodPolicy() {
- return nonRecordZeroArgumentNonVoidMethodPolicy;
+ public ZeroArgumentNonVoidMethodPolicy
getDefaultZeroArgumentNonVoidMethodPolicy() {
+ return defaultZeroArgumentNonVoidMethodPolicy;
}
/**
* @since 2.3.33
*/
- public void
setNonRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy
nonRecordZeroArgumentNonVoidMethodPolicy) {
- NullArgumentException.check(nonRecordZeroArgumentNonVoidMethodPolicy);
- this.nonRecordZeroArgumentNonVoidMethodPolicy =
nonRecordZeroArgumentNonVoidMethodPolicy;
+ public void
setDefaultZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy
defaultZeroArgumentNonVoidMethodPolicy) {
+ NullArgumentException.check(defaultZeroArgumentNonVoidMethodPolicy);
+ this.defaultZeroArgumentNonVoidMethodPolicy =
defaultZeroArgumentNonVoidMethodPolicy;
}
/**
diff --git
a/freemarker-core/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
b/freemarker-core/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
index bfa6bc9f..8d0ccd8d 100644
---
a/freemarker-core/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
+++
b/freemarker-core/src/main/java/freemarker/ext/beans/MethodAppearanceFineTuner.java
@@ -92,7 +92,7 @@ public interface MethodAppearanceFineTuner {
* {@link
MethodAppearanceDecision#setMethodInsteadOfPropertyValueBeforeCall(boolean)}
{@code true},
* both {@code user.name}, and {@code user.name()} will do the same.
* The default of this is influenced by
- * {@link
BeansWrapperConfiguration#setNonRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)},
+ * {@link
BeansWrapperConfiguration#setDefaultZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)},
* {@link
BeansWrapperConfiguration#setRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)}.
* <li>Prevent the method to hide a JavaBeans property (fake or real) of
* the same name by calling
diff --git
a/freemarker-core/src/main/java/freemarker/ext/beans/ZeroArgumentNonVoidMethodPolicy.java
b/freemarker-core/src/main/java/freemarker/ext/beans/ZeroArgumentNonVoidMethodPolicy.java
index add78f0b..2864e1ca 100644
---
a/freemarker-core/src/main/java/freemarker/ext/beans/ZeroArgumentNonVoidMethodPolicy.java
+++
b/freemarker-core/src/main/java/freemarker/ext/beans/ZeroArgumentNonVoidMethodPolicy.java
@@ -28,7 +28,7 @@ import freemarker.template.DefaultObjectWrapper;
* typically look like {@code getSomething()}, or {@code isSomething()}). It's
only applicable to methods like
* {@code something()}, including the component read methods of Java records.
*
- * @see
BeansWrapperConfiguration#setNonRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)
+ * @see
BeansWrapperConfiguration#setDefaultZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)
* @see
BeansWrapperConfiguration#setRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy)
* @see
BeansWrapper.MethodAppearanceDecision#setMethodInsteadOfPropertyValueBeforeCall(boolean)
*
diff --git
a/freemarker-core16/src/test/java/freemarker/ext/beans/TestZeroArgumentNonVoidMethodPolicy.java
b/freemarker-core16/src/test/java/freemarker/ext/beans/TestZeroArgumentNonVoidMethodPolicy.java
index ee834f88..ce61d01b 100644
---
a/freemarker-core16/src/test/java/freemarker/ext/beans/TestZeroArgumentNonVoidMethodPolicy.java
+++
b/freemarker-core16/src/test/java/freemarker/ext/beans/TestZeroArgumentNonVoidMethodPolicy.java
@@ -115,12 +115,12 @@ public class TestZeroArgumentNonVoidMethodPolicy extends
TemplateTest {
}
@Test
- public void testDefaultWithNonRecordsPropertyOnly() throws
TemplateException, IOException {
+ public void testDefaultWithDefaultPropertyOnly() throws TemplateException,
IOException {
for (boolean cacheTopLevelVars : List.of(true, false)) {
setupDataModel(
() -> {
DefaultObjectWrapper beansWrapper = new
DefaultObjectWrapper(VERSION_2_3_32);
-
beansWrapper.setNonRecordZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy.PROPERTY_ONLY);
+
beansWrapper.setDefaultZeroArgumentNonVoidMethodPolicy(ZeroArgumentNonVoidMethodPolicy.PROPERTY_ONLY);
return beansWrapper;
},
cacheTopLevelVars);
@@ -135,7 +135,7 @@ public class TestZeroArgumentNonVoidMethodPolicy extends
TemplateTest {
setupDataModel(
() -> {
DefaultObjectWrapper beansWrapper = new
DefaultObjectWrapper(VERSION_2_3_33);
-
beansWrapper.setNonRecordZeroArgumentNonVoidMethodPolicy(
+ beansWrapper.setDefaultZeroArgumentNonVoidMethodPolicy(
ZeroArgumentNonVoidMethodPolicy.BOTH_PROPERTY_AND_METHOD);
return beansWrapper;
},
@@ -149,7 +149,7 @@ public class TestZeroArgumentNonVoidMethodPolicy extends
TemplateTest {
public void testSettings() throws TemplateException, IOException {
getConfiguration().setSetting(
"objectWrapper",
- "DefaultObjectWrapper(2.3.33,
nonRecordZeroArgumentNonVoidMethodPolicy=freemarker.ext.beans.ZeroArgumentNonVoidMethodPolicy.BOTH_PROPERTY_AND_METHOD)");
+ "DefaultObjectWrapper(2.3.33,
defaultZeroArgumentNonVoidMethodPolicy=freemarker.ext.beans.ZeroArgumentNonVoidMethodPolicy.BOTH_PROPERTY_AND_METHOD)");
setupDataModel(() -> getConfiguration().getObjectWrapper(), false);
assertRecIsBothPropertyAndMethod();
assertNrcIsBothPropertyAndMethod();
@@ -162,7 +162,7 @@ public class TestZeroArgumentNonVoidMethodPolicy extends
TemplateTest {
setDataModel(cacheTopLevelVars ? new SimpleHash(objectWrapper) : new
HashMap<>());
addToDataModel("rec", new TestRecord(1, "S"));
- addToDataModel("nrc", new TestNonRecord());
+ addToDataModel("nrc", new TestDefault());
}
private void assertRecIsBothPropertyAndMethod() throws IOException,
TemplateException {
@@ -310,7 +310,7 @@ public class TestZeroArgumentNonVoidMethodPolicy extends
TemplateTest {
}
}
- public static class TestNonRecord implements TestInterface {
+ public static class TestDefault implements TestInterface {
public int x() {
return 1;
}
diff --git a/freemarker-manual/src/main/docgen/en_US/book.xml
b/freemarker-manual/src/main/docgen/en_US/book.xml
index 17c0c34f..918c9a8d 100644
--- a/freemarker-manual/src/main/docgen/en_US/book.xml
+++ b/freemarker-manual/src/main/docgen/en_US/book.xml
@@ -20,10 +20,7 @@
<book conformance="docgen" version="5.0" xml:lang="en"
xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:ns5="http://www.w3.org/1999/xhtml"
- xmlns:ns4="http://www.w3.org/2000/svg"
- xmlns:ns3="http://www.w3.org/1998/Math/MathML"
- xmlns:ns="http://docbook.org/ns/docbook">
+>
<info>
<title>Apache FreeMarker Manual</title>
@@ -30304,7 +30301,7 @@ TemplateModel x = env.getVariable("x"); // get
variable x</programlisting>
<literal>DefaultObjectWrapper</literal>:
<literal>recordZeroArgumentNonVoidMethodPolicy</literal>,
and
- <literal>nonRecordZeroArgumentNonVoidMethodPolicy</literal>.
+ <literal>defaultZeroArgumentNonVoidMethodPolicy</literal>.
Each has enum type
<literal>freemarker.ext.beans.ZeroArgumentNonVoidMethodPolicy</literal>,
that can be <literal>METHOD_ONLY</literal>,
@@ -30315,7 +30312,7 @@ TemplateModel x = env.getVariable("x"); // get
variable x</programlisting>
<itemizedlist>
<listitem>
<para>Note that with
-
<literal>nonRecordZeroArgumentNonVoidMethodPolicy</literal>
+ <literal>defaultZeroArgumentNonVoidMethodPolicy</literal>
you can set similar behavior to non-records. That is,
you can call 0 argument non-void methods without
<literal>()</literal>, if you want. It's only meant to