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) { TypeAssignmentContext memberType = memberDecl.member; DataSchema dataSchema = toDataSchema(memberType); if (dataSchema != null) { UnionDataSchema.Member unionMember = new UnionDataSchema.Member(dataSchema); unionMember.setDeclaredInline(isDeclaredInline(memberDecl.member)); unionMembers.add(unionMember); } } schema.setMembers(unionMembers, errorMessageBuilder()); return schema; }
/** * Parse a {@link DataList} to obtain a {@link DataSchema}. * * @param list to create {@link DataSchema} from. * @return a {@link UnionDataSchema} obtained from {@link DataList}. */ protected UnionDataSchema dataListToDataSchema(DataList list) { // Union UnionDataSchema schema = new UnionDataSchema(); List<Member> members = parseUnionMembers(schema, list); schema.setMembers(members, startCalleeMessageBuilder()); appendCalleeMessage(list); return schema; }
unionSchema.setMembers(nonNullMembers, errorMessages);