Skip to content

Commit d681c35

Browse files
Merge pull request #180 from SpineEventEngine/remove-nested-violations
Remove nested violations
2 parents 6049654 + ab9112a commit d681c35

File tree

25 files changed

+111
-232
lines changed

25 files changed

+111
-232
lines changed

buildSrc/src/main/kotlin/io/spine/dependency/local/Base.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ package io.spine.dependency.local
3434
@Suppress("ConstPropertyName")
3535
object Base {
3636
const val version = "2.0.0-SNAPSHOT.236"
37-
const val versionForBuildScript = "2.0.0-SNAPSHOT.232"
37+
const val versionForBuildScript = "2.0.0-SNAPSHOT.236"
3838
const val group = Spine.group
3939
const val artifact = "spine-base"
4040
const val lib = "$group:$artifact:$version"

dependencies.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22

3-
# Dependencies of `io.spine.validation:spine-validation-java:2.0.0-SNAPSHOT.186`
3+
# Dependencies of `io.spine.validation:spine-validation-java:2.0.0-SNAPSHOT.187`
44

55
## Runtime
66
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.15.3.
@@ -848,12 +848,12 @@
848848

849849
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
850850

851-
This report was generated on **Wed Jan 08 17:59:43 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
851+
This report was generated on **Thu Jan 09 10:27:12 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
852852

853853

854854

855855

856-
# Dependencies of `io.spine.validation:spine-validation-java-bundle:2.0.0-SNAPSHOT.186`
856+
# Dependencies of `io.spine.validation:spine-validation-java-bundle:2.0.0-SNAPSHOT.187`
857857

858858
## Runtime
859859
1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 24.0.1.
@@ -1448,12 +1448,12 @@ This report was generated on **Wed Jan 08 17:59:43 WET 2025** using [Gradle-Lice
14481448

14491449
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
14501450

1451-
This report was generated on **Wed Jan 08 17:59:43 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
1451+
This report was generated on **Thu Jan 09 10:27:13 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
14521452

14531453

14541454

14551455

1456-
# Dependencies of `io.spine.validation:spine-validation-java-runtime:2.0.0-SNAPSHOT.186`
1456+
# Dependencies of `io.spine.validation:spine-validation-java-runtime:2.0.0-SNAPSHOT.187`
14571457

14581458
## Runtime
14591459
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -2110,12 +2110,12 @@ This report was generated on **Wed Jan 08 17:59:43 WET 2025** using [Gradle-Lice
21102110

21112111
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
21122112

2113-
This report was generated on **Wed Jan 08 17:59:43 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
2113+
This report was generated on **Thu Jan 09 10:27:13 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
21142114

21152115

21162116

21172117

2118-
# Dependencies of `io.spine.validation:spine-validation-java-tests:2.0.0-SNAPSHOT.186`
2118+
# Dependencies of `io.spine.validation:spine-validation-java-tests:2.0.0-SNAPSHOT.187`
21192119

21202120
## Runtime
21212121
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.15.3.
@@ -3031,12 +3031,12 @@ This report was generated on **Wed Jan 08 17:59:43 WET 2025** using [Gradle-Lice
30313031

30323032
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
30333033

3034-
This report was generated on **Wed Jan 08 17:59:44 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
3034+
This report was generated on **Thu Jan 09 10:27:13 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
30353035

30363036

30373037

30383038

3039-
# Dependencies of `io.spine.validation:spine-validation-model:2.0.0-SNAPSHOT.186`
3039+
# Dependencies of `io.spine.validation:spine-validation-model:2.0.0-SNAPSHOT.187`
30403040

30413041
## Runtime
30423042
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.15.3.
@@ -3895,12 +3895,12 @@ This report was generated on **Wed Jan 08 17:59:44 WET 2025** using [Gradle-Lice
38953895

38963896
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
38973897

3898-
This report was generated on **Wed Jan 08 17:59:44 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
3898+
This report was generated on **Thu Jan 09 10:27:13 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
38993899

39003900

39013901

39023902

3903-
# Dependencies of `io.spine.validation:spine-validation-proto:2.0.0-SNAPSHOT.186`
3903+
# Dependencies of `io.spine.validation:spine-validation-proto:2.0.0-SNAPSHOT.187`
39043904

39053905
## Runtime
39063906
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.15.3.
@@ -4785,12 +4785,12 @@ This report was generated on **Wed Jan 08 17:59:44 WET 2025** using [Gradle-Lice
47854785

47864786
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
47874787

4788-
This report was generated on **Wed Jan 08 17:59:44 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
4788+
This report was generated on **Thu Jan 09 10:27:14 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
47894789

47904790

47914791

47924792

4793-
# Dependencies of `io.spine.validation:spine-validation-consumer:2.0.0-SNAPSHOT.186`
4793+
# Dependencies of `io.spine.validation:spine-validation-consumer:2.0.0-SNAPSHOT.187`
47944794

47954795
## Runtime
47964796
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.15.3.
@@ -5657,12 +5657,12 @@ This report was generated on **Wed Jan 08 17:59:44 WET 2025** using [Gradle-Lice
56575657

56585658
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
56595659

5660-
This report was generated on **Wed Jan 08 17:59:44 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
5660+
This report was generated on **Thu Jan 09 10:27:14 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
56615661

56625662

56635663

56645664

5665-
# Dependencies of `io.spine.validation:spine-validation-consumer-dependency:2.0.0-SNAPSHOT.186`
5665+
# Dependencies of `io.spine.validation:spine-validation-consumer-dependency:2.0.0-SNAPSHOT.187`
56665666

56675667
## Runtime
56685668
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -6410,12 +6410,12 @@ This report was generated on **Wed Jan 08 17:59:44 WET 2025** using [Gradle-Lice
64106410

64116411
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
64126412

6413-
This report was generated on **Wed Jan 08 17:59:45 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
6413+
This report was generated on **Thu Jan 09 10:27:14 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
64146414

64156415

64166416

64176417

6418-
# Dependencies of `io.spine.validation:spine-validation-extensions:2.0.0-SNAPSHOT.186`
6418+
# Dependencies of `io.spine.validation:spine-validation-extensions:2.0.0-SNAPSHOT.187`
64196419

64206420
## Runtime
64216421
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.15.3.
@@ -7308,12 +7308,12 @@ This report was generated on **Wed Jan 08 17:59:45 WET 2025** using [Gradle-Lice
73087308

73097309
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
73107310

7311-
This report was generated on **Wed Jan 08 17:59:45 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
7311+
This report was generated on **Thu Jan 09 10:27:14 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
73127312

73137313

73147314

73157315

7316-
# Dependencies of `io.spine.validation:spine-validation-runtime:2.0.0-SNAPSHOT.186`
7316+
# Dependencies of `io.spine.validation:spine-validation-runtime:2.0.0-SNAPSHOT.187`
73177317

73187318
## Runtime
73197319
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -8064,12 +8064,12 @@ This report was generated on **Wed Jan 08 17:59:45 WET 2025** using [Gradle-Lice
80648064

80658065
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
80668066

8067-
This report was generated on **Wed Jan 08 17:59:45 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
8067+
This report was generated on **Thu Jan 09 10:27:14 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
80688068

80698069

80708070

80718071

8072-
# Dependencies of `io.spine.validation:spine-validation-validating:2.0.0-SNAPSHOT.186`
8072+
# Dependencies of `io.spine.validation:spine-validation-validating:2.0.0-SNAPSHOT.187`
80738073

80748074
## Runtime
80758075
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -8824,12 +8824,12 @@ This report was generated on **Wed Jan 08 17:59:45 WET 2025** using [Gradle-Lice
88248824

88258825
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
88268826

8827-
This report was generated on **Wed Jan 08 17:59:45 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
8827+
This report was generated on **Thu Jan 09 10:27:14 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
88288828

88298829

88308830

88318831

8832-
# Dependencies of `io.spine.validation:spine-validation-vanilla:2.0.0-SNAPSHOT.186`
8832+
# Dependencies of `io.spine.validation:spine-validation-vanilla:2.0.0-SNAPSHOT.187`
88338833

88348834
## Runtime
88358835
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -9575,12 +9575,12 @@ This report was generated on **Wed Jan 08 17:59:45 WET 2025** using [Gradle-Lice
95759575

95769576
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
95779577

9578-
This report was generated on **Wed Jan 08 17:59:46 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
9578+
This report was generated on **Thu Jan 09 10:27:15 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
95799579

95809580

95819581

95829582

9583-
# Dependencies of `io.spine.validation:spine-validation-configuration:2.0.0-SNAPSHOT.186`
9583+
# Dependencies of `io.spine.validation:spine-validation-configuration:2.0.0-SNAPSHOT.187`
95849584

95859585
## Runtime
95869586
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.15.3.
@@ -10449,12 +10449,12 @@ This report was generated on **Wed Jan 08 17:59:46 WET 2025** using [Gradle-Lice
1044910449

1045010450
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
1045110451

10452-
This report was generated on **Wed Jan 08 17:59:46 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
10452+
This report was generated on **Thu Jan 09 10:27:15 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
1045310453

1045410454

1045510455

1045610456

10457-
# Dependencies of `io.spine.validation:spine-validation-context:2.0.0-SNAPSHOT.186`
10457+
# Dependencies of `io.spine.validation:spine-validation-context:2.0.0-SNAPSHOT.187`
1045810458

1045910459
## Runtime
1046010460
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.15.3.
@@ -11323,4 +11323,4 @@ This report was generated on **Wed Jan 08 17:59:46 WET 2025** using [Gradle-Lice
1132311323

1132411324
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
1132511325

11326-
This report was generated on **Wed Jan 08 17:59:46 WET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
11326+
This report was generated on **Thu Jan 09 10:27:15 CET 2025** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).

java-runtime/src/main/java/io/spine/validate/diags/ViolationText.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,27 +75,17 @@ public static String ofAll(Collection<ConstraintViolation> violations) {
7575

7676
@Override
7777
public String toString() {
78-
var builder = buildMessage();
79-
for (var violation : this.violation.getViolationList()) {
80-
builder.append(lineSeparator());
81-
var nested = of(violation);
82-
builder.append(nested);
83-
}
84-
return builder.toString();
85-
}
86-
87-
private StringBuilder buildMessage() {
8878
var typeName = violation.getTypeName();
8979
var path = violation.getFieldPath();
9080
var fieldPath = path.getFieldNameCount() == 0
91-
? ""
92-
: Field.withPath(path).toString();
81+
? ""
82+
: Field.withPath(path).toString();
9383
var formattedMessage = format(violation.getMessage());
9484
var result = new StringBuilder();
9585
appendPrefix(result, typeName);
9686
appendPrefix(result, fieldPath);
9787
result.append(formattedMessage);
98-
return result;
88+
return result.toString();
9989
}
10090

10191
private static void appendPrefix(StringBuilder target, String prefix) {

java-runtime/src/main/kotlin/io/spine/validate/MessageValidator.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,7 @@ internal class MessageValidator private constructor(private val validatedMessage
161161
.map { msg -> childViolations(fieldValue.context(), msg) }
162162
.flatMap { violations -> violations.stream() }
163163
.collect(toList())
164-
if (childViolations.isNotEmpty()) {
165-
val parentViolation = violation(constraint, fieldValue).copy {
166-
violation += childViolations
167-
}
168-
violations.add(parentViolation)
169-
}
164+
violations.addAll(childViolations)
170165
}
171166
}
172167

java-runtime/src/main/proto/spine/validate/validation_error.proto

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,7 @@ message ConstraintViolation {
9898
//
9999
google.protobuf.Any field_value = 4;
100100

101-
// If the field type is message (not scalar type or enum), its fields may violate
102-
// one or more validation constraints.
103-
//
104-
// This field is not populated, if fields of the corresponding message type do not have
105-
// validation constraints, and simply non-default value was required in the parent message.
106-
//
107-
repeated ConstraintViolation violation = 5;
101+
// Deprecated: all violations are top-level now. Their nesting is reflected in the value
102+
// of `field_path` field.
103+
repeated ConstraintViolation violation = 5 [deprecated = true];
108104
}

java-tests/consumer-dependency/src/main/proto/spine/validation/test/weather.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ option java_multiple_files = true;
1111

1212
message Cloud {
1313

14-
int32 cubic_meters = 1 [(min).value = "1", (min).exclusive = true];
14+
int32 cubic_meters = 1 [(min) = { value: "1", exclusive: true, error_msg: "Bad cloud!" }];
1515
}

java-tests/consumer/src/main/proto/test/blizzard.proto

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import "google/protobuf/any.proto";
1313
import "spine/validation/test/weather.proto";
1414

1515
message Snowflake {
16-
int32 edges = 1 [(min).value = "3"];
17-
int32 vertices = 2 [(min).value = "3"];
16+
int32 edges = 1 [(min) = { value: "3", error_msg: "Bad snow flake!" }];
17+
int32 vertices = 2 [(min) = { value: "3", error_msg: "Bad snow flake!" }];
1818
}
1919

2020
message Blizzard {
@@ -24,16 +24,12 @@ message Blizzard {
2424

2525
message RainDrop {
2626

27-
int32 mass_in_grams = 1 [(min) = { value: "1", exclusive: false}];
27+
int32 mass_in_grams = 1 [(min) = { value: "1" error_msg: "Bad rain drop!" }];
2828
}
2929

3030
message Rain {
3131

32-
repeated RainDrop rain_drop = 1 [
33-
(required) = true,
34-
(validate) = true,
35-
(if_invalid).error_msg = "Bad rain drop!"
36-
];
32+
repeated RainDrop rain_drop = 1 [(required) = true, (validate) = true];
3733
}
3834

3935
message Region {

0 commit comments

Comments
 (0)