[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<>();