diff --git a/scm-core/src/main/java/sonia/scm/plugin/WebElementDescriptor.java b/scm-core/src/main/java/sonia/scm/plugin/WebElementDescriptor.java index 12d6861307..e807dad70d 100644 --- a/scm-core/src/main/java/sonia/scm/plugin/WebElementDescriptor.java +++ b/scm-core/src/main/java/sonia/scm/plugin/WebElementDescriptor.java @@ -38,6 +38,7 @@ import sonia.scm.xml.XmlArrayStringAdapter; //~--- JDK imports ------------------------------------------------------------ import java.util.Arrays; +import java.util.Objects; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; @@ -46,7 +47,9 @@ import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; /** - * + * Descriptor for web elements such as filter or servlets. A web element can be registered by using the + * {@link sonia.scm.filter.WebElement} annotation. + * * @author Sebastian Sdorra * @since 2.0.0 */ @@ -136,6 +139,30 @@ public final class WebElementDescriptor return regex; } + @Override + public int hashCode() { + return Objects.hash(clazz, pattern, Arrays.hashCode(morePatterns), regex); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + final WebElementDescriptor other = (WebElementDescriptor) obj; + return Objects.equals(clazz, other.clazz) + && Objects.equals(pattern, other.pattern) + && Arrays.equals(morePatterns, other.morePatterns) + && this.regex == other.regex; + } + //~--- fields --------------------------------------------------------------- /** Field description */ diff --git a/scm-webapp/src/main/java/sonia/scm/filter/TypedWebElementDescriptor.java b/scm-webapp/src/main/java/sonia/scm/filter/TypedWebElementDescriptor.java index 8e9e576b0c..087d638f55 100644 --- a/scm-webapp/src/main/java/sonia/scm/filter/TypedWebElementDescriptor.java +++ b/scm-webapp/src/main/java/sonia/scm/filter/TypedWebElementDescriptor.java @@ -28,12 +28,15 @@ */ package sonia.scm.filter; +import java.util.Objects; + import sonia.scm.plugin.WebElementDescriptor; /** * * @author Sebastian Sdorra * @param + * @since 2.0.0 */ public final class TypedWebElementDescriptor { @@ -57,4 +60,26 @@ public final class TypedWebElementDescriptor return descriptor; } + @Override + public int hashCode() { + return Objects.hash(clazz, descriptor); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + final TypedWebElementDescriptor other = (TypedWebElementDescriptor) obj; + return Objects.equals(clazz, other.clazz) + && Objects.equals(descriptor, other.descriptor); + } + }