@Override public void write(DataOutput out) throws IOException { DirectInputGroup groupCopy = group; WritableUtils.writeString(out, groupCopy.containerPath); WritableUtils.writeString(out, groupCopy.dataType.getName()); WritableUtils.writeString(out, groupCopy.formatClass.getName()); if (groupCopy.filterClass == null) { out.writeBoolean(false); } else { out.writeBoolean(true); WritableUtils.writeString(out, groupCopy.filterClass.getName()); } DirectInputFragment fragmentCopy = fragment; WritableUtils.writeString(out, fragmentCopy.getPath()); WritableUtils.writeVLong(out, fragmentCopy.getOffset()); WritableUtils.writeVLong(out, fragmentCopy.getSize()); List<String> ownerNodeNames = fragmentCopy.getOwnerNodeNames(); WritableUtils.writeStringArray(out, ownerNodeNames.toArray(new String[ownerNodeNames.size()])); Map<String, String> attributes = fragmentCopy.getAttributes(); WritableUtils.writeVInt(out, attributes.size()); for (Map.Entry<String, String> entry : attributes.entrySet()) { WritableUtils.writeString(out, entry.getKey()); WritableUtils.writeString(out, entry.getValue()); } }