From 213a3bfd6db663a3a6ded8afd6cdaf92d6f456e8 Mon Sep 17 00:00:00 2001 From: bontric <benjohnwie@gmail.com> Date: Fri, 28 Sep 2018 15:36:14 +0200 Subject: [PATCH] Fix/refactor mailbox message parsing --- .../mailbox/protocol/MailboxMessage.java | 6 ---- .../mailbox/protocol/MailboxRequest.java | 7 ++--- .../mailbox/protocol/MailboxRequestEnd.java | 10 +++--- .../mailbox/protocol/MailboxRequestStore.java | 31 +++++++++---------- .../mailbox/protocol/MailboxRequestSync.java | 16 +++++----- .../mailbox/protocol/MailboxRequestTake.java | 14 ++++----- .../mailbox/protocol/MailboxResponse.java | 15 ++++----- 7 files changed, 42 insertions(+), 57 deletions(-) diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxMessage.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxMessage.java index 21de3d151..cf497c249 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxMessage.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxMessage.java @@ -67,12 +67,6 @@ public interface MailboxMessage { */ BdfList toBdfList(); - /** - * @param list - * @throws FormatException - */ - void parseBody(BdfList list) throws FormatException; - enum TYPE { RESPONSE(0), END(1), diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequest.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequest.java index 928bd379b..f913cf7b4 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequest.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequest.java @@ -22,10 +22,9 @@ public abstract class MailboxRequest implements MailboxMessage { this.msgId = msgIdCounter.getAndIncrement(); } - public MailboxRequest(BdfList lst) throws FormatException { - this.type = TYPE.fromLong(lst.getLong(0)); - this.msgId = lst.getLong(1); - parseBody(lst.getList(2)); + public MailboxRequest(TYPE type, long msgId) throws FormatException { + this.type = type; + this.msgId = msgId; } @Override diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestEnd.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestEnd.java index 2fc1a53da..f64f48bb4 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestEnd.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestEnd.java @@ -11,8 +11,11 @@ public class MailboxRequestEnd extends MailboxRequest { super(TYPE.END); } + // Parse END request from bdfList public MailboxRequestEnd(BdfList msg) throws FormatException { - super(msg); + super(TYPE.END, msg.getLong(1)); + if(msg.getList(2).size() != 0) + throw new FormatException(); } @Override @@ -25,9 +28,4 @@ public class MailboxRequestEnd extends MailboxRequest { return false; } - @Override - public void parseBody(BdfList list) throws FormatException { - if(list.size() != 0) - throw new FormatException(); - } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestStore.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestStore.java index 6c7113ec3..60074e1c3 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestStore.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestStore.java @@ -26,7 +26,21 @@ public class MailboxRequestStore extends MailboxRequest { } public MailboxRequestStore(BdfList msg) throws FormatException { - super(msg); + super(TYPE.STORE, msg.getLong(1)); + + BdfList body = msg.getList(2); + + if(body.size() > 2) + throw new FormatException(); + + Long cId = body.getOptionalLong(0); + if (cId != null) { + if (cId > Integer.MAX_VALUE || cId < Integer.MIN_VALUE) + throw new FormatException(); + contactId = new ContactId(cId.intValue()); + } + + encryptedSyncStream = body.getRaw(1); } public BdfList getRequestBody() { @@ -41,21 +55,6 @@ public class MailboxRequestStore extends MailboxRequest { return true; } - @Override - public void parseBody(BdfList msg) throws FormatException { - if(msg.size() > 2) - throw new FormatException(); - - Long cId = msg.getOptionalLong(0); - if (cId != null) { - if (cId > Integer.MAX_VALUE || cId < Integer.MIN_VALUE) - throw new FormatException(); - contactId = new ContactId(cId.intValue()); - } - - encryptedSyncStream = msg.getRaw(1); - } - public byte[] getEncryptedSyncStream() { return encryptedSyncStream; } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestSync.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestSync.java index 288941113..9d171b77d 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestSync.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestSync.java @@ -18,8 +18,14 @@ public class MailboxRequestSync extends MailboxRequest { this.syncStream = null; } - public MailboxRequestSync(BdfList lst) throws FormatException { - super(lst); + public MailboxRequestSync(BdfList msg) throws FormatException { + super(TYPE.SYNC, msg.getLong(1)); + + BdfList body = msg.getList(2); + + if(body.size() != 1) + throw new FormatException(); + this.syncStream = body.getOptionalRaw(0); } @Override @@ -32,12 +38,6 @@ public class MailboxRequestSync extends MailboxRequest { return false; } - @Override - public void parseBody(BdfList list) throws FormatException { - if(list.size() != 1) - throw new FormatException(); - this.syncStream = list.getOptionalRaw(0); - } public byte[] getSyncStream() { return syncStream; diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestTake.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestTake.java index c9fad63b4..5f7720d7f 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestTake.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestTake.java @@ -13,7 +13,12 @@ public class MailboxRequestTake extends MailboxRequest { } public MailboxRequestTake(BdfList msg) throws FormatException { - super(msg); + super(TYPE.TAKE, msg.getLong(1)); + + BdfList body = msg.getList(2); + if(body.size() != 1) + throw new FormatException(); + this.encryptedSyncStream = body.getRaw(0); } @Override @@ -26,13 +31,6 @@ public class MailboxRequestTake extends MailboxRequest { return true; } - @Override - public void parseBody(BdfList msg) throws FormatException { - if(msg.size() != 1) - throw new FormatException(); - this.encryptedSyncStream = msg.getRaw(0); - } - public byte[] getEncryptedSyncStream() { return encryptedSyncStream; } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxResponse.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxResponse.java index 873c16d0f..60837bfdb 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxResponse.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxResponse.java @@ -19,7 +19,12 @@ public class MailboxResponse implements MailboxMessage { public MailboxResponse(BdfList msg) throws FormatException { this.msgId = msg.getLong(1); - parseBody(msg.getList(2)); + BdfList body = msg.getList(2); + + if(body.size() != 1) + throw new FormatException(); + + errorMessage = body.getOptionalString(0); } @Override @@ -37,14 +42,6 @@ public class MailboxResponse implements MailboxMessage { return BdfList.of(RESPONSE.getValue(), msgId, BdfList.of(errorMessage)); } - - @Override - public void parseBody(BdfList list) throws FormatException { - if(list.size() != 1) - throw new FormatException(); - errorMessage = list.getOptionalString(0); - } - public String getErrorMessage() { return errorMessage; } -- GitLab