Search in sources :

Example 1 with UnionMemberAliasContext

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;
}
Also used : IdentityHashMap(java.util.IdentityHashMap) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) UnionMemberAliasContext(com.linkedin.data.grammar.PdlParser.UnionMemberAliasContext) UnionDataSchema(com.linkedin.data.schema.UnionDataSchema) EnumDataSchema(com.linkedin.data.schema.EnumDataSchema) TyperefDataSchema(com.linkedin.data.schema.TyperefDataSchema) RecordDataSchema(com.linkedin.data.schema.RecordDataSchema) ArrayDataSchema(com.linkedin.data.schema.ArrayDataSchema) FixedDataSchema(com.linkedin.data.schema.FixedDataSchema) DataSchema(com.linkedin.data.schema.DataSchema) MapDataSchema(com.linkedin.data.schema.MapDataSchema) ComplexDataSchema(com.linkedin.data.schema.ComplexDataSchema) NamedDataSchema(com.linkedin.data.schema.NamedDataSchema) UnionDataSchema(com.linkedin.data.schema.UnionDataSchema) PropDeclarationContext(com.linkedin.data.grammar.PdlParser.PropDeclarationContext) TypeAssignmentContext(com.linkedin.data.grammar.PdlParser.TypeAssignmentContext) UnionMemberDeclarationContext(com.linkedin.data.grammar.PdlParser.UnionMemberDeclarationContext)

Aggregations

PropDeclarationContext (com.linkedin.data.grammar.PdlParser.PropDeclarationContext)1 TypeAssignmentContext (com.linkedin.data.grammar.PdlParser.TypeAssignmentContext)1 UnionMemberAliasContext (com.linkedin.data.grammar.PdlParser.UnionMemberAliasContext)1 UnionMemberDeclarationContext (com.linkedin.data.grammar.PdlParser.UnionMemberDeclarationContext)1 ArrayDataSchema (com.linkedin.data.schema.ArrayDataSchema)1 ComplexDataSchema (com.linkedin.data.schema.ComplexDataSchema)1 DataSchema (com.linkedin.data.schema.DataSchema)1 EnumDataSchema (com.linkedin.data.schema.EnumDataSchema)1 FixedDataSchema (com.linkedin.data.schema.FixedDataSchema)1 MapDataSchema (com.linkedin.data.schema.MapDataSchema)1 NamedDataSchema (com.linkedin.data.schema.NamedDataSchema)1 RecordDataSchema (com.linkedin.data.schema.RecordDataSchema)1 TyperefDataSchema (com.linkedin.data.schema.TyperefDataSchema)1 UnionDataSchema (com.linkedin.data.schema.UnionDataSchema)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 IdentityHashMap (java.util.IdentityHashMap)1