// 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.Collections; import java.util.Map; /** * Represents an individual requested claims that's part of a complete claims request parameter * * @see https://openid.net/specs/openid-connect-core-1_0-final.html#ClaimsParameter */ public class RequestedClaim implements JsonSerializable { public String name; private RequestedClaimAdditionalInfo requestedClaimAdditionalInfo; RequestedClaim() {} public RequestedClaim(String name, RequestedClaimAdditionalInfo requestedClaimAdditionalInfo) { this.name = name; this.requestedClaimAdditionalInfo = requestedClaimAdditionalInfo; } static RequestedClaim fromJson(JsonReader jsonReader) throws IOException { RequestedClaim claim = new RequestedClaim(); return jsonReader.readObject(reader -> { if (reader.currentToken() != JsonToken.START_OBJECT) { throw new IllegalStateException("Expected start of object but was " + reader.currentToken()); } claim.name = reader.getFieldName(); RequestedClaimAdditionalInfo info = new RequestedClaimAdditionalInfo(false, null, null); claim.requestedClaimAdditionalInfo = info.fromJson(reader); return claim; }); } @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); if (name != null && requestedClaimAdditionalInfo != null) { jsonWriter.writeString(name); requestedClaimAdditionalInfo.toJson(jsonWriter); } jsonWriter.writeEndObject(); return jsonWriter; } RequestedClaimAdditionalInfo getRequestedClaimAdditionalInfo() { return requestedClaimAdditionalInfo; } void setRequestedClaimAdditionalInfo(RequestedClaimAdditionalInfo requestedClaimAdditionalInfo) { this.requestedClaimAdditionalInfo = requestedClaimAdditionalInfo; } protected Map any() { return Collections.singletonMap(name, requestedClaimAdditionalInfo); } }