diff options
| author | 2020-10-01 17:10:17 +0200 | |
|---|---|---|
| committer | 2020-10-01 17:10:17 +0200 | |
| commit | b8f06abafc47065f980a94c4ddf7be70cee83411 (patch) | |
| tree | 95d0b65bcda77ef7eca922635c3aea819c9e205d /enigma/src/main/java | |
| parent | Merge pull request #311 from YanisBft/package-renaming (diff) | |
| download | enigma-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')
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/utils/validation/ParameterizedMessage.java | 15 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/utils/validation/ValidationContext.java | 10 |
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; | |||
| 3 | import java.util.Arrays; | 3 | import java.util.Arrays; |
| 4 | import java.util.Objects; | 4 | import java.util.Objects; |
| 5 | 5 | ||
| 6 | public class ParameterizedMessage { | 6 | public 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 | /** |