private void saveSubscribers() {
if ( filename != null ) {
synchronized ( subscribers ) {
try {
FileOutputStream outputStream = new FileOutputStream(filename);
XMLOutputStreamWriter writer = new XMLOutputStreamWriter(outputStream);
writer.writeXMLDeclaration();
writer.writeStartTag(XMLWriter.createStartTag(E_SUBSCRIPTIONS));
for ( Iterator i = subscribers.iterator(); i.hasNext(); ) {
Subscriber subscriber = (Subscriber)i.next();
writer.writeStartTag(XMLWriter.createStartTag(E_SUBSCRIPTION, new String[][] {
{ A_ID, String.valueOf(subscriber.getId()) } }));
writer.writeElementWithPCData(XMLWriter.createStartTag(E_URI), XMLEncode.xmlEncodeText(subscriber.getUri()), XMLWriter.createEndTag(E_URI));
writer.writeElementWithPCData(XMLWriter.createStartTag(E_DEPTH), String.valueOf(subscriber.getDepth()), XMLWriter.createEndTag(E_DEPTH));
writer.writeElementWithPCData(XMLWriter.createStartTag(E_CALLBACK), XMLEncode.xmlEncodeText(subscriber.getCallback()), XMLWriter.createEndTag(E_CALLBACK));
writer.writeElementWithPCData(XMLWriter.createStartTag(E_NOTIFICATION_TYPE), XMLEncode.xmlEncodeText(subscriber.getNotificationType()), XMLWriter.createEndTag(E_NOTIFICATION_TYPE));
writer.writeElementWithPCData(XMLWriter.createStartTag(E_NOTIFICATION_DELAY), String.valueOf(subscriber.getNotificationDelay()), XMLWriter.createEndTag(E_NOTIFICATION_DELAY));
writer.writeElementWithPCData(XMLWriter.createStartTag(E_SUBSCRIPTION_END), String.valueOf(subscriber.getSubscriptionEnd()), XMLWriter.createEndTag(E_SUBSCRIPTION_END));
writer.writeEndTag(XMLWriter.createEndTag(E_SUBSCRIPTION));
}
writer.writeEndTag(XMLWriter.createEndTag(E_SUBSCRIPTIONS));
outputStream.close();
} catch ( Exception e) {
Domain.log(e);
}
}