// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.microsoft.aad.msal4j;
import com.azure.json.JsonReader;
import com.azure.json.JsonSerializable;
import com.azure.json.JsonToken;
import com.azure.json.JsonWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Represents the additional information that can be sent to an authorization server for a request claim in the claim request parameter
*
* @see https://openid.net/specs/openid-connect-core-1_0-final.html#ClaimsParameter
*/
public class RequestedClaimAdditionalInfo implements JsonSerializable {
private boolean essential;
private String value;
private List values;
public RequestedClaimAdditionalInfo(boolean essential, String value, List values) {
this.essential = essential;
this.value = value;
this.values = values;
}
public RequestedClaimAdditionalInfo fromJson(JsonReader jsonReader) throws IOException {
if (jsonReader.currentToken() != JsonToken.START_OBJECT) {
jsonReader.nextToken();
if (jsonReader.currentToken() != JsonToken.START_OBJECT) {
throw new IllegalStateException("Expected start of object but was " + jsonReader.currentToken());
}
}
while (jsonReader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = jsonReader.getFieldName();
jsonReader.nextToken();
switch (fieldName) {
case "essential":
essential = jsonReader.getBoolean();
break;
case "value":
value = jsonReader.getString();
break;
case "values":
values = new ArrayList<>();
while (jsonReader.nextToken() != JsonToken.END_ARRAY) {
values.add(jsonReader.getString());
}
break;
default:
jsonReader.skipChildren();
break;
}
}
return this;
}
@Override
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStartObject();
if (essential) {
jsonWriter.writeBooleanField("essential", essential);
}
if (value != null) {
jsonWriter.writeStringField("value", value);
}
if (values != null && !values.isEmpty()) {
jsonWriter.writeStartArray("values");
for (String val : values) {
jsonWriter.writeString(val);
}
jsonWriter.writeEndArray();
}
jsonWriter.writeEndObject();
return jsonWriter;
}
public boolean isEssential() {
return this.essential;
}
public String getValue() {
return this.value;
}
public List getValues() {
return this.values;
}
public void setEssential(boolean essential) {
this.essential = essential;
}
public void setValue(String value) {
this.value = value;
}
public void setValues(List values) {
this.values = values;
}
}