[SYNCOPE-1357] Wiser equals() and hashCode()

Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/4649a2b6
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/4649a2b6
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/4649a2b6

Branch: refs/heads/2_1_X
Commit: 4649a2b6f6dfafac039db690f7d2da94172d408b
Parents: cec57fc
Author: Francesco Chicchiriccò <ilgro...@apache.org>
Authored: Thu Aug 16 12:31:51 2018 +0200
Committer: Francesco Chicchiriccò <ilgro...@apache.org>
Committed: Thu Aug 16 12:31:51 2018 +0200

----------------------------------------------------------------------
 .../provisioning/api/cache/VirAttrCacheKey.java | 35 +++++++++++-----
 .../api/cache/VirAttrCacheValue.java            | 42 +++++++++++++++++++-
 .../provisioning/java/VirAttrHandlerImpl.java   |  2 +-
 3 files changed, 67 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/4649a2b6/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java
----------------------------------------------------------------------
diff --git 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java
 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java
index 41d5224..59e1839 100644
--- 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java
+++ 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java
@@ -18,10 +18,7 @@
  */
 package org.apache.syncope.core.provisioning.api.cache;
 
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
+import java.util.Objects;
 
 /**
  * Cache entry key.
@@ -62,17 +59,37 @@ public class VirAttrCacheKey {
     }
 
     @Override
-    public boolean equals(final Object obj) {
-        return EqualsBuilder.reflectionEquals(this, obj, true);
+    public int hashCode() {
+        int hash = 5;
+        hash = 89 * hash + Objects.hashCode(this.type);
+        hash = 89 * hash + Objects.hashCode(this.key);
+        hash = 89 * hash + Objects.hashCode(this.virSchema);
+        return hash;
     }
 
     @Override
-    public int hashCode() {
-        return HashCodeBuilder.reflectionHashCode(this, true);
+    public boolean equals(final Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final VirAttrCacheKey other = (VirAttrCacheKey) obj;
+        if (!Objects.equals(this.type, other.type)) {
+            return false;
+        }
+        if (!Objects.equals(this.key, other.key)) {
+            return false;
+        }
+        return Objects.equals(this.virSchema, other.virSchema);
     }
 
     @Override
     public String toString() {
-        return ReflectionToStringBuilder.toString(this, 
ToStringStyle.JSON_STYLE, true);
+        return "VirAttrCacheKey{" + "type=" + type + ", key=" + key + ", 
virSchema=" + virSchema + '}';
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4649a2b6/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java
----------------------------------------------------------------------
diff --git 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java
 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java
index 1822744..83a729b 100644
--- 
a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java
+++ 
b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheValue.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Cache entry value.
@@ -53,9 +54,9 @@ public class VirAttrCacheValue {
         this.values.clear();
 
         if (values != null) {
-            for (Object value : values) {
+            values.forEach(value -> {
                 this.values.add(value.toString());
-            }
+            });
         }
     }
 
@@ -88,4 +89,41 @@ public class VirAttrCacheValue {
             this.lastAccessDate = null;
         }
     }
+
+    @Override
+    public int hashCode() {
+        int hash = 5;
+        hash = 67 * hash + Objects.hashCode(this.values);
+        hash = 67 * hash + Objects.hashCode(this.creationDate);
+        hash = 67 * hash + Objects.hashCode(this.lastAccessDate);
+        return hash;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        final VirAttrCacheValue other = (VirAttrCacheValue) obj;
+        if (!Objects.equals(this.values, other.values)) {
+            return false;
+        }
+        if (!Objects.equals(this.creationDate, other.creationDate)) {
+            return false;
+        }
+        return Objects.equals(this.lastAccessDate, other.lastAccessDate);
+    }
+
+    @Override
+    public String toString() {
+        return "VirAttrCacheValue{"
+                + "values=" + values + ", creationDate=" + creationDate + ", 
lastAccessDate=" + lastAccessDate
+                + '}';
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4649a2b6/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
----------------------------------------------------------------------
diff --git 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
index d951a4c..2af9933 100644
--- 
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
+++ 
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/VirAttrHandlerImpl.java
@@ -82,7 +82,7 @@ public class VirAttrHandlerImpl implements VirAttrHandler {
                 if (virAttrCache.isValidEntry(virAttrCacheValue)) {
                     LOG.debug("Values for {} found in cache: {}", schema, 
virAttrCacheValue);
                     result.put(schema, virAttrCacheValue.getValues());
-                } else {
+                } else if 
(schema.getProvision().getAnyType().equals(any.getType())) {
                     Set<VirSchema> schemasToRead = 
toRead.get(schema.getProvision());
                     if (schemasToRead == null) {
                         schemasToRead = new HashSet<>();

Reply via email to