Integer existing = memberKeyMap.put(member.getUnionMemberKey(), index); if (existing != null) errorMessageBuilder.append(memberHasAlias ? "alias " : "").append(member.getUnionMemberKey()).append(" appears more than once in a union.\n"); ok = false;
@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 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); } } }
unionMap.put(unionMember.getUnionMemberKey(), data); data = unionMap;
field.setName(member.getUnionMemberKey(), errorMessageBuilder); field.setDoc(member.getDoc()); field.setDeclaredInline(member.isDeclaredInline()); field.setRecord(recordDataSchema); if (defaultValue != null && defaultValue.containsKey(member.getUnionMemberKey())) field.setDefault(defaultValue.get(member.getUnionMemberKey())); memberKeys.add(member.getUnionMemberKey());
for (UnionDataSchema.Member member : unionDataSchema.getMembers()) traverseChild(member.getUnionMemberKey(), member.getType());
DataSchema olderSchema = older.getTypeByMemberKey(newerMember.getUnionMemberKey());
private static final DataMap unionDefaultValue(UnionDataSchema.Member member, Object value) { DataMap dataMap = new DataMap(2); dataMap.put(member.getUnionMemberKey(), value); return dataMap; }