private void computeAddedUnionMembers(UnionDataSchema base, UnionDataSchema changed, List<String> added, List<UnionDataSchema.Member> commonMembers) { for (UnionDataSchema.Member member : changed.getMembers()) { String unionMemberKey = member.getUnionMemberKey(); boolean isMemberNewlyAdded = (base.getTypeByMemberKey(unionMemberKey) == null); if (isMemberNewlyAdded) { added.add(unionMemberKey); } else if (commonMembers != null) { commonMembers.add(member); } } }
@Override protected Object translateUnion(List<Object> path, Object value, UnionDataSchema unionDataSchema) { Object result; if (value == Data.NULL) { result = value; } else { // member type is always the 1st member of the union. UnionDataSchema.Member member = unionDataSchema.getMembers().get(0); result = unionDefaultValue(member, value); path.add(member.getUnionMemberKey()); translate(path, value, member.getType()); path.remove(path.size() - 1); } return result; }
private void writeUnion(UnionDataSchema schema) throws IOException { write("union["); for(Iterator<UnionDataSchema.Member> iter = schema.getMembers().iterator(); iter.hasNext();) { UnionDataSchema.Member member = iter.next(); writeReferenceOrInline(member.getType(), member.isDeclaredInline()); if (iter.hasNext()) { write(", "); } } write("]"); }
/** * Encode the members of an {@link UnionDataSchema}. * * @param unionDataSchema The union schema whose members needs to be encoded. * @throws IOException if there is an error while encoding. */ protected void encodeUnion(UnionDataSchema unionDataSchema) throws IOException { List<UnionDataSchema.Member> members = unionDataSchema.getMembers(); _builder.writeStartArray(); for (UnionDataSchema.Member member: members) { encodeUnionMember(member); } _builder.writeEndArray(); }
if (memberDataSchema != unionDataSchema.getMembers().get(0).getType())
if (memberDataSchema == null) for (UnionDataSchema.Member member : unionDataSchema.getMembers())
List<UnionDataSchema.Member> nonNullMembers = unionSchema.getMembers().stream() .filter(member -> member.getType().getType() != NULL_DATA_SCHEMA.getType()) .collect(Collectors.toCollection(ArrayList::new));
List<UnionDataSchema.Member> members = schema.getMembers(); if (members.isEmpty())
resultMemberTypes = unionDataSchema.getMembers().stream() .map(UnionDataSchema.Member::getType) .collect(Collectors.toList()); resultMemberTypes = unionDataSchema.getMembers().stream() .map(UnionDataSchema.Member::getType) .collect(Collectors.toList());
case UNION: UnionDataSchema unionDataSchema = (UnionDataSchema) schema; for (UnionDataSchema.Member member : unionDataSchema.getMembers())
List<RecordDataSchema.Field> fields = new ArrayList<>(); List<String> memberKeys = new ArrayList<>(); for (UnionDataSchema.Member member: unionDataSchema.getMembers())
for(UnionDataSchema.Member member : unionSchema.getMembers())
List<UnionDataSchema.Member> commonMembers = new CheckerArrayList<>(newer.getMembers().size()); List<String> newerAdded = new CheckerArrayList<String>(); List<String> olderAdded = new CheckerArrayList<String>();
for (UnionDataSchema.Member member : unionSchema.getMembers())
case UNION: final UnionDataSchema unionSchema = (UnionDataSchema) derefSchema; final List<UnionDataSchema.Member> members = removeAlreadyTraversedSchemasFromUnionMemberList(parentSchemas, unionSchema.getMembers()); final int unionIndex = _random.nextInt(members.size()); final UnionDataSchema.Member unionMember = members.get(unionIndex);