diff options
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.java | 16 |
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 @@ | |||
6 | package tools.refinery.store.query.term; | 6 | package tools.refinery.store.query.term; |
7 | 7 | ||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | 8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; |
9 | import tools.refinery.store.query.equality.LiteralHashCodeHelper; | ||
9 | 10 | ||
10 | import java.util.Objects; | 11 | import 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 | } |