From 71196e3494e3119668418fedf14f5eeeb4ee94da Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Thu, 11 Aug 2016 12:19:10 -0300 Subject: [PATCH] Let clients decide whether to share messages or not --- .../src/org/briarproject/api/clients/ClientHelper.java | 6 ++++++ .../src/org/briarproject/blogs/BlogManagerImpl.java | 2 ++ .../src/org/briarproject/clients/ClientHelperImpl.java | 6 ++++++ .../src/org/briarproject/forum/ForumManagerImpl.java | 2 ++ .../src/org/briarproject/sync/ValidationManagerImpl.java | 2 -- .../src/org/briarproject/blogs/BlogManagerImplTest.java | 1 + .../org/briarproject/sync/ValidationManagerImplTest.java | 9 --------- 7 files changed, 17 insertions(+), 11 deletions(-) diff --git a/briar-api/src/org/briarproject/api/clients/ClientHelper.java b/briar-api/src/org/briarproject/api/clients/ClientHelper.java index ea479a7f6e..a3524d2767 100644 --- a/briar-api/src/org/briarproject/api/clients/ClientHelper.java +++ b/briar-api/src/org/briarproject/api/clients/ClientHelper.java @@ -69,6 +69,12 @@ public interface ClientHelper { void mergeMessageMetadata(Transaction txn, MessageId m, BdfDictionary metadata) throws DbException, FormatException; + /** + * Marks the given message as shared or unshared with other contacts. + */ + void setMessageShared(Transaction txn, Message m, boolean shared) + throws DbException; + byte[] toByteArray(BdfDictionary dictionary) throws FormatException; byte[] toByteArray(BdfList list) throws FormatException; diff --git a/briar-core/src/org/briarproject/blogs/BlogManagerImpl.java b/briar-core/src/org/briarproject/blogs/BlogManagerImpl.java index cc84d7dd2a..0b99f74cb2 100644 --- a/briar-core/src/org/briarproject/blogs/BlogManagerImpl.java +++ b/briar-core/src/org/briarproject/blogs/BlogManagerImpl.java @@ -162,6 +162,8 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager, protected void incomingMessage(Transaction txn, Message m, BdfList list, BdfDictionary meta) throws DbException, FormatException { + clientHelper.setMessageShared(txn, m, true); + GroupId groupId = m.getGroupId(); BlogPostHeader h = getPostHeaderFromMetadata(txn, m.getId(), meta); BlogPostAddedEvent event = diff --git a/briar-core/src/org/briarproject/clients/ClientHelperImpl.java b/briar-core/src/org/briarproject/clients/ClientHelperImpl.java index 61ac38c40d..00778b6b6d 100644 --- a/briar-core/src/org/briarproject/clients/ClientHelperImpl.java +++ b/briar-core/src/org/briarproject/clients/ClientHelperImpl.java @@ -239,6 +239,12 @@ class ClientHelperImpl implements ClientHelper { db.mergeMessageMetadata(txn, m, metadataEncoder.encode(metadata)); } + @Override + public void setMessageShared(Transaction txn, Message m, boolean shared) + throws DbException { + db.setMessageShared(txn, m, shared); + } + @Override public byte[] toByteArray(BdfDictionary dictionary) throws FormatException { ByteArrayOutputStream out = new ByteArrayOutputStream(); diff --git a/briar-core/src/org/briarproject/forum/ForumManagerImpl.java b/briar-core/src/org/briarproject/forum/ForumManagerImpl.java index 2574ee80da..84f28dbf99 100644 --- a/briar-core/src/org/briarproject/forum/ForumManagerImpl.java +++ b/briar-core/src/org/briarproject/forum/ForumManagerImpl.java @@ -78,6 +78,8 @@ class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager { protected void incomingMessage(Transaction txn, Message m, BdfList body, BdfDictionary meta) throws DbException, FormatException { + clientHelper.setMessageShared(txn, m, true); + ForumPostHeader post = getForumPostHeader(txn, m.getId(), meta); ForumPostReceivedEvent event = new ForumPostReceivedEvent(post, m.getGroupId()); diff --git a/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java b/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java index d767311c91..86cd80d73a 100644 --- a/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java +++ b/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java @@ -358,8 +358,6 @@ class ValidationManagerImpl implements ValidationManager, Service, throw new InvalidMessageException( "Deleted by Client"); } - - db.setMessageShared(txn, m, true); db.setMessageState(txn, m, c, DELIVERED); // deliver pending dependents diff --git a/briar-tests/src/org/briarproject/blogs/BlogManagerImplTest.java b/briar-tests/src/org/briarproject/blogs/BlogManagerImplTest.java index efaf20650c..4663b16a09 100644 --- a/briar-tests/src/org/briarproject/blogs/BlogManagerImplTest.java +++ b/briar-tests/src/org/briarproject/blogs/BlogManagerImplTest.java @@ -192,6 +192,7 @@ public class BlogManagerImplTest extends BriarTestCase { ); context.checking(new Expectations() {{ + oneOf(clientHelper).setMessageShared(txn, message, true); oneOf(identityManager) .getAuthorStatus(txn, blog1.getAuthor().getId()); will(returnValue(VERIFIED)); diff --git a/briar-tests/src/org/briarproject/sync/ValidationManagerImplTest.java b/briar-tests/src/org/briarproject/sync/ValidationManagerImplTest.java index d7ad56c100..a46a027c77 100644 --- a/briar-tests/src/org/briarproject/sync/ValidationManagerImplTest.java +++ b/briar-tests/src/org/briarproject/sync/ValidationManagerImplTest.java @@ -119,7 +119,6 @@ public class ValidationManagerImplTest extends BriarTestCase { // Async delivery oneOf(db).startTransaction(false); will(returnValue(txn2b)); - oneOf(db).setMessageShared(txn2b, message, true); // Call the hook for the first message oneOf(hook).incomingMessage(txn2b, message, metadata); oneOf(db).getRawMessage(txn2b, messageId); @@ -209,7 +208,6 @@ public class ValidationManagerImplTest extends BriarTestCase { // Deliver message in a new transaction oneOf(db).startTransaction(false); will(returnValue(txn3)); - oneOf(db).setMessageShared(txn3, message, true); oneOf(db).setMessageState(txn3, message, clientId, DELIVERED); oneOf(hook).incomingMessage(txn3, message, metadata); oneOf(db).getRawMessage(txn3, messageId); @@ -233,7 +231,6 @@ public class ValidationManagerImplTest extends BriarTestCase { // Deliver the dependent in a new transaction oneOf(db).startTransaction(false); will(returnValue(txn5)); - oneOf(db).setMessageShared(txn5, message1, true); oneOf(db).setMessageState(txn5, message1, clientId, DELIVERED); oneOf(hook).incomingMessage(txn5, message1, metadata); oneOf(db).getRawMessage(txn5, messageId1); @@ -299,7 +296,6 @@ public class ValidationManagerImplTest extends BriarTestCase { // Deliver the pending message oneOf(db).startTransaction(false); will(returnValue(txn3)); - oneOf(db).setMessageShared(txn3, message, true); oneOf(db).setMessageState(txn3, message, clientId, DELIVERED); oneOf(hook).incomingMessage(txn3, message, metadata); oneOf(db).getRawMessage(txn3, messageId); @@ -499,7 +495,6 @@ public class ValidationManagerImplTest extends BriarTestCase { // async delivery oneOf(db).startTransaction(false); will(returnValue(txn2)); - oneOf(db).setMessageShared(txn2, message, true); // Call the hook oneOf(hook).incomingMessage(txn2, message, metadata); oneOf(db).getRawMessage(txn2, messageId); @@ -627,7 +622,6 @@ public class ValidationManagerImplTest extends BriarTestCase { // async delivery oneOf(db).startTransaction(false); will(returnValue(txn2)); - oneOf(db).setMessageShared(txn2, message, true); // Call the hook oneOf(hook).incomingMessage(txn2, message, metadata); oneOf(db).getRawMessage(txn2, messageId); @@ -761,7 +755,6 @@ public class ValidationManagerImplTest extends BriarTestCase { // Deliver first message oneOf(db).startTransaction(false); will(returnValue(txn2)); - oneOf(db).setMessageShared(txn2, message, true); oneOf(hook).incomingMessage(txn2, message, metadata); oneOf(db).getRawMessage(txn2, messageId); will(returnValue(raw)); @@ -784,7 +777,6 @@ public class ValidationManagerImplTest extends BriarTestCase { // Deliver the pending message oneOf(db).startTransaction(false); will(returnValue(txn4)); - oneOf(db).setMessageShared(txn4, message1, true); oneOf(hook).incomingMessage(txn4, message1, metadata); oneOf(db).getRawMessage(txn4, messageId1); will(returnValue(raw)); @@ -842,7 +834,6 @@ public class ValidationManagerImplTest extends BriarTestCase { // Deliver first message oneOf(db).startTransaction(false); will(returnValue(txn2)); - oneOf(db).setMessageShared(txn2, message, true); oneOf(hook).incomingMessage(txn2, message, metadata); oneOf(db).getRawMessage(txn2, messageId); will(returnValue(raw)); -- GitLab