aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java')
-rw-r--r--subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java16
1 files changed, 11 insertions, 5 deletions
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java
index d0ae3c12..5cecc35b 100644
--- a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java
+++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java
@@ -6,6 +6,7 @@
6package tools.refinery.store.query.term; 6package tools.refinery.store.query.term;
7 7
8import tools.refinery.store.query.equality.LiteralEqualityHelper; 8import tools.refinery.store.query.equality.LiteralEqualityHelper;
9import tools.refinery.store.query.equality.LiteralHashCodeHelper;
9 10
10import java.util.Objects; 11import java.util.Objects;
11 12
@@ -17,13 +18,18 @@ public abstract class AbstractTerm<T> implements Term<T> {
17 } 18 }
18 19
19 @Override 20 @Override
21 public Class<T> getType() {
22 return type;
23 }
24
25 @Override
20 public boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other) { 26 public boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other) {
21 return getClass().equals(other.getClass()) && type.equals(other.getType()); 27 return other != null && getClass() == other.getClass() && type.equals(other.getType());
22 } 28 }
23 29
24 @Override 30 @Override
25 public Class<T> getType() { 31 public int hashCodeWithSubstitution(LiteralHashCodeHelper helper) {
26 return type; 32 return Objects.hash(getClass(), type);
27 } 33 }
28 34
29 @Override 35 @Override
@@ -31,11 +37,11 @@ public abstract class AbstractTerm<T> implements Term<T> {
31 if (this == o) return true; 37 if (this == o) return true;
32 if (o == null || getClass() != o.getClass()) return false; 38 if (o == null || getClass() != o.getClass()) return false;
33 AbstractTerm<?> that = (AbstractTerm<?>) o; 39 AbstractTerm<?> that = (AbstractTerm<?>) o;
34 return type.equals(that.type); 40 return equalsWithSubstitution(LiteralEqualityHelper.DEFAULT, that);
35 } 41 }
36 42
37 @Override 43 @Override
38 public int hashCode() { 44 public int hashCode() {
39 return Objects.hash(getClass(), type); 45 return hashCodeWithSubstitution(LiteralHashCodeHelper.DEFAULT);
40 } 46 }
41} 47}