summaryrefslogtreecommitdiff
path: root/enigma/src/main/java/cuchaz
diff options
context:
space:
mode:
authorGravatar 2xsaiko2020-10-01 17:10:17 +0200
committerGravatar 2xsaiko2020-10-01 17:10:17 +0200
commitb8f06abafc47065f980a94c4ddf7be70cee83411 (patch)
tree95d0b65bcda77ef7eca922635c3aea819c9e205d /enigma/src/main/java/cuchaz
parentMerge pull request #311 from YanisBft/package-renaming (diff)
downloadenigma-fork-b8f06abafc47065f980a94c4ddf7be70cee83411.tar.gz
enigma-fork-b8f06abafc47065f980a94c4ddf7be70cee83411.tar.xz
enigma-fork-b8f06abafc47065f980a94c4ddf7be70cee83411.zip
Don't save duplicate messages in validation context
Diffstat (limited to 'enigma/src/main/java/cuchaz')
-rw-r--r--enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java15
-rw-r--r--enigma/src/main/java/cuchaz/enigma/utils/validation/ValidationContext.java10
2 files changed, 15 insertions, 10 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java b/enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java
index 56b0ecc..48a5a10 100644
--- a/enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java
+++ b/enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java
@@ -3,14 +3,16 @@ package cuchaz.enigma.utils.validation;
3import java.util.Arrays; 3import java.util.Arrays;
4import java.util.Objects; 4import java.util.Objects;
5 5
6public class ParameterizedMessage { 6public final class ParameterizedMessage {
7 7
8 public final Message message; 8 public final Message message;
9 private final Object[] params; 9 private final Object[] params;
10 private final Validatable target;
10 11
11 public ParameterizedMessage(Message message, Object[] params) { 12 public ParameterizedMessage(Message message, Object[] params, Validatable target) {
12 this.message = message; 13 this.message = message;
13 this.params = params; 14 this.params = params;
15 this.target = target;
14 } 16 }
15 17
16 public String getText() { 18 public String getText() {
@@ -24,22 +26,23 @@ public class ParameterizedMessage {
24 @Override 26 @Override
25 public boolean equals(Object o) { 27 public boolean equals(Object o) {
26 if (this == o) return true; 28 if (this == o) return true;
27 if (o == null || getClass() != o.getClass()) return false; 29 if (!(o instanceof ParameterizedMessage)) return false;
28 ParameterizedMessage that = (ParameterizedMessage) o; 30 ParameterizedMessage that = (ParameterizedMessage) o;
29 return Objects.equals(message, that.message) && 31 return Objects.equals(message, that.message) &&
30 Arrays.equals(params, that.params); 32 Arrays.equals(params, that.params) &&
33 Objects.equals(target, that.target);
31 } 34 }
32 35
33 @Override 36 @Override
34 public int hashCode() { 37 public int hashCode() {
35 int result = Objects.hash(message); 38 int result = Objects.hash(message, target);
36 result = 31 * result + Arrays.hashCode(params); 39 result = 31 * result + Arrays.hashCode(params);
37 return result; 40 return result;
38 } 41 }
39 42
40 @Override 43 @Override
41 public String toString() { 44 public String toString() {
42 return String.format("ParameterizedMessage { message: %s, params: %s }", message, Arrays.toString(params)); 45 return String.format("ParameterizedMessage { message: %s, params: %s, target: %s }", message, Arrays.toString(params), target);
43 } 46 }
44 47
45} 48}
diff --git a/enigma/src/main/java/cuchaz/enigma/utils/validation/ValidationContext.java b/enigma/src/main/java/cuchaz/enigma/utils/validation/ValidationContext.java
index d38fc21..ee2b595 100644
--- a/enigma/src/main/java/cuchaz/enigma/utils/validation/ValidationContext.java
+++ b/enigma/src/main/java/cuchaz/enigma/utils/validation/ValidationContext.java
@@ -41,11 +41,13 @@ public class ValidationContext {
41 * @param args the arguments used when formatting the message text 41 * @param args the arguments used when formatting the message text
42 */ 42 */
43 public void raise(Message message, Object... args) { 43 public void raise(Message message, Object... args) {
44 ParameterizedMessage pm = new ParameterizedMessage(message, args); 44 ParameterizedMessage pm = new ParameterizedMessage(message, args, this.activeElement);
45 if (activeElement != null) { 45 if (!this.messages.contains(pm)) {
46 activeElement.addMessage(pm); 46 if (activeElement != null) {
47 activeElement.addMessage(pm);
48 }
49 messages.add(pm);
47 } 50 }
48 messages.add(pm);
49 } 51 }
50 52
51 /** 53 /**