From c9276de3991295560168ab04058cb57e814c8fd4 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Mon, 7 Mar 2016 15:38:56 +0000 Subject: [PATCH] Renamed validation hooks to incoming message hooks. --- .../api/sync/ValidationManager.java | 17 +++++++----- .../org/briarproject/forum/ForumModule.java | 3 ++- .../forum/ForumSharingManagerImpl.java | 20 +++++++------- .../sync/ValidationManagerImpl.java | 15 +++++------ .../sync/ValidationManagerImplTest.java | 26 +++++++++---------- 5 files changed, 42 insertions(+), 39 deletions(-) diff --git a/briar-api/src/org/briarproject/api/sync/ValidationManager.java b/briar-api/src/org/briarproject/api/sync/ValidationManager.java index 690bc54e23..2342afdbc2 100644 --- a/briar-api/src/org/briarproject/api/sync/ValidationManager.java +++ b/briar-api/src/org/briarproject/api/sync/ValidationManager.java @@ -30,14 +30,19 @@ public interface ValidationManager { } } - /** Sets the message validator for the given client. */ + /** + * Sets the message validator for the given client. + */ void registerMessageValidator(ClientId c, MessageValidator v); - /** Registers a hook to be called whenever a message is validated. */ - void registerValidationHook(ValidationHook hook); + /** + * Sets the incoming message hook for the given client. The hook will be + * called once for each incoming message that passes validation. + */ + void registerIncomingMessageHook(ClientId c, IncomingMessageHook hook); - interface ValidationHook { - void validatingMessage(Transaction txn, Message m, ClientId c, - Metadata meta) throws DbException; + interface IncomingMessageHook { + void incomingMessage(Transaction txn, Message m, Metadata meta) + throws DbException; } } diff --git a/briar-core/src/org/briarproject/forum/ForumModule.java b/briar-core/src/org/briarproject/forum/ForumModule.java index 56c18546f8..19e7ce06f1 100644 --- a/briar-core/src/org/briarproject/forum/ForumModule.java +++ b/briar-core/src/org/briarproject/forum/ForumModule.java @@ -53,7 +53,8 @@ public class ForumModule extends AbstractModule { ForumSharingManagerImpl forumSharingManager) { contactManager.registerAddContactHook(forumSharingManager); contactManager.registerRemoveContactHook(forumSharingManager); - validationManager.registerValidationHook(forumSharingManager); + validationManager.registerIncomingMessageHook( + ForumSharingManagerImpl.CLIENT_ID, forumSharingManager); return forumSharingManager; } } diff --git a/briar-core/src/org/briarproject/forum/ForumSharingManagerImpl.java b/briar-core/src/org/briarproject/forum/ForumSharingManagerImpl.java index 834cb94ddb..aa083679df 100644 --- a/briar-core/src/org/briarproject/forum/ForumSharingManagerImpl.java +++ b/briar-core/src/org/briarproject/forum/ForumSharingManagerImpl.java @@ -24,7 +24,7 @@ import org.briarproject.api.sync.GroupFactory; import org.briarproject.api.sync.GroupId; import org.briarproject.api.sync.Message; import org.briarproject.api.sync.MessageId; -import org.briarproject.api.sync.ValidationManager.ValidationHook; +import org.briarproject.api.sync.ValidationManager.IncomingMessageHook; import org.briarproject.api.system.Clock; import org.briarproject.util.StringUtils; @@ -44,7 +44,7 @@ import static org.briarproject.api.forum.ForumConstants.MAX_FORUM_NAME_LENGTH; import static org.briarproject.api.sync.SyncConstants.MESSAGE_HEADER_LENGTH; class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook, - RemoveContactHook, ValidationHook { + RemoveContactHook, IncomingMessageHook { static final ClientId CLIENT_ID = new ClientId(StringUtils.fromHexString( "cd11a5d04dccd9e2931d6fc3df456313" @@ -103,15 +103,13 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook, } @Override - public void validatingMessage(Transaction txn, Message m, ClientId c, - Metadata meta) throws DbException { - if (c.equals(CLIENT_ID)) { - try { - ContactId contactId = getContactId(txn, m.getGroupId()); - setForumVisibility(txn, contactId, getVisibleForums(txn, m)); - } catch (FormatException e) { - throw new DbException(e); - } + public void incomingMessage(Transaction txn, Message m, Metadata meta) + throws DbException { + try { + ContactId contactId = getContactId(txn, m.getGroupId()); + setForumVisibility(txn, contactId, getVisibleForums(txn, m)); + } catch (FormatException e) { + throw new DbException(e); } } diff --git a/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java b/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java index 248602434e..c6196944d5 100644 --- a/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java +++ b/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java @@ -25,11 +25,9 @@ import org.briarproject.api.sync.ValidationManager; import org.briarproject.util.ByteUtils; import java.util.LinkedList; -import java.util.List; import java.util.Map; import java.util.Queue; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.Executor; import java.util.logging.Logger; @@ -46,7 +44,7 @@ class ValidationManagerImpl implements ValidationManager, Service, private final Executor dbExecutor; private final Executor cryptoExecutor; private final Map<ClientId, MessageValidator> validators; - private final List<ValidationHook> hooks; + private final Map<ClientId, IncomingMessageHook> hooks; @Inject ValidationManagerImpl(DatabaseComponent db, @@ -56,7 +54,7 @@ class ValidationManagerImpl implements ValidationManager, Service, this.dbExecutor = dbExecutor; this.cryptoExecutor = cryptoExecutor; validators = new ConcurrentHashMap<ClientId, MessageValidator>(); - hooks = new CopyOnWriteArrayList<ValidationHook>(); + hooks = new ConcurrentHashMap<ClientId, IncomingMessageHook>(); } @Override @@ -76,8 +74,8 @@ class ValidationManagerImpl implements ValidationManager, Service, } @Override - public void registerValidationHook(ValidationHook hook) { - hooks.add(hook); + public void registerIncomingMessageHook(ClientId c, IncomingMessageHook hook) { + hooks.put(c, hook); } private void getMessagesToValidate(final ClientId c) { @@ -170,8 +168,9 @@ class ValidationManagerImpl implements ValidationManager, Service, db.mergeMessageMetadata(txn, m.getId(), meta); db.setMessageValid(txn, m, c, true); db.setMessageShared(txn, m, true); - for (ValidationHook hook : hooks) - hook.validatingMessage(txn, m, c, meta); + IncomingMessageHook hook = hooks.get(c); + if (hook != null) + hook.incomingMessage(txn, m, meta); } txn.setComplete(); } finally { diff --git a/briar-tests/src/org/briarproject/sync/ValidationManagerImplTest.java b/briar-tests/src/org/briarproject/sync/ValidationManagerImplTest.java index b55bacd906..a3058745e8 100644 --- a/briar-tests/src/org/briarproject/sync/ValidationManagerImplTest.java +++ b/briar-tests/src/org/briarproject/sync/ValidationManagerImplTest.java @@ -17,7 +17,7 @@ import org.briarproject.api.sync.GroupId; import org.briarproject.api.sync.Message; import org.briarproject.api.sync.MessageId; import org.briarproject.api.sync.MessageValidator; -import org.briarproject.api.sync.ValidationManager.ValidationHook; +import org.briarproject.api.sync.ValidationManager.IncomingMessageHook; import org.briarproject.util.ByteUtils; import org.jmock.Expectations; import org.jmock.Mockery; @@ -56,7 +56,7 @@ public class ValidationManagerImplTest extends BriarTestCase { final Executor dbExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor(); final MessageValidator validator = context.mock(MessageValidator.class); - final ValidationHook hook = context.mock(ValidationHook.class); + final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); final Transaction txn = new Transaction(null); final Transaction txn1 = new Transaction(null); final Transaction txn2 = new Transaction(null); @@ -87,7 +87,7 @@ public class ValidationManagerImplTest extends BriarTestCase { oneOf(db).setMessageValid(txn2, message, clientId, true); oneOf(db).setMessageShared(txn2, message, true); // Call the hook for the first message - oneOf(hook).validatingMessage(txn2, message, clientId, metadata); + oneOf(hook).incomingMessage(txn2, message, metadata); oneOf(db).endTransaction(txn2); // Load the second raw message and group oneOf(db).startTransaction(); @@ -110,7 +110,7 @@ public class ValidationManagerImplTest extends BriarTestCase { ValidationManagerImpl vm = new ValidationManagerImpl(db, dbExecutor, cryptoExecutor); vm.registerMessageValidator(clientId, validator); - vm.registerValidationHook(hook); + vm.registerIncomingMessageHook(clientId, hook); vm.start(); context.assertIsSatisfied(); @@ -124,7 +124,7 @@ public class ValidationManagerImplTest extends BriarTestCase { final Executor dbExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor(); final MessageValidator validator = context.mock(MessageValidator.class); - final ValidationHook hook = context.mock(ValidationHook.class); + final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); final Transaction txn = new Transaction(null); final Transaction txn1 = new Transaction(null); final Transaction txn2 = new Transaction(null); @@ -163,7 +163,7 @@ public class ValidationManagerImplTest extends BriarTestCase { ValidationManagerImpl vm = new ValidationManagerImpl(db, dbExecutor, cryptoExecutor); vm.registerMessageValidator(clientId, validator); - vm.registerValidationHook(hook); + vm.registerIncomingMessageHook(clientId, hook); vm.start(); context.assertIsSatisfied(); @@ -177,7 +177,7 @@ public class ValidationManagerImplTest extends BriarTestCase { final Executor dbExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor(); final MessageValidator validator = context.mock(MessageValidator.class); - final ValidationHook hook = context.mock(ValidationHook.class); + final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); final Transaction txn = new Transaction(null); final Transaction txn1 = new Transaction(null); final Transaction txn2 = new Transaction(null); @@ -219,7 +219,7 @@ public class ValidationManagerImplTest extends BriarTestCase { ValidationManagerImpl vm = new ValidationManagerImpl(db, dbExecutor, cryptoExecutor); vm.registerMessageValidator(clientId, validator); - vm.registerValidationHook(hook); + vm.registerIncomingMessageHook(clientId, hook); vm.start(); context.assertIsSatisfied(); @@ -232,7 +232,7 @@ public class ValidationManagerImplTest extends BriarTestCase { final Executor dbExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor(); final MessageValidator validator = context.mock(MessageValidator.class); - final ValidationHook hook = context.mock(ValidationHook.class); + final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); final Transaction txn = new Transaction(null); final Transaction txn1 = new Transaction(null); context.checking(new Expectations() {{ @@ -252,14 +252,14 @@ public class ValidationManagerImplTest extends BriarTestCase { oneOf(db).setMessageValid(txn1, message, clientId, true); oneOf(db).setMessageShared(txn1, message, true); // Call the hook - oneOf(hook).validatingMessage(txn1, message, clientId, metadata); + oneOf(hook).incomingMessage(txn1, message, metadata); oneOf(db).endTransaction(txn1); }}); ValidationManagerImpl vm = new ValidationManagerImpl(db, dbExecutor, cryptoExecutor); vm.registerMessageValidator(clientId, validator); - vm.registerValidationHook(hook); + vm.registerIncomingMessageHook(clientId, hook); vm.eventOccurred(new MessageAddedEvent(message, contactId)); context.assertIsSatisfied(); @@ -272,12 +272,12 @@ public class ValidationManagerImplTest extends BriarTestCase { final Executor dbExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor(); final MessageValidator validator = context.mock(MessageValidator.class); - final ValidationHook hook = context.mock(ValidationHook.class); + final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); ValidationManagerImpl vm = new ValidationManagerImpl(db, dbExecutor, cryptoExecutor); vm.registerMessageValidator(clientId, validator); - vm.registerValidationHook(hook); + vm.registerIncomingMessageHook(clientId, hook); vm.eventOccurred(new MessageAddedEvent(message, null)); context.assertIsSatisfied(); -- GitLab