add some error handling: catch message retrieval failure and return empty set; handle (rather poor) throw in external feed date parser for malformed dates.

--HG--
extra : rebase_source : 4c7e71892acad4f5bca54ab64ffabc968595f0c7
This commit is contained in:
alta88@gmail.com 2010-01-08 23:08:19 -07:00
Родитель 98dd30368e
Коммит c744e765e0
2 изменённых файлов: 21 добавлений и 6 удалений

Просмотреть файл

@ -158,6 +158,10 @@ SnowlCollection.prototype = {
this._messageIndex[message.id] = message;
}
}
catch(ex) {
this._log.error("Error retrieving messages - " + ex);
return this._messages = [];
}
finally {
statement.reset();
}
@ -258,13 +262,16 @@ SnowlCollection.prototype = {
if (condition.type != "ARRAY")
for (let [name, value] in Iterator(condition.parameters)) {
statement.params[name] = value;
this._log.info("_generateStatement: name:value - "+name+" : "+value.toString());
this._log.info("_generateStatement: params - "+statement.params[name]);
//this._log.info("_generateStatement: name:value - "+name+" : "+value.toString());
//this._log.info("_generateStatement: params - "+statement.params[name]);
}
for each (let condition in this.filters)
for (let [name, value] in Iterator(condition.parameters))
for (let [name, value] in Iterator(condition.parameters)) {
statement.params[name] = value;
//this._log.info("_generateStatement: name:value - "+name+" : "+value.toString());
//this._log.info("_generateStatement: params - "+statement.params[name]);
}
return statement;
},

Просмотреть файл

@ -431,10 +431,14 @@ SnowlFeed.prototype = {
message.source = this;
message.externalID = aExternalID;
message.subject = aEntry.title.text;
message.timestamp = aEntry.updated ? new Date(SnowlDateUtils.RFC822Date(aEntry.updated))
: aEntry.published ? new Date(SnowlDateUtils.RFC822Date(aEntry.published))
: aEntry.fields.get("dc:date") ? ISO8601DateUtils.parse(aEntry.fields.get("dc:date"))
message.timestamp = aEntry.updated ? new Date(SnowlDateUtils.RFC822Date(aEntry.updated))
: aEntry.published ? new Date(SnowlDateUtils.RFC822Date(aEntry.published))
: null;
if (!message.timestamp && aEntry.fields.get("dc:date")) {
// This date routine throws for really invalid dates.
try { message.timestamp = ISO8601DateUtils.parse(aEntry.fields.get("dc:date")) }
catch(ex) { message.timestamp = null; }
}
message.received = aReceived;
message.link = aEntry.link;
@ -628,6 +632,10 @@ SnowlFeed.prototype = {
let fieldName = field.name.replace(/^null/, "");
message.headers[fieldName] = field.value.substring(0, 500) +
(field.value.length > 500 ? " [...]" : "");
// One last try to get a valid date..
if (!message.timestamp && fieldName == "publicationDate")
message.timestamp = new Date(SnowlDateUtils.RFC822Date(field.value));
}
if (field.name.match(/lang/g)) {