in vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSInstallState.java [332:391]
public void save(OutputStream out) throws IOException {
try (FormattingXmlStreamWriter writer = FormattingXmlStreamWriter.create(out, new OutputFormat(4, false))) {
writer.writeStartDocument();
writer.writeStartElement(TAG_REGISTRY_METADATA);
writer.writeAttribute(ATTR_PACKAGE_ID, packageId.toString());
writer.writeAttribute(ATTR_SIZE, Long.toString(size));
if (installTime != null) {
writer.writeAttribute(ATTR_INSTALLATION_TIME, Long.toString(installTime));
}
writer.writeAttribute(ATTR_FILE_PATH, filePath.toString());
writer.writeAttribute(ATTR_EXTERNAL, Boolean.toString(external));
writer.writeAttribute(ATTR_PACKAGE_STATUS, status.name().toLowerCase(Locale.ROOT));
if (filter != null && !filter.getFilterSets().isEmpty()) {
writer.writeStartElement(TAG_WORKSPACEFILTER);
for (PathFilterSet pfs : filter.getFilterSets()) {
writer.writeStartElement(TAG_FILTER);
writer.writeAttribute(ATTR_ROOT, pfs.getRoot());
for (Entry<PathFilter> pf : pfs.getEntries()) {
writer.writeStartElement(TAG_RULE);
DefaultPathFilter dpf = (DefaultPathFilter) pf.getFilter();
if (pf.isInclude()) {
writer.writeAttribute(ATTR_INCLUDE, dpf.getPattern());
} else {
writer.writeAttribute(ATTR_EXCLUDE, dpf.getPattern());
}
writer.writeEndElement();
}
writer.writeEndElement();
}
writer.writeEndElement();
}
if (dependencies != null) {
for (Dependency dependency : dependencies) {
writer.writeStartElement(TAG_DEPENDENCY);
writer.writeAttribute(ATTR_PACKAGE_ID, dependency.toString());
writer.writeEndElement();
}
}
if (subPackages != null) {
for (java.util.Map.Entry<PackageId, Option> entry : subPackages.entrySet()) {
writer.writeStartElement(TAG_SUBPACKAGE);
writer.writeAttribute(ATTR_PACKAGE_ID, entry.getKey().toString());
writer.writeAttribute(ATTR_SUBPACKAGE_HANDLING_OPTION, entry.getValue().toString());
writer.writeEndElement();
}
}
if (properties.size() > 0) {
writer.writeStartElement(TAG_PACKAGEPROPERTIES);
for (String key : properties.stringPropertyNames()) {
writer.writeAttribute(key, properties.getProperty(key));
}
writer.writeEndElement();
}
writer.writeEndElement();
writer.writeEndDocument();
} catch (XMLStreamException e) {
throw new IllegalStateException(e);
}
}