Skip to content

Commit 886051f

Browse files
committed
Return Violation messages from Procedural Constraints
1 parent a896a13 commit 886051f

3 files changed

Lines changed: 17 additions & 5 deletions

File tree

constraints/src/main/java/gov/nasa/jpl/aerie/constraints/json/ConstraintParsers.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,9 +313,12 @@ static JsonParser<KeepTrueSegment> keepTrueSegmentP(JsonParser<Expression<Window
313313
productP
314314
.field("windows", listP(intervalP))
315315
.field("activityInstanceIds", listP(longP))
316+
.optionalField("message", stringP)
316317
.map(
317-
untuple(Violation::new),
318-
$ -> tuple($.windows(), $.activityInstanceIds())
318+
untuple((windows, aids, message) -> message
319+
.map(s -> new Violation(windows, aids, s))
320+
.orElseGet(() -> new Violation(windows, aids))),
321+
$ -> tuple($.windows(), $.activityInstanceIds(), $.message())
319322
);
320323

321324
public static final JsonParser<EDSLConstraintResult> edslConstraintResultP =

constraints/src/main/java/gov/nasa/jpl/aerie/constraints/model/Violation.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,15 @@
77

88
import java.util.ArrayList;
99
import java.util.List;
10+
import java.util.Optional;
1011

11-
public record Violation(List<Interval> windows, ArrayList<Long> activityInstanceIds) {
12+
public record Violation(List<Interval> windows, ArrayList<Long> activityInstanceIds, Optional<String> message) {
1213
public Violation(List<Interval> windows, List<Long> activityInstanceIds) {
13-
this(windows, new ArrayList<>(activityInstanceIds));
14+
this(windows, new ArrayList<>(activityInstanceIds), Optional.empty());
15+
}
16+
17+
public Violation(List<Interval> windows, List<Long> activityInstanceIds, String message) {
18+
this(windows, new ArrayList<>(activityInstanceIds), Optional.ofNullable(message));
1419
}
1520

1621
public static List<Violation> fromProceduralViolations(Violations violations, gov.nasa.jpl.aerie.merlin.driver.SimulationResults simResults) {
@@ -42,7 +47,10 @@ public static List<Violation> fromProceduralViolations(Violations violations, go
4247
}
4348
}
4449

45-
constraintViolations.add(new Violation(List.of(Interval.fromProceduralInterval(v.getInterval())), activityInstanceIds));
50+
constraintViolations.add(new Violation(
51+
List.of(Interval.fromProceduralInterval(v.getInterval())),
52+
activityInstanceIds,
53+
v.getMessage()));
4654
}
4755
return constraintViolations;
4856
}

deployment/hasura/metadata/actions.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ type ConstraintResult {
343343
}
344344

345345
type ConstraintViolation {
346+
message: String,
346347
windows: [Interval!]!,
347348
activityInstanceIds: [Int!]!
348349
}

0 commit comments

Comments
 (0)