+ if ((replyId == null) || (replyPostId == null) || (replyTime == null) || (replyText == null)) {
+ /* TODO - mark Sone as bad. */
+ logger.log(Level.WARNING, "Downloaded reply for Sone %s with missing data! ID: %s, Post: %s, Time: %s, Text: %s", new Object[] { sone, replyId, replyPostId, replyTime, replyText });
+ return null;
+ }
+ try {
+ replies.add(core.getReply(replyId).setSone(sone).setPost(core.getPost(replyPostId)).setTime(Long.parseLong(replyTime)).setText(replyText));
+ } catch (NumberFormatException nfe1) {
+ /* TODO - mark Sone as bad. */
+ logger.log(Level.WARNING, "Downloaded reply for Sone %s with invalid time: %s", new Object[] { sone, replyTime });
+ return null;
+ }
+ }
+
+ /* parse friends. */
+ SimpleXML friendsXml = soneXml.getNode("friends");
+ if (friendsXml == null) {
+ /* TODO - mark Sone as bad. */
+ logger.log(Level.WARNING, "Downloaded Sone %s has no friends!", new Object[] { sone });
+ return null;
+ }
+
+ Set<Sone> friends = new HashSet<Sone>();
+ for (SimpleXML friendXml : friendsXml.getNodes("friend")) {
+ String friendId = friendXml.getValue("sone-id", null);
+ String friendKey = friendXml.getValue("sone-key", null);
+ String friendName = friendXml.getValue("sone-name", null);
+ if ((friendId == null) || (friendKey == null) || (friendName == null)) {
+ /* TODO - mark Sone as bad. */
+ logger.log(Level.WARNING, "Downloaded friend for Sone %s with missing data! ID: %s, Key: %s, Name: %s", new Object[] { sone, friendId, friendKey, friendName });
+ return null;
+ }
+ try {
+ friends.add(core.getSone(friendId).setRequestUri(new FreenetURI(friendKey)).setName(friendName));
+ } catch (MalformedURLException mue1) {
+ /* TODO - mark Sone as bad. */
+ logger.log(Level.WARNING, "Downloaded friend for Sone %s with invalid key: %s", new Object[] { sone, friendKey });
+ return null;
+ }