You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/03/18 15:21:14 UTC

incubator-freemarker git commit: Added isXxxSetExplicity to DefaultObjectWrapper.ExtendableBuilder

Repository: incubator-freemarker
Updated Branches:
  refs/heads/3 c04f5b517 -> 077d4d53f


Added isXxxSetExplicity to DefaultObjectWrapper.ExtendableBuilder


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/077d4d53
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/077d4d53
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/077d4d53

Branch: refs/heads/3
Commit: 077d4d53fa946fcf09e530c87a51375d5ad7816f
Parents: c04f5b5
Author: ddekany <dd...@apache.org>
Authored: Sat Mar 18 16:03:34 2017 +0100
Committer: ddekany <dd...@apache.org>
Committed: Sat Mar 18 16:21:04 2017 +0100

----------------------------------------------------------------------
 .../core/model/impl/ClassIntrospector.java      | 22 ++++++-
 .../core/model/impl/DefaultObjectWrapper.java   | 60 ++++++++++++++++++++
 2 files changed, 80 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/077d4d53/src/main/java/org/apache/freemarker/core/model/impl/ClassIntrospector.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/model/impl/ClassIntrospector.java b/src/main/java/org/apache/freemarker/core/model/impl/ClassIntrospector.java
index 303672a..c7f9963 100644
--- a/src/main/java/org/apache/freemarker/core/model/impl/ClassIntrospector.java
+++ b/src/main/java/org/apache/freemarker/core/model/impl/ClassIntrospector.java
@@ -1080,8 +1080,11 @@ class ClassIntrospector {
 
         // Properties and their *defaults*:
         private int exposureLevel = DefaultObjectWrapper.EXPOSE_SAFE;
+        private boolean exposureLevelExplicitlySet;
         private boolean exposeFields;
+        private boolean exposeFieldsExplicitlySet;
         private MethodAppearanceFineTuner methodAppearanceFineTuner;
+        private boolean methodAppearanceFineTunerExplicitlySet;
         private MethodSorter methodSorter;
         // Attention:
         // - This is also used as a cache key, so non-normalized field values should be avoided.
@@ -1141,22 +1144,32 @@ class ClassIntrospector {
             return exposureLevel;
         }
 
-        /** See {@link DefaultObjectWrapper#setExposureLevel(int)}. */
+        /** See {@link DefaultObjectWrapper.ExtendableBuilder#setExposureLevel(int)}. */
         public void setExposureLevel(int exposureLevel) {
             if (exposureLevel < DefaultObjectWrapper.EXPOSE_ALL || exposureLevel > DefaultObjectWrapper.EXPOSE_NOTHING) {
                 throw new IllegalArgumentException("Illegal exposure level: " + exposureLevel);
             }
 
             this.exposureLevel = exposureLevel;
+            exposureLevelExplicitlySet = true;
+        }
+
+        public boolean isExposureLevelExplicitlySet() {
+            return exposureLevelExplicitlySet;
         }
 
         public boolean getExposeFields() {
             return exposeFields;
         }
 
-        /** See {@link DefaultObjectWrapper#setExposeFields(boolean)}. */
+        /** See {@link DefaultObjectWrapper.ExtendableBuilder#setExposeFields(boolean)}. */
         public void setExposeFields(boolean exposeFields) {
             this.exposeFields = exposeFields;
+            exposeFieldsExplicitlySet = true;
+        }
+
+        public boolean isExposeFieldsExplicitlySet() {
+            return exposeFieldsExplicitlySet;
         }
 
         public MethodAppearanceFineTuner getMethodAppearanceFineTuner() {
@@ -1165,6 +1178,11 @@ class ClassIntrospector {
 
         public void setMethodAppearanceFineTuner(MethodAppearanceFineTuner methodAppearanceFineTuner) {
             this.methodAppearanceFineTuner = methodAppearanceFineTuner;
+            methodAppearanceFineTunerExplicitlySet = true;
+        }
+
+        public boolean isMethodAppearanceFineTunerExplicitlySet() {
+            return methodAppearanceFineTunerExplicitlySet;
         }
 
         public MethodSorter getMethodSorter() {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/077d4d53/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java b/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
index 3e31739..73adecc 100644
--- a/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
+++ b/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
@@ -1339,10 +1339,15 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
 
         // Properties and their *defaults*:
         private int defaultDateType = TemplateDateModel.UNKNOWN;
+        private boolean defaultDataTypeExplicitlySet;
         private ObjectWrapper outerIdentity;
+        private boolean outerIdentityExplicitlySet;
         private boolean strict;
+        private boolean strictExplicitlySet;
         private boolean useModelCache;
+        private boolean useModelCacheExplicitlySet;
         private boolean usePrivateCaches;
+        private boolean usePrivateCachesExplicitlySet;
         // Attention!
         // - As this object is a cache key, non-normalized field values should be avoided.
         // - Fields with default values must be set until the end of the constructor to ensure that when the lookup happens,
@@ -1489,6 +1494,7 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
          */
         public void setDefaultDateType(int defaultDateType) {
             this.defaultDateType = defaultDateType;
+            defaultDataTypeExplicitlySet = true;
         }
 
         /**
@@ -1500,6 +1506,13 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
         }
 
         /**
+         * Tells if the property was explicitly set, as opposed to just holding its default value.
+         */
+        public boolean isDefaultDataTypeExplicitlySet() {
+            return defaultDataTypeExplicitlySet;
+        }
+
+        /**
          * Getter pair of {@link #setOuterIdentity(ObjectWrapper)}.
          */
         public ObjectWrapper getOuterIdentity() {
@@ -1517,6 +1530,7 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
          */
         public void setOuterIdentity(ObjectWrapper outerIdentity) {
             this.outerIdentity = outerIdentity;
+            outerIdentityExplicitlySet = true;
         }
 
         /**
@@ -1528,6 +1542,13 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
         }
 
         /**
+         * Tells if the property was explicitly set, as opposed to just holding its default value.
+         */
+        public boolean isOuterIdentityExplicitlySet() {
+            return outerIdentityExplicitlySet;
+        }
+
+        /**
          * Getter pair of {@link #setStrict(boolean)}.
          */
         public boolean isStrict() {
@@ -1557,6 +1578,7 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
          */
         public void setStrict(boolean strict) {
             this.strict = strict;
+            strictExplicitlySet = true;
         }
 
         /**
@@ -1567,6 +1589,13 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
             return self();
         }
 
+        /**
+         * Tells if the property was explicitly set, as opposed to just holding its default value.
+         */
+        public boolean isStrictExplicitlySet() {
+            return strictExplicitlySet;
+        }
+
         public boolean getUseModelCache() {
             return useModelCache;
         }
@@ -1577,6 +1606,7 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
         // [FM3] Remove
         public void setUseModelCache(boolean useModelCache) {
             this.useModelCache = useModelCache;
+            useModelCacheExplicitlySet = true;
         }
 
         /**
@@ -1589,6 +1619,13 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
         }
 
         /**
+         * Tells if the property was explicitly set, as opposed to just holding its default value.
+         */
+        public boolean isUseModelCacheExplicitlySet() {
+            return useModelCacheExplicitlySet;
+        }
+
+        /**
          * Getter pair of {@link #setUsePrivateCaches(boolean)}.
          */
         public boolean getUsePrivateCaches() {
@@ -1601,6 +1638,14 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
          * */
         public void setUsePrivateCaches(boolean usePrivateCaches) {
             this.usePrivateCaches = usePrivateCaches;
+            usePrivateCaches = true;
+        }
+
+        /**
+         * Tells if the property was explicitly set, as opposed to just holding its default value.
+         */
+        public boolean isUsePrivateCachesExplicitlySet() {
+            return usePrivateCachesExplicitlySet;
         }
 
         /**
@@ -1630,6 +1675,13 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
         }
 
         /**
+         * Tells if the property was explicitly set, as opposed to just holding its default value.
+         */
+        public boolean setExposureLevelExplicitlySet() {
+            return classIntrospectorBuilder.isExposureLevelExplicitlySet();
+        }
+
+        /**
          * Getter pair of {@link #setExposeFields(boolean)}
          */
         public boolean getExposeFields() {
@@ -1658,6 +1710,10 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
             return self();
         }
 
+        public boolean isExposeFieldsExplicitlySet() {
+            return classIntrospectorBuilder.isExposeFieldsExplicitlySet();
+        }
+
         /**
          * Getter pair of {@link #setMethodAppearanceFineTuner(MethodAppearanceFineTuner)}
          */
@@ -1683,6 +1739,10 @@ public class DefaultObjectWrapper implements RichObjectWrapper {
             return self();
         }
 
+        public boolean isMethodAppearanceFineTunerExplicitlySet() {
+            return classIntrospectorBuilder.isMethodAppearanceFineTunerExplicitlySet();
+        }
+
         /**
          * Used internally for testing.
          */