-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathAuthorizationResponse.java
More file actions
79 lines (73 loc) · 2.77 KB
/
AuthorizationResponse.java
File metadata and controls
79 lines (73 loc) · 2.77 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
73
74
75
76
77
78
79
/*
* Copyright Cedar Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cedarpolicy.model;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* The result of processing an AuthorizationRequest.
*/
public final class AuthorizationResponse {
/** 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<AuthorizationSuccessResponse> 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 AuthorizationResponse(
@JsonProperty("type") SuccessOrFailure type,
@JsonProperty("response") Optional<AuthorizationSuccessResponse> 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.toString();
if (type == SuccessOrFailure.Success) {
return "SUCCESS: " + success.get().toString() + warningsString;
} else {
return "FAILURE: " + errors.get().toString() + warningsString;
}
}
public enum SuccessOrFailure {
@JsonProperty("success")
Success,
@JsonProperty("failure")
Failure,
}
}