Subscribers are not persistent.
I have looked at the slide code and I have corrected it :
In the file NotificationTrigger.java, I have added : writer.close();
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();
System.out.println("OK"+ subscriber.getUri());
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_TY
PE), XMLEncode.xmlEncodeText(subscriber.getNotificationType()),
XMLWriter.createEndTag(E_NOTIFICATION_TYPE));
writer.writeElementWithPCData(XMLWriter.createStartTag(E_NOTIFICATION_DE
LAY), String.valueOf(subscriber.getNotificationDelay()),
XMLWriter.createEndTag(E_NOTIFICATION_DELAY));
writer.writeElementWithPCData(XMLWriter.createStartTag(E_SUBSCRIPTION_EN
D), String.valueOf(subscriber.getSubscriptionEnd()),
XMLWriter.createEndTag(E_SUBSCRIPTION_END));
writer.writeEndTag(XMLWriter.createEndTag(E_SUBSCRIPTION));
}
writer.writeEndTag(XMLWriter.createEndTag(E_SUBSCRIPTIONS));
writer.close();
outputStream.close();
} catch ( Exception e) {
Domain.log(e);
}
}
}
}
But I don't understand how it is able to load my subscriber at next
launch.
Example of subscribers.xml :
<?xml version="1.0" encoding="UTF-8"?>
<subscriptions>
<subscription id="1">
<uri>/files</uri>
<depth>2147483647</depth>
<callback>httpu://localhost:4444</callback>
<notification-type>UPDATE</notification-type>
<notification-delay>0</notification-delay>
<subscription-end>1114446870897</subscription-end>
</subscription>
</subscriptions>
I think it uses the callback to get my subscriber but I don't understand
how to do that.