private void generateSource() {
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
XMLSerializer ser = new XMLSerializer(out, new OutputFormat("xml", "UTF-8", true));
ser.startDocument();
AttributesImpl attrs = new AttributesImpl();
attrs.addAttribute(null, null, ATTR_VERSION, "CDATA", String.valueOf(version));
ser.startElement(null, null, "workspaceFilter", attrs);
for (PathFilterSet set: filterSets) {
attrs = new AttributesImpl();
attrs.addAttribute(null, null, "root", "CDATA", set.getRoot());
if (set.getImportMode() != ImportMode.REPLACE) {
attrs.addAttribute(null, null, "mode", "CDATA", set.getImportMode().name().toLowerCase());
}
ser.startElement(null, null, "filter", attrs);
for (PathFilterSet.Entry<PathFilter> entry: set.getEntries()) {
// only handle path filters
PathFilter filter = entry.getFilter();
if (filter instanceof DefaultPathFilter) {
attrs = new AttributesImpl();
attrs.addAttribute(null, null, "pattern", "CDATA",
((DefaultPathFilter) filter).getPattern());
if (entry.isInclude()) {
ser.startElement(null, null, "include", attrs);
ser.endElement("include");
} else {
ser.startElement(null, null, "exclude", attrs);
ser.endElement("exclude");
}
} else {
throw new IllegalArgumentException("Can only export default path filters, yet.");
}
}
ser.endElement("filter");
}
ser.endElement("workspaceFilter");
ser.endDocument();
source = out.toByteArray();
} catch (SAXException e) {
throw new IllegalStateException(e);
}
}