use of com.linkedin.data.grammar.PdlParser.UnionMemberAliasContext in project rest.li by linkedin.
the class PdlSchemaParser method parseUnion.
private UnionDataSchema parseUnion(UnionDeclarationContext union, boolean withinTypref) throws ParseException {
UnionDataSchema schema = new UnionDataSchema();
List<UnionMemberDeclarationContext> members = union.typeParams.members;
List<UnionDataSchema.Member> unionMembers = new ArrayList<>(members.size());
for (UnionMemberDeclarationContext memberDecl : members) {
// Get union member type assignment
TypeAssignmentContext memberType = memberDecl.member;
DataSchema dataSchema = toDataSchema(memberType);
if (dataSchema != null) {
UnionDataSchema.Member unionMember = new UnionDataSchema.Member(dataSchema);
recordLocation(unionMember, memberDecl);
unionMember.setDeclaredInline(isDeclaredInline(memberDecl.member));
// Get union member alias, if any
UnionMemberAliasContext alias = memberDecl.unionMemberAlias();
if (alias != null) {
// Set union member alias
boolean isAliasValid = unionMember.setAlias(alias.name.value, startCalleeMessageBuilder());
if (!isAliasValid) {
appendCalleeMessage(unionMember);
}
// Set union member docs and properties
if (alias.doc != null) {
unionMember.setDoc(alias.doc.value);
}
final Map<String, Object> properties = new HashMap<>();
for (PropDeclarationContext prop : alias.props) {
addPropertiesAtPath(properties, prop);
}
unionMember.setProperties(properties);
}
unionMembers.add(unionMember);
}
}
schema.setMembers(unionMembers, errorMessageBuilder());
return schema;
}
Aggregations