From 743fc7dd1fc5c66237ba9d49cccd72aa986a1ebf Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Tue, 16 Aug 2016 10:56:51 -0300
Subject: [PATCH] Do not require an entire Message for the MessageSharedEvent

---
 .../org/briarproject/api/clients/ClientHelper.java   |  2 +-
 .../org/briarproject/api/db/DatabaseComponent.java   |  2 +-
 .../briarproject/api/event/MessageSharedEvent.java   | 12 ++++++------
 .../org/briarproject/clients/ClientHelperImpl.java   |  2 +-
 .../org/briarproject/db/DatabaseComponentImpl.java   |  8 ++++----
 .../src/org/briarproject/forum/ForumManagerImpl.java |  2 +-
 .../org/briarproject/blogs/BlogManagerImplTest.java  |  2 +-
 .../briarproject/db/DatabaseComponentImplTest.java   |  2 +-
 8 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/briar-api/src/org/briarproject/api/clients/ClientHelper.java b/briar-api/src/org/briarproject/api/clients/ClientHelper.java
index a3524d2767..d4625af665 100644
--- a/briar-api/src/org/briarproject/api/clients/ClientHelper.java
+++ b/briar-api/src/org/briarproject/api/clients/ClientHelper.java
@@ -72,7 +72,7 @@ public interface ClientHelper {
 	/**
 	 * Marks the given message as shared or unshared with other contacts.
 	 */
-	void setMessageShared(Transaction txn, Message m, boolean shared)
+	void setMessageShared(Transaction txn, MessageId m, boolean shared)
 			throws DbException;
 
 	byte[] toByteArray(BdfDictionary dictionary) throws FormatException;
diff --git a/briar-api/src/org/briarproject/api/db/DatabaseComponent.java b/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
index 735f64a21f..d3dbace30d 100644
--- a/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
+++ b/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
@@ -437,7 +437,7 @@ public interface DatabaseComponent {
 	/**
 	 * Marks the given message as shared or unshared.
 	 */
-	void setMessageShared(Transaction txn, Message m, boolean shared)
+	void setMessageShared(Transaction txn, MessageId m, boolean shared)
 			throws DbException;
 
 	/**
diff --git a/briar-api/src/org/briarproject/api/event/MessageSharedEvent.java b/briar-api/src/org/briarproject/api/event/MessageSharedEvent.java
index d011e8c3eb..840c7cc42d 100644
--- a/briar-api/src/org/briarproject/api/event/MessageSharedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/MessageSharedEvent.java
@@ -1,17 +1,17 @@
 package org.briarproject.api.event;
 
-import org.briarproject.api.sync.Message;
+import org.briarproject.api.sync.MessageId;
 
 /** An event that is broadcast when a message is shared. */
 public class MessageSharedEvent extends Event {
 
-	private final Message message;
+	private final MessageId messageId;
 
-	public MessageSharedEvent(Message message) {
-		this.message = message;
+	public MessageSharedEvent(MessageId message) {
+		this.messageId = message;
 	}
 
-	public Message getMessage() {
-		return message;
+	public MessageId getMessageId() {
+		return messageId;
 	}
 }
diff --git a/briar-core/src/org/briarproject/clients/ClientHelperImpl.java b/briar-core/src/org/briarproject/clients/ClientHelperImpl.java
index 00778b6b6d..5612e06b88 100644
--- a/briar-core/src/org/briarproject/clients/ClientHelperImpl.java
+++ b/briar-core/src/org/briarproject/clients/ClientHelperImpl.java
@@ -240,7 +240,7 @@ class ClientHelperImpl implements ClientHelper {
 	}
 
 	@Override
-	public void setMessageShared(Transaction txn, Message m, boolean shared)
+	public void setMessageShared(Transaction txn, MessageId m, boolean shared)
 			throws DbException {
 		db.setMessageShared(txn, m, shared);
 	}
diff --git a/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
index 1039a69e07..01a2d9a96d 100644
--- a/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
+++ b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
@@ -199,7 +199,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
 			transaction.attach(new MessageAddedEvent(m, null));
 			transaction.attach(new MessageStateChangedEvent(m, c, true,
 					DELIVERED));
-			if (shared) transaction.attach(new MessageSharedEvent(m));
+			if (shared) transaction.attach(new MessageSharedEvent(m.getId()));
 		}
 		db.mergeMessageMetadata(txn, m.getId(), meta);
 	}
@@ -704,13 +704,13 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
 		transaction.attach(new ContactStatusChangedEvent(c, active));
 	}
 
-	public void setMessageShared(Transaction transaction, Message m,
+	public void setMessageShared(Transaction transaction, MessageId m,
 			boolean shared) throws DbException {
 		if (transaction.isReadOnly()) throw new IllegalArgumentException();
 		T txn = unbox(transaction);
-		if (!db.containsMessage(txn, m.getId()))
+		if (!db.containsMessage(txn, m))
 			throw new NoSuchMessageException();
-		db.setMessageShared(txn, m.getId(), shared);
+		db.setMessageShared(txn, m, shared);
 		if (shared) transaction.attach(new MessageSharedEvent(m));
 	}
 
diff --git a/briar-core/src/org/briarproject/forum/ForumManagerImpl.java b/briar-core/src/org/briarproject/forum/ForumManagerImpl.java
index 84f28dbf99..b33842fc3b 100644
--- a/briar-core/src/org/briarproject/forum/ForumManagerImpl.java
+++ b/briar-core/src/org/briarproject/forum/ForumManagerImpl.java
@@ -78,7 +78,7 @@ 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);
+		clientHelper.setMessageShared(txn, m.getId(), true);
 
 		ForumPostHeader post = getForumPostHeader(txn, m.getId(), meta);
 		ForumPostReceivedEvent event =
diff --git a/briar-tests/src/org/briarproject/blogs/BlogManagerImplTest.java b/briar-tests/src/org/briarproject/blogs/BlogManagerImplTest.java
index 9171103303..637be2dbf3 100644
--- a/briar-tests/src/org/briarproject/blogs/BlogManagerImplTest.java
+++ b/briar-tests/src/org/briarproject/blogs/BlogManagerImplTest.java
@@ -192,7 +192,7 @@ public class BlogManagerImplTest extends BriarTestCase {
 		);
 
 		context.checking(new Expectations() {{
-			oneOf(clientHelper).setMessageShared(txn, message, true);
+			oneOf(clientHelper).setMessageShared(txn, messageId, true);
 			oneOf(identityManager)
 					.getAuthorStatus(txn, blog1.getAuthor().getId());
 			will(returnValue(VERIFIED));
diff --git a/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java b/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java
index 30f46c0328..123ca114c0 100644
--- a/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java
+++ b/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java
@@ -751,7 +751,7 @@ public class DatabaseComponentImplTest extends BriarTestCase {
 
 		transaction = db.startTransaction(false);
 		try {
-			db.setMessageShared(transaction, message, true);
+			db.setMessageShared(transaction, message.getId(), true);
 			fail();
 		} catch (NoSuchMessageException expected) {
 			// Expected
-- 
GitLab