Repository: incubator-freemarker
Updated Branches:
  refs/heads/3 bd1c4c40d -> 8680c0605


(Removed unnecessary complication with equals and hashCode in 
DefaultObjectWrapper)


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

Branch: refs/heads/3
Commit: 8680c0605d9ca9863d0838a125d61213a9229035
Parents: bd1c4c4
Author: ddekany <[email protected]>
Authored: Sat Jun 10 20:40:55 2017 +0200
Committer: ddekany <[email protected]>
Committed: Sat Jun 10 20:40:55 2017 +0200

----------------------------------------------------------------------
 .../core/model/impl/DefaultObjectWrapper.java   | 72 +++++++-------------
 1 file changed, 26 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/8680c060/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
index e9b04ee..28ea4b3 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapper.java
@@ -1336,22 +1336,6 @@ public class DefaultObjectWrapper implements 
RichObjectWrapper {
         }
 
         /**
-         * Calls {@link 
ExtendableBuilder#hashCodeForCacheKey(ExtendableBuilder)}.
-         */
-        @Override
-        public int hashCode() {
-            return hashCodeForCacheKey(this);
-        }
-
-        /**
-         * Calls {@link ExtendableBuilder#equalsForCacheKey(ExtendableBuilder, 
Object)}.
-         */
-        @Override
-        public boolean equals(Object obj) {
-            return equalsForCacheKey(this, obj);
-        }
-
-        /**
          * For unit testing only
          */
         static Map<ClassLoader, Map<Builder, 
WeakReference<DefaultObjectWrapper>>> getInstanceCache() {
@@ -1460,52 +1444,48 @@ public class DefaultObjectWrapper implements 
RichObjectWrapper {
          * returns from a cache. If you override {@link ExtendableBuilder} and 
add new fields, don't forget to take
          * those into account too!
          *
-         * <p>{@link Builder#hashCode()} is delegated to this.
-         *
-         * @see #equalsForCacheKey(ExtendableBuilder, Object)
+         * @see #equals(Object)
          * @see #cloneForCacheKey()
          */
-        protected static int hashCodeForCacheKey(ExtendableBuilder<?, ?> 
builder) {
+        @Override
+        public int hashCode() {
             final int prime = 31;
             int result = 1;
-            result = prime * result + 
builder.getIncompatibleImprovements().hashCode();
-            result = prime * result + builder.getDefaultDateType();
-            result = prime * result + (builder.getOuterIdentity() != null ? 
builder.getOuterIdentity().hashCode() : 0);
-            result = prime * result + (builder.isStrict() ? 1231 : 1237);
-            result = prime * result + (builder.getUseModelCache() ? 1231 : 
1237);
-            result = prime * result + (builder.getUsePrivateCaches() ? 1231 : 
1237);
-            result = prime * result + 
builder.classIntrospectorBuilder.hashCode();
-            result = prime * result + builder.getExtensions().hashCode();
+            result = prime * result + getIncompatibleImprovements().hashCode();
+            result = prime * result + getDefaultDateType();
+            result = prime * result + (getOuterIdentity() != null ? 
getOuterIdentity().hashCode() : 0);
+            result = prime * result + (isStrict() ? 1231 : 1237);
+            result = prime * result + (getUseModelCache() ? 1231 : 1237);
+            result = prime * result + (getUsePrivateCaches() ? 1231 : 1237);
+            result = prime * result + classIntrospectorBuilder.hashCode();
+            result = prime * result + getExtensions().hashCode();
             return result;
         }
-
+        
         /**
          * A content-based {@link Object#equals(Object)} that could be used to 
look up the product object that
          * {@link #build()} returns from a cache. If you override {@link 
ExtendableBuilder} and add new fields, don't
          * forget to take those into account too!
          *
-         * <p>
-         * {@link Builder#equals(Object)} is delegated to this.
-         *
-         * @see #hashCodeForCacheKey(ExtendableBuilder)
+         * @see #hashCode()
          * @see #cloneForCacheKey()
          */
-        protected static boolean equalsForCacheKey(ExtendableBuilder<?, ?> 
thisBuilder,  Object thatObj) {
-            if (thisBuilder == thatObj) return true;
+        public boolean equals(Object thatObj) {
+            if (this == thatObj) return true;
             if (thatObj == null) return false;
-            if (thisBuilder.getClass() != thatObj.getClass()) return false;
+            if (getClass() != thatObj.getClass()) return false;
             ExtendableBuilder<?, ?> thatBuilder = (ExtendableBuilder<?, ?>) 
thatObj;
 
-            if 
(!thisBuilder.getIncompatibleImprovements().equals(thatBuilder.getIncompatibleImprovements()))
 {
+            if 
(!getIncompatibleImprovements().equals(thatBuilder.getIncompatibleImprovements()))
 {
                 return false;
             }
-            if (thisBuilder.getDefaultDateType() != 
thatBuilder.getDefaultDateType()) return false;
-            if (thisBuilder.getOuterIdentity() != 
thatBuilder.getOuterIdentity()) return false;
-            if (thisBuilder.isStrict() != thatBuilder.isStrict()) return false;
-            if (thisBuilder.getUseModelCache() != 
thatBuilder.getUseModelCache()) return false;
-            if (thisBuilder.getUsePrivateCaches() != 
thatBuilder.getUsePrivateCaches()) return false;
-            if 
(!thisBuilder.getExtensions().equals(thatBuilder.getExtensions())) return false;
-            return 
thisBuilder.classIntrospectorBuilder.equals(thatBuilder.classIntrospectorBuilder);
+            if (getDefaultDateType() != thatBuilder.getDefaultDateType()) 
return false;
+            if (getOuterIdentity() != thatBuilder.getOuterIdentity()) return 
false;
+            if (isStrict() != thatBuilder.isStrict()) return false;
+            if (getUseModelCache() != thatBuilder.getUseModelCache()) return 
false;
+            if (getUsePrivateCaches() != thatBuilder.getUsePrivateCaches()) 
return false;
+            if (!getExtensions().equals(thatBuilder.getExtensions())) return 
false;
+            return 
this.classIntrospectorBuilder.equals(thatBuilder.classIntrospectorBuilder);
         }
 
         /**
@@ -1518,8 +1498,8 @@ public class DefaultObjectWrapper implements 
RichObjectWrapper {
          * method, and you will also cache product instances, you need to 
clone those values manually to prevent
          * aliasing problems, so don't forget to override this method!
          *
-         * @see #equalsForCacheKey(ExtendableBuilder, Object)
-         * @see #hashCodeForCacheKey(ExtendableBuilder)
+         * @see #equals(Object)
+         * @see #hashCode()
          */
         protected SelfT cloneForCacheKey() {
             try {

Reply via email to