You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by th...@apache.org on 2022/04/29 12:08:30 UTC
[wicket] branch wicket-9.x updated: WICKET-6977 More efficient hashcode computations (#513)
This is an automated email from the ASF dual-hosted git repository.
theigl pushed a commit to branch wicket-9.x
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/wicket-9.x by this push:
new bde5ac8a06 WICKET-6977 More efficient hashcode computations (#513)
bde5ac8a06 is described below
commit bde5ac8a0695332c06df2d9459d71953275d6a49
Author: Alan Stange <as...@gmail.com>
AuthorDate: Fri Apr 29 08:01:01 2022 -0400
WICKET-6977 More efficient hashcode computations (#513)
* Use more efficient hashcode computations
* WICKET-6977 Always call super for equals/hashCode in abstract header item base classes
Co-authored-by: Thomas Heigl <th...@gmail.com>
(cherry picked from commit 80726e2dae60e5893be0621761883f2dec20cac0)
---
.../head/AbstractCssReferenceHeaderItem.java | 9 +++++--
.../AbstractJavaScriptReferenceHeaderItem.java | 17 +++++++++---
.../wicket/markup/head/CssReferenceHeaderItem.java | 8 +++++-
.../markup/head/CssUrlReferenceHeaderItem.java | 7 ++++-
.../markup/head/JavaScriptContentHeaderItem.java | 5 +++-
.../markup/head/JavaScriptReferenceHeaderItem.java | 6 ++++-
.../head/JavaScriptUrlReferenceHeaderItem.java | 5 +++-
.../wicket/markup/head/MetaDataHeaderItem.java | 6 ++++-
.../wicket/markup/head/OnEventHeaderItem.java | 6 ++++-
.../wicket/request/resource/ResourceReference.java | 31 +++++++++-------------
10 files changed, 69 insertions(+), 31 deletions(-)
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractCssReferenceHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractCssReferenceHeaderItem.java
index eccbf521e1..cfe993b950 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractCssReferenceHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractCssReferenceHeaderItem.java
@@ -101,7 +101,6 @@ public abstract class AbstractCssReferenceHeaderItem extends CssHeaderItem imple
response.write("\n");
}
-
@Override
public boolean equals(Object o)
{
@@ -109,6 +108,8 @@ public abstract class AbstractCssReferenceHeaderItem extends CssHeaderItem imple
return true;
if (o == null || getClass() != o.getClass())
return false;
+ if (!super.equals(o))
+ return false;
AbstractCssReferenceHeaderItem that = (AbstractCssReferenceHeaderItem)o;
return Objects.equals(integrity, that.integrity)
&& Objects.equals(crossOrigin, that.crossOrigin);
@@ -117,6 +118,10 @@ public abstract class AbstractCssReferenceHeaderItem extends CssHeaderItem imple
@Override
public int hashCode()
{
- return Objects.hash(integrity, crossOrigin);
+ // Not using `Objects.hash` for performance reasons
+ int result = super.hashCode();
+ result = 31 * result + (crossOrigin != null ? crossOrigin.hashCode() : 0);
+ result = 31 * result + (integrity != null ? integrity.hashCode() : 0);
+ return result;
}
}
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItem.java
index 2dfd200ef1..91daf7fcdd 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/AbstractJavaScriptReferenceHeaderItem.java
@@ -124,9 +124,13 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
@Override
public boolean equals(Object o)
{
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- AbstractJavaScriptReferenceHeaderItem that = (AbstractJavaScriptReferenceHeaderItem) o;
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ if (!super.equals(o))
+ return false;
+ AbstractJavaScriptReferenceHeaderItem that = (AbstractJavaScriptReferenceHeaderItem)o;
return async == that.async &&
defer == that.defer &&
Objects.equals(charset, that.charset);
@@ -135,6 +139,11 @@ public abstract class AbstractJavaScriptReferenceHeaderItem extends JavaScriptHe
@Override
public int hashCode()
{
- return Objects.hash(async, defer, charset);
+ // Not using `Objects.hash` for performance reasons
+ int result = super.hashCode();
+ result = 31 * result + (async ? 1 : 0);
+ result = 31 * result + (defer ? 1 : 0);
+ result = 31 * result + (charset != null ? charset.hashCode() : 0);
+ return result;
}
}
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssReferenceHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssReferenceHeaderItem.java
index f26ccc3bb0..a2ee043045 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssReferenceHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssReferenceHeaderItem.java
@@ -154,7 +154,13 @@ public class CssReferenceHeaderItem extends AbstractCssReferenceHeaderItem imple
@Override
public int hashCode()
{
- return Objects.hash(super.hashCode(), reference, getMedia(), pageParameters, getRel());
+ // Not using `Objects.hash` for performance reasons
+ int result = super.hashCode();
+ result = 31 * result + ((reference != null) ? reference.hashCode() : 0);
+ result = 31 * result + ((getMedia() != null) ? getMedia().hashCode() : 0);
+ result = 31 * result + ((pageParameters != null) ? pageParameters.hashCode() : 0);
+ result = 31 * result + ((getRel() != null) ? getRel().hashCode() : 0);
+ return result;
}
@Override
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssUrlReferenceHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssUrlReferenceHeaderItem.java
index 5895b7ba2d..950a1106ef 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/CssUrlReferenceHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/CssUrlReferenceHeaderItem.java
@@ -97,7 +97,12 @@ public class CssUrlReferenceHeaderItem extends AbstractCssReferenceHeaderItem
@Override
public int hashCode()
{
- return Objects.hash(super.hashCode(), url, getMedia(), getRel());
+ // Not using `Objects.hash` for performance reasons
+ int result = super.hashCode();
+ result = 31 * result + ((url != null) ? url.hashCode() : 0);
+ result = 31 * result + ((getMedia() != null) ? getMedia().hashCode() : 0);
+ result = 31 * result + ((getRel() != null) ? getRel().hashCode() : 0);
+ return result;
}
@Override
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptContentHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptContentHeaderItem.java
index b4f80cbb75..0c8839d6f4 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptContentHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptContentHeaderItem.java
@@ -94,6 +94,9 @@ public class JavaScriptContentHeaderItem extends JavaScriptHeaderItem
@Override
public int hashCode()
{
- return Objects.hash(super.hashCode(), javaScript);
+ // Not using `Objects.hash` for performance reasons
+ int result = super.hashCode();
+ result = 31 * result + ((javaScript != null) ? javaScript.hashCode() : 0);
+ return result;
}
}
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
index 3bebdf2457..a04c6ed306 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptReferenceHeaderItem.java
@@ -123,7 +123,11 @@ public class JavaScriptReferenceHeaderItem extends AbstractJavaScriptReferenceHe
@Override
public int hashCode()
{
- return java.util.Objects.hash(super.hashCode(), reference, pageParameters);
+ // Not using `Objects.hash` for performance reasons
+ int result = super.hashCode();
+ result = 31 * result + (reference != null ? reference.hashCode() : 0);
+ result = 31 * result + (pageParameters != null ? pageParameters.hashCode() : 0);
+ return result;
}
@Override
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
index bcf7c7c0ad..dc74144a4a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/JavaScriptUrlReferenceHeaderItem.java
@@ -94,6 +94,9 @@ public class JavaScriptUrlReferenceHeaderItem extends AbstractJavaScriptReferenc
@Override
public int hashCode()
{
- return Objects.hash(super.hashCode(), url);
+ // Not using `Objects.hash` for performance reasons
+ int result = super.hashCode();
+ result = 31 * result + (url != null ? url.hashCode() : 0);
+ return result;
}
}
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/MetaDataHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/MetaDataHeaderItem.java
index 38efb5b070..6649ef2b66 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/MetaDataHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/MetaDataHeaderItem.java
@@ -278,6 +278,10 @@ public class MetaDataHeaderItem extends HeaderItem
@Override
public int hashCode()
{
- return Objects.hash(tagAttributes, tagMinimizedAttributes, tagName);
+ // Not using `Objects.hash` for performance reasons
+ int result = tagAttributes != null ? tagAttributes.hashCode() : 0;
+ result = 31 * result + (tagMinimizedAttributes != null ? tagMinimizedAttributes.hashCode() : 0);
+ result = 31 * result + (tagName != null ? tagName.hashCode() : 0);
+ return result;
}
}
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/head/OnEventHeaderItem.java b/wicket-core/src/main/java/org/apache/wicket/markup/head/OnEventHeaderItem.java
index 9c337877a0..197500b0a6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/head/OnEventHeaderItem.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/head/OnEventHeaderItem.java
@@ -200,7 +200,11 @@ public class OnEventHeaderItem extends AbstractCspHeaderItem
@Override
public int hashCode()
{
- return Objects.hash(target, event, javaScript);
+ // Not using `Objects.hash` for performance reasons
+ int result = target != null ? target.hashCode() : 0;
+ result = 31 * result + (event != null ? event.hashCode() : 0);
+ result = 31 * result + (javaScript != null ? javaScript.hashCode() : 0);
+ return result;
}
@Override
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
index 4812f1985a..7e97cab8d6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/ResourceReference.java
@@ -350,9 +350,6 @@ public abstract class ResourceReference implements IClusterable
return variation;
}
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(Object obj)
{
@@ -370,13 +367,13 @@ public abstract class ResourceReference implements IClusterable
Objects.equal(getVariation(), that.getVariation());
}
- /**
- * @see java.lang.Object#hashCode()
- */
@Override
- public int hashCode()
- {
- return Objects.hashCode(getLocale(), getStyle(), getVariation());
+ public int hashCode() {
+ // Not using `Objects.hash` for performance reasons
+ int result = locale != null ? locale.hashCode() : 0;
+ result = 31 * result + (style != null ? style.hashCode() : 0);
+ result = 31 * result + (variation != null ? variation.hashCode() : 0);
+ return result;
}
/**
@@ -441,9 +438,6 @@ public abstract class ResourceReference implements IClusterable
this.variation = variation != null ? variation.intern() : null;
}
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj)
{
@@ -463,13 +457,14 @@ public abstract class ResourceReference implements IClusterable
Objects.equal(variation, that.variation);
}
- /**
- * @see java.lang.Object#hashCode()
- */
@Override
- public int hashCode()
- {
- return Objects.hashCode(scope, name, locale, style, variation);
+ public int hashCode() {
+ int result = scope != null ? scope.hashCode() : 0;
+ result = 31 * result + (name != null ? name.hashCode() : 0);
+ result = 31 * result + (locale != null ? locale.hashCode() : 0);
+ result = 31 * result + (style != null ? style.hashCode() : 0);
+ result = 31 * result + (variation != null ? variation.hashCode() : 0);
+ return result;
}
/**