-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathPartialAuthorizationResponse.java
More file actions
72 lines (66 loc) · 2.29 KB
/
PartialAuthorizationResponse.java
File metadata and controls
72 lines (66 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.cedarpolicy.model;
import com.cedarpolicy.Experimental;
import com.cedarpolicy.ExperimentalFeature;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Experimental(ExperimentalFeature.PARTIAL_EVALUATION)
public class PartialAuthorizationResponse {
/**
* Is this a success or a failure response
*/
@JsonProperty("type")
public final SuccessOrFailure type;
/**
* This will be present if and only if `type` is `Success`.
*/
@JsonProperty("response")
public final Optional<PartialAuthorizationSuccessResponse> success;
/**
* This will be present if and only if `type` is `Failure`.
*/
@JsonProperty("errors")
public final Optional<List<DetailedError>> errors;
/**
* Warnings can be produced regardless of whether we have a `Success` or `Failure`.
*/
@JsonProperty("warnings")
public final List<String> warnings;
/**
* If `type` is `Success`, `success` should be present and `errors` empty.
* If `type` is `Failure`, `errors` should be present and `success` empty.
*/
@JsonCreator
public PartialAuthorizationResponse(
@JsonProperty("type") SuccessOrFailure type,
@JsonProperty("response") Optional<PartialAuthorizationSuccessResponse> success,
@JsonProperty("errors") Optional<ArrayList<DetailedError>> errors,
@JsonProperty("warnings") ArrayList<String> warnings
) {
this.type = type;
this.success = success;
this.errors = errors.map((list) -> List.copyOf(list));
if (warnings == null) {
this.warnings = List.of(); // empty
} else {
this.warnings = List.copyOf(warnings);
}
}
@Override
public String toString() {
final String warningsString = warnings.isEmpty() ? "" : "\nwith warnings: " + warnings;
if (type == SuccessOrFailure.Success) {
return "SUCCESS: " + success.get() + warningsString;
} else {
return "FAILURE: " + errors.get() + warningsString;
}
}
public enum SuccessOrFailure {
@JsonProperty("residuals")
Success,
@JsonProperty("failure")
Failure,
}
}