in src/main/java/org/opensearch/commons/authuser/User.java [133:174]
public static User parse(XContentParser parser) throws IOException {
String name = "";
List<String> backendRoles = new ArrayList<>();
List<String> roles = new ArrayList<>();
List<String> customAttNames = new ArrayList<>();
String requestedTenant = null;
ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.currentToken(), parser);
while (parser.nextToken() != XContentParser.Token.END_OBJECT) {
String fieldName = parser.currentName();
parser.nextToken();
switch (fieldName) {
case NAME_FIELD:
name = parser.text();
break;
case BACKEND_ROLES_FIELD:
ensureExpectedToken(XContentParser.Token.START_ARRAY, parser.currentToken(), parser);
while (parser.nextToken() != XContentParser.Token.END_ARRAY) {
backendRoles.add(parser.text());
}
break;
case ROLES_FIELD:
ensureExpectedToken(XContentParser.Token.START_ARRAY, parser.currentToken(), parser);
while (parser.nextToken() != XContentParser.Token.END_ARRAY) {
roles.add(parser.text());
}
break;
case CUSTOM_ATTRIBUTE_NAMES_FIELD:
ensureExpectedToken(XContentParser.Token.START_ARRAY, parser.currentToken(), parser);
while (parser.nextToken() != XContentParser.Token.END_ARRAY) {
customAttNames.add(parser.text());
}
break;
case REQUESTED_TENANT_FIELD:
requestedTenant = parser.textOrNull();
break;
default:
break;
}
}
return new User(name, backendRoles, roles, customAttNames, requestedTenant);
}