public static void write(Writer w, Patch patch) throws IOException { StringBuilder sb = new StringBuilder(); List<RevFeatureType> featureTypes = patch.getFeatureTypes(); for (RevFeatureType featureType : featureTypes) { ByteArrayOutputStream output = new ByteArrayOutputStream(); serializer.write(featureType, output); sb.append(output.toString()); sb.append('\n'); } for (FeatureInfo feature : patch.getAddedFeatures()) { String path = feature.getPath(); sb.append("A\t" + path + "\t" + feature.getFeatureType().getId() + "\n"); ByteArrayOutputStream output = new ByteArrayOutputStream(); RevFeature revFeature = RevFeatureBuilder.build(feature.getFeature()); try { serializer.write(revFeature, output); } catch (IOException e) { } sb.append(output.toString()); sb.append('\n'); } for (FeatureInfo feature : patch.getRemovedFeatures()) { String path = feature.getPath(); sb.append("R\t" + path + "\t" + feature.getFeatureType().getId() + "\n"); ByteArrayOutputStream output = new ByteArrayOutputStream(); RevFeature revFeature = RevFeatureBuilder.build(feature.getFeature()); try { serializer.write(revFeature, output); } catch (IOException e) { } sb.append(output.toString()); sb.append('\n'); } for (FeatureDiff diff : patch.getModifiedFeatures()) { sb.append( "M\t" + diff.getPath() + "\t" + diff.getOldFeatureType().getId().toString() + "\t" + diff.getNewFeatureType().getId().toString() + "\n"); sb.append(diff.asText() + "\n"); } for (FeatureTypeDiff diff : patch.getAlteredTrees()) { sb.append(diff.toString() + "\n"); } w.write(sb.toString()); w.flush(); }