fixed rare npe

This commit is contained in:
iNPUTmice 2014-09-23 11:48:48 +02:00
parent 59009ded82
commit 12c2fde61b
1 changed files with 21 additions and 20 deletions

View File

@ -25,7 +25,7 @@ public class MessageParser extends AbstractParser implements
} }
private Message parseChat(MessagePacket packet, Account account) { private Message parseChat(MessagePacket packet, Account account) {
String[] fromParts = packet.getFrom().split("/",2); String[] fromParts = packet.getFrom().split("/", 2);
Conversation conversation = mXmppConnectionService Conversation conversation = mXmppConnectionService
.findOrCreateConversation(account, fromParts[0], false); .findOrCreateConversation(account, fromParts[0], false);
conversation.setLatestMarkableMessageId(getMarkableMessageId(packet)); conversation.setLatestMarkableMessageId(getMarkableMessageId(packet));
@ -57,9 +57,9 @@ public class MessageParser extends AbstractParser implements
} }
private Message parseOtrChat(MessagePacket packet, Account account) { private Message parseOtrChat(MessagePacket packet, Account account) {
boolean properlyAddressed = (packet.getTo().split("/",2).length == 2) boolean properlyAddressed = (packet.getTo().split("/", 2).length == 2)
|| (account.countPresences() == 1); || (account.countPresences() == 1);
String[] fromParts = packet.getFrom().split("/",2); String[] fromParts = packet.getFrom().split("/", 2);
Conversation conversation = mXmppConnectionService Conversation conversation = mXmppConnectionService
.findOrCreateConversation(account, fromParts[0], false); .findOrCreateConversation(account, fromParts[0], false);
String presence; String presence;
@ -132,7 +132,7 @@ public class MessageParser extends AbstractParser implements
private Message parseGroupchat(MessagePacket packet, Account account) { private Message parseGroupchat(MessagePacket packet, Account account) {
int status; int status;
String[] fromParts = packet.getFrom().split("/",2); String[] fromParts = packet.getFrom().split("/", 2);
if (mXmppConnectionService.find(account.pendingConferenceLeaves, if (mXmppConnectionService.find(account.pendingConferenceLeaves,
account, fromParts[0]) != null) { account, fromParts[0]) != null) {
return null; return null;
@ -188,11 +188,11 @@ public class MessageParser extends AbstractParser implements
Element forwarded; Element forwarded;
if (packet.hasChild("received", "urn:xmpp:carbons:2")) { if (packet.hasChild("received", "urn:xmpp:carbons:2")) {
forwarded = packet.findChild("received", "urn:xmpp:carbons:2") forwarded = packet.findChild("received", "urn:xmpp:carbons:2")
.findChild("forwarded", "urn:xmpp:forward:0"); .findChild("forwarded", "urn:xmpp:forward:0");
status = Message.STATUS_RECEIVED; status = Message.STATUS_RECEIVED;
} else if (packet.hasChild("sent", "urn:xmpp:carbons:2")) { } else if (packet.hasChild("sent", "urn:xmpp:carbons:2")) {
forwarded = packet.findChild("sent", "urn:xmpp:carbons:2") forwarded = packet.findChild("sent", "urn:xmpp:carbons:2")
.findChild("forwarded", "urn:xmpp:forward:0"); .findChild("forwarded", "urn:xmpp:forward:0");
status = Message.STATUS_SEND; status = Message.STATUS_SEND;
} else { } else {
return null; return null;
@ -221,7 +221,7 @@ public class MessageParser extends AbstractParser implements
return null; return null;
} }
} }
String[] parts = fullJid.split("/",2); String[] parts = fullJid.split("/", 2);
Conversation conversation = mXmppConnectionService Conversation conversation = mXmppConnectionService
.findOrCreateConversation(account, parts[0], false); .findOrCreateConversation(account, parts[0], false);
conversation.setLatestMarkableMessageId(getMarkableMessageId(packet)); conversation.setLatestMarkableMessageId(getMarkableMessageId(packet));
@ -253,38 +253,39 @@ public class MessageParser extends AbstractParser implements
} }
private void parseError(MessagePacket packet, Account account) { private void parseError(MessagePacket packet, Account account) {
String[] fromParts = packet.getFrom().split("/",2); String[] fromParts = packet.getFrom().split("/", 2);
mXmppConnectionService.markMessage(account, fromParts[0], mXmppConnectionService.markMessage(account, fromParts[0],
packet.getId(), Message.STATUS_SEND_FAILED); packet.getId(), Message.STATUS_SEND_FAILED);
} }
private void parseNonMessage(Element packet, Account account) { private void parseNonMessage(Element packet, Account account) {
String from = packet.getAttribute("from");
if (packet.hasChild("event", "http://jabber.org/protocol/pubsub#event")) { if (packet.hasChild("event", "http://jabber.org/protocol/pubsub#event")) {
Element event = packet.findChild("event", Element event = packet.findChild("event",
"http://jabber.org/protocol/pubsub#event"); "http://jabber.org/protocol/pubsub#event");
parseEvent(event, packet.getAttribute("from"), account); parseEvent(event, packet.getAttribute("from"), account);
} else if (packet.hasChild("displayed", "urn:xmpp:chat-markers:0")) { } else if (from != null
&& packet.hasChild("displayed", "urn:xmpp:chat-markers:0")) {
String id = packet String id = packet
.findChild("displayed", "urn:xmpp:chat-markers:0") .findChild("displayed", "urn:xmpp:chat-markers:0")
.getAttribute("id"); .getAttribute("id");
String[] fromParts = packet.getAttribute("from").split("/",2);
updateLastseen(packet, account, true); updateLastseen(packet, account, true);
mXmppConnectionService.markMessage(account, fromParts[0], id, mXmppConnectionService.markMessage(account, from.split("/", 2)[0],
Message.STATUS_SEND_DISPLAYED); id, Message.STATUS_SEND_DISPLAYED);
} else if (packet.hasChild("received", "urn:xmpp:chat-markers:0")) { } else if (from != null
&& packet.hasChild("received", "urn:xmpp:chat-markers:0")) {
String id = packet.findChild("received", "urn:xmpp:chat-markers:0") String id = packet.findChild("received", "urn:xmpp:chat-markers:0")
.getAttribute("id"); .getAttribute("id");
String[] fromParts = packet.getAttribute("from").split("/",2);
updateLastseen(packet, account, false); updateLastseen(packet, account, false);
mXmppConnectionService.markMessage(account, fromParts[0], id, mXmppConnectionService.markMessage(account, from.split("/", 2)[0],
Message.STATUS_SEND_RECEIVED); id, Message.STATUS_SEND_RECEIVED);
} else if (packet.hasChild("received", "urn:xmpp:receipts")) { } else if (from != null
&& packet.hasChild("received", "urn:xmpp:receipts")) {
String id = packet.findChild("received", "urn:xmpp:receipts") String id = packet.findChild("received", "urn:xmpp:receipts")
.getAttribute("id"); .getAttribute("id");
String[] fromParts = packet.getAttribute("from").split("/");
updateLastseen(packet, account, false); updateLastseen(packet, account, false);
mXmppConnectionService.markMessage(account, fromParts[0], id, mXmppConnectionService.markMessage(account, from.split("/", 2)[0],
Message.STATUS_SEND_RECEIVED); id, Message.STATUS_SEND_RECEIVED);
} else if (packet.hasChild("x", "http://jabber.org/protocol/muc#user")) { } else if (packet.hasChild("x", "http://jabber.org/protocol/muc#user")) {
Element x = packet.findChild("x", Element x = packet.findChild("x",
"http://jabber.org/protocol/muc#user"); "http://jabber.org/protocol/muc#user");