From 2698e4c181ba8cfa97a23570970c0b62043a47c3 Mon Sep 17 00:00:00 2001 From: str4d Date: Tue, 12 Jul 2016 11:43:19 +0000 Subject: [PATCH] Use a checked exception instead of a boolean to indicate an invalid readable msg --- .../clients/ReadableMessageManagerImpl.java | 9 ++++++--- .../introduction/IntroductionManagerImpl.java | 17 ++++++++--------- .../messaging/MessagingManagerImpl.java | 8 ++++---- .../sharing/SharingManagerImpl.java | 13 ++++++------- 4 files changed, 24 insertions(+), 23 deletions(-) diff --git a/briar-core/src/org/briarproject/clients/ReadableMessageManagerImpl.java b/briar-core/src/org/briarproject/clients/ReadableMessageManagerImpl.java index 2b82f84af..5748d16b3 100644 --- a/briar-core/src/org/briarproject/clients/ReadableMessageManagerImpl.java +++ b/briar-core/src/org/briarproject/clients/ReadableMessageManagerImpl.java @@ -13,6 +13,7 @@ import org.briarproject.api.db.DbException; import org.briarproject.api.db.Transaction; import org.briarproject.api.sync.Group; import org.briarproject.api.sync.GroupId; +import org.briarproject.api.sync.InvalidMessageException; import org.briarproject.api.sync.Message; import org.briarproject.api.sync.MessageId; @@ -35,16 +36,17 @@ public abstract class ReadableMessageManagerImpl protected abstract Group getContactGroup(Contact c); - protected abstract boolean incomingReadableMessage(Transaction txn, + protected abstract void incomingReadableMessage(Transaction txn, Message m, BdfList body, BdfDictionary meta) - throws DbException, FormatException; + throws DbException, FormatException, InvalidMessageException; @Override protected void incomingMessage(Transaction txn, Message m, BdfList body, BdfDictionary meta) throws DbException, FormatException { // Check if we accept this message - if (incomingReadableMessage(txn, m, body, meta)) { + try { + incomingReadableMessage(txn, m, body, meta); // Update the group timestamp and unread count GroupId groupId = m.getGroupId(); @@ -52,6 +54,7 @@ public abstract class ReadableMessageManagerImpl boolean local = meta.getBoolean(LOCAL); boolean read = meta.getBoolean(READ); updateGroupMetadata(txn, groupId, timestamp, local, read, read); + } catch (InvalidMessageException ignored) { } } diff --git a/briar-core/src/org/briarproject/introduction/IntroductionManagerImpl.java b/briar-core/src/org/briarproject/introduction/IntroductionManagerImpl.java index 065851270..6093d2866 100644 --- a/briar-core/src/org/briarproject/introduction/IntroductionManagerImpl.java +++ b/briar-core/src/org/briarproject/introduction/IntroductionManagerImpl.java @@ -26,6 +26,7 @@ import org.briarproject.api.introduction.IntroductionResponse; import org.briarproject.api.sync.ClientId; import org.briarproject.api.sync.Group; import org.briarproject.api.sync.GroupId; +import org.briarproject.api.sync.InvalidMessageException; import org.briarproject.api.sync.Message; import org.briarproject.api.sync.MessageId; import org.briarproject.api.sync.MessageStatus; @@ -213,8 +214,9 @@ class IntroductionManagerImpl extends ReadableMessageManagerImpl * in the introduction protocol and which engine we need to start. */ @Override - protected boolean incomingReadableMessage(Transaction txn, Message m, BdfList body, - BdfDictionary message) throws DbException, FormatException { + protected void incomingReadableMessage(Transaction txn, Message m, + BdfList body, BdfDictionary message) + throws DbException, FormatException, InvalidMessageException { // Get message data and type GroupId groupId = m.getGroupId(); @@ -240,7 +242,7 @@ class IntroductionManagerImpl extends ReadableMessageManagerImpl LOG.log(WARNING, e.toString(), e); } deleteMessage(txn, m.getId()); - return false; + throw new InvalidMessageException(); } try { introduceeManager.incomingMessage(txn, state, message); @@ -262,7 +264,7 @@ class IntroductionManagerImpl extends ReadableMessageManagerImpl } catch (FormatException e) { LOG.warning("Could not find state for message, deleting..."); deleteMessage(txn, m.getId()); - return false; + throw new InvalidMessageException(); } long role = state.getLong(ROLE, -1L); @@ -277,7 +279,7 @@ class IntroductionManagerImpl extends ReadableMessageManagerImpl "'. Deleting message..."); } deleteMessage(txn, m.getId()); - return false; + throw new InvalidMessageException(); } } catch (DbException e) { if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); @@ -296,11 +298,8 @@ class IntroductionManagerImpl extends ReadableMessageManagerImpl LOG.warning("Unknown message type '" + type + "', deleting..."); } deleteMessage(txn, m.getId()); - return false; + throw new InvalidMessageException(); } - - // The message is valid - return true; } @Override diff --git a/briar-core/src/org/briarproject/messaging/MessagingManagerImpl.java b/briar-core/src/org/briarproject/messaging/MessagingManagerImpl.java index 939d9a02f..741fbf4d7 100644 --- a/briar-core/src/org/briarproject/messaging/MessagingManagerImpl.java +++ b/briar-core/src/org/briarproject/messaging/MessagingManagerImpl.java @@ -21,6 +21,7 @@ import org.briarproject.api.messaging.PrivateMessageHeader; import org.briarproject.api.sync.ClientId; import org.briarproject.api.sync.Group; import org.briarproject.api.sync.GroupId; +import org.briarproject.api.sync.InvalidMessageException; import org.briarproject.api.sync.Message; import org.briarproject.api.sync.MessageId; import org.briarproject.api.sync.MessageStatus; @@ -96,8 +97,9 @@ class MessagingManagerImpl extends ReadableMessageManagerImpl } @Override - protected boolean incomingReadableMessage(Transaction txn, Message m, BdfList body, - BdfDictionary meta) throws DbException, FormatException { + protected void incomingReadableMessage(Transaction txn, Message m, + BdfList body, BdfDictionary meta) + throws DbException, FormatException, InvalidMessageException { // Broadcast event GroupId groupId = m.getGroupId(); @@ -110,8 +112,6 @@ class MessagingManagerImpl extends ReadableMessageManagerImpl PrivateMessageReceivedEvent event = new PrivateMessageReceivedEvent( header, groupId); txn.attach(event); - - return true; } @Override diff --git a/briar-core/src/org/briarproject/sharing/SharingManagerImpl.java b/briar-core/src/org/briarproject/sharing/SharingManagerImpl.java index c66c27fc5..ccea1b543 100644 --- a/briar-core/src/org/briarproject/sharing/SharingManagerImpl.java +++ b/briar-core/src/org/briarproject/sharing/SharingManagerImpl.java @@ -31,6 +31,7 @@ import org.briarproject.api.sharing.SharingManager; import org.briarproject.api.sync.ClientId; import org.briarproject.api.sync.Group; import org.briarproject.api.sync.GroupId; +import org.briarproject.api.sync.InvalidMessageException; import org.briarproject.api.sync.Message; import org.briarproject.api.sync.MessageId; import org.briarproject.api.sync.MessageStatus; @@ -182,8 +183,9 @@ abstract class SharingManagerImpl