{
throw new NullPointerException();
}
final SequenceDataFactory sequenceDataFactory = (SequenceDataFactory) dataFactory;
final String fileName = BundleUtilities.getUniqueName(bundle, state.getFileName(),
"datasources/sequence-ds{0}.xml");
if (fileName == null)
{
throw new IOException("Unable to generate unique name for Sequence-Data-Source");
}
try
{
final OutputStream outputStream = bundle.createEntry(fileName, "text/xml");
final DefaultTagDescription tagDescription = new DefaultTagDescription();
tagDescription.setNamespaceHasCData(SequenceDataFactoryModule.NAMESPACE, false);
tagDescription.setElementHasCData(SequenceDataFactoryModule.NAMESPACE, "property", true);
final XmlWriter xmlWriter = new XmlWriter
(new OutputStreamWriter(outputStream, "UTF-8"), tagDescription, " ", "\n");
final AttributeList rootAttrs = new AttributeList();
rootAttrs.addNamespaceDeclaration("data", SequenceDataFactoryModule.NAMESPACE);
xmlWriter.writeTag(SequenceDataFactoryModule.NAMESPACE, "sequence-datasource", rootAttrs, XmlWriterSupport.OPEN);
final String[] tables = sequenceDataFactory.getQueryNames();
for (int i = 0; i < tables.length; i++)
{
final String queryName = tables[i];
final Sequence sequence = sequenceDataFactory.getSequence(queryName);
final AttributeList sequenceAttributes = new AttributeList();
sequenceAttributes.setAttribute(SequenceDataFactoryModule.NAMESPACE, "name", queryName);
sequenceAttributes.setAttribute(SequenceDataFactoryModule.NAMESPACE, "class", sequence.getClass().getName());
xmlWriter.writeTag(SequenceDataFactoryModule.NAMESPACE, "sequence", sequenceAttributes, XmlWriterSupport.OPEN);