Moved validation interfaces into respective managers.

This commit is contained in:
akwizgran
2016-03-08 16:18:52 +00:00
parent d308a30d05
commit efa06527c9
8 changed files with 44 additions and 39 deletions

View File

@@ -31,7 +31,21 @@ public interface MessageQueueManager {
*/ */
void registerIncomingMessageHook(ClientId c, IncomingQueueMessageHook hook); void registerIncomingMessageHook(ClientId c, IncomingQueueMessageHook hook);
interface QueueMessageValidator {
/**
* Validates the given message and returns its metadata if the message
* is valid, or null if the message is invalid.
*/
Metadata validateMessage(QueueMessage q, Group g);
}
interface IncomingQueueMessageHook { interface IncomingQueueMessageHook {
/**
* Called once for each incoming message that passes validation.
* Messages are passed to the hook in order.
*/
void incomingMessage(Transaction txn, QueueMessage q, Metadata meta) void incomingMessage(Transaction txn, QueueMessage q, Metadata meta)
throws DbException; throws DbException;
} }

View File

@@ -1,13 +0,0 @@
package org.briarproject.api.clients;
import org.briarproject.api.db.Metadata;
import org.briarproject.api.sync.Group;
public interface QueueMessageValidator {
/**
* Validates the given message and returns its metadata if the message
* is valid, or null if the message is invalid.
*/
Metadata validateMessage(QueueMessage q, Group g);
}

View File

@@ -1,12 +0,0 @@
package org.briarproject.api.sync;
import org.briarproject.api.db.Metadata;
public interface MessageValidator {
/**
* Validates the given message and returns its metadata if the message
* is valid, or null if the message is invalid.
*/
Metadata validateMessage(Message m, Group g);
}

View File

@@ -41,7 +41,20 @@ public interface ValidationManager {
*/ */
void registerIncomingMessageHook(ClientId c, IncomingMessageHook hook); void registerIncomingMessageHook(ClientId c, IncomingMessageHook hook);
interface MessageValidator {
/**
* Validates the given message and returns its metadata if the message
* is valid, or null if the message is invalid.
*/
Metadata validateMessage(Message m, Group g);
}
interface IncomingMessageHook { interface IncomingMessageHook {
/**
* Called once for each incoming message that passes validation.
*/
void incomingMessage(Transaction txn, Message m, Metadata meta) void incomingMessage(Transaction txn, Message m, Metadata meta)
throws DbException; throws DbException;
} }

View File

@@ -2,15 +2,15 @@ package org.briarproject.clients;
import org.briarproject.api.FormatException; import org.briarproject.api.FormatException;
import org.briarproject.api.clients.ClientHelper; import org.briarproject.api.clients.ClientHelper;
import org.briarproject.api.clients.MessageQueueManager.QueueMessageValidator;
import org.briarproject.api.clients.QueueMessage; import org.briarproject.api.clients.QueueMessage;
import org.briarproject.api.clients.QueueMessageValidator;
import org.briarproject.api.data.BdfDictionary; import org.briarproject.api.data.BdfDictionary;
import org.briarproject.api.data.BdfList; import org.briarproject.api.data.BdfList;
import org.briarproject.api.data.MetadataEncoder; import org.briarproject.api.data.MetadataEncoder;
import org.briarproject.api.db.Metadata; import org.briarproject.api.db.Metadata;
import org.briarproject.api.sync.Group; import org.briarproject.api.sync.Group;
import org.briarproject.api.sync.Message; import org.briarproject.api.sync.Message;
import org.briarproject.api.sync.MessageValidator; import org.briarproject.api.sync.ValidationManager.MessageValidator;
import org.briarproject.api.system.Clock; import org.briarproject.api.system.Clock;
import org.briarproject.util.StringUtils; import org.briarproject.util.StringUtils;
@@ -104,7 +104,7 @@ public abstract class BdfMessageValidator implements MessageValidator,
} }
protected void checkSize(BdfList list, int minSize, int maxSize) protected void checkSize(BdfList list, int minSize, int maxSize)
throws FormatException { throws FormatException {
if (list != null) { if (list != null) {
if (list.size() < minSize) throw new FormatException(); if (list.size() < minSize) throw new FormatException();
if (list.size() > maxSize) throw new FormatException(); if (list.size() > maxSize) throw new FormatException();

View File

@@ -5,7 +5,6 @@ import org.briarproject.api.clients.ClientHelper;
import org.briarproject.api.clients.MessageQueueManager; import org.briarproject.api.clients.MessageQueueManager;
import org.briarproject.api.clients.QueueMessage; import org.briarproject.api.clients.QueueMessage;
import org.briarproject.api.clients.QueueMessageFactory; import org.briarproject.api.clients.QueueMessageFactory;
import org.briarproject.api.clients.QueueMessageValidator;
import org.briarproject.api.data.BdfDictionary; import org.briarproject.api.data.BdfDictionary;
import org.briarproject.api.data.BdfList; import org.briarproject.api.data.BdfList;
import org.briarproject.api.db.DatabaseComponent; import org.briarproject.api.db.DatabaseComponent;
@@ -17,7 +16,6 @@ import org.briarproject.api.sync.Group;
import org.briarproject.api.sync.GroupId; import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.Message; import org.briarproject.api.sync.Message;
import org.briarproject.api.sync.MessageId; import org.briarproject.api.sync.MessageId;
import org.briarproject.api.sync.MessageValidator;
import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.sync.ValidationManager;
import org.briarproject.api.sync.ValidationManager.IncomingMessageHook; import org.briarproject.api.sync.ValidationManager.IncomingMessageHook;
import org.briarproject.util.ByteUtils; import org.briarproject.util.ByteUtils;
@@ -146,7 +144,7 @@ class MessageQueueManagerImpl implements MessageQueueManager {
} }
private static class DelegatingMessageValidator private static class DelegatingMessageValidator
implements MessageValidator { implements ValidationManager.MessageValidator {
private final QueueMessageValidator delegate; private final QueueMessageValidator delegate;

View File

@@ -20,7 +20,6 @@ import org.briarproject.api.sync.Group;
import org.briarproject.api.sync.GroupId; import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.Message; import org.briarproject.api.sync.Message;
import org.briarproject.api.sync.MessageId; import org.briarproject.api.sync.MessageId;
import org.briarproject.api.sync.MessageValidator;
import org.briarproject.api.sync.ValidationManager; import org.briarproject.api.sync.ValidationManager;
import org.briarproject.util.ByteUtils; import org.briarproject.util.ByteUtils;
@@ -74,7 +73,8 @@ class ValidationManagerImpl implements ValidationManager, Service,
} }
@Override @Override
public void registerIncomingMessageHook(ClientId c, IncomingMessageHook hook) { public void registerIncomingMessageHook(ClientId c,
IncomingMessageHook hook) {
hooks.put(c, hook); hooks.put(c, hook);
} }

View File

@@ -16,8 +16,8 @@ import org.briarproject.api.sync.Group;
import org.briarproject.api.sync.GroupId; import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.Message; import org.briarproject.api.sync.Message;
import org.briarproject.api.sync.MessageId; import org.briarproject.api.sync.MessageId;
import org.briarproject.api.sync.MessageValidator;
import org.briarproject.api.sync.ValidationManager.IncomingMessageHook; import org.briarproject.api.sync.ValidationManager.IncomingMessageHook;
import org.briarproject.api.sync.ValidationManager.MessageValidator;
import org.briarproject.util.ByteUtils; import org.briarproject.util.ByteUtils;
import org.jmock.Expectations; import org.jmock.Expectations;
import org.jmock.Mockery; import org.jmock.Mockery;
@@ -56,7 +56,8 @@ public class ValidationManagerImplTest extends BriarTestCase {
final Executor dbExecutor = new ImmediateExecutor(); final Executor dbExecutor = new ImmediateExecutor();
final Executor cryptoExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor();
final MessageValidator validator = context.mock(MessageValidator.class); final MessageValidator validator = context.mock(MessageValidator.class);
final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); final IncomingMessageHook hook =
context.mock(IncomingMessageHook.class);
final Transaction txn = new Transaction(null); final Transaction txn = new Transaction(null);
final Transaction txn1 = new Transaction(null); final Transaction txn1 = new Transaction(null);
final Transaction txn2 = new Transaction(null); final Transaction txn2 = new Transaction(null);
@@ -124,7 +125,8 @@ public class ValidationManagerImplTest extends BriarTestCase {
final Executor dbExecutor = new ImmediateExecutor(); final Executor dbExecutor = new ImmediateExecutor();
final Executor cryptoExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor();
final MessageValidator validator = context.mock(MessageValidator.class); final MessageValidator validator = context.mock(MessageValidator.class);
final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); final IncomingMessageHook hook =
context.mock(IncomingMessageHook.class);
final Transaction txn = new Transaction(null); final Transaction txn = new Transaction(null);
final Transaction txn1 = new Transaction(null); final Transaction txn1 = new Transaction(null);
final Transaction txn2 = new Transaction(null); final Transaction txn2 = new Transaction(null);
@@ -177,7 +179,8 @@ public class ValidationManagerImplTest extends BriarTestCase {
final Executor dbExecutor = new ImmediateExecutor(); final Executor dbExecutor = new ImmediateExecutor();
final Executor cryptoExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor();
final MessageValidator validator = context.mock(MessageValidator.class); final MessageValidator validator = context.mock(MessageValidator.class);
final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); final IncomingMessageHook hook =
context.mock(IncomingMessageHook.class);
final Transaction txn = new Transaction(null); final Transaction txn = new Transaction(null);
final Transaction txn1 = new Transaction(null); final Transaction txn1 = new Transaction(null);
final Transaction txn2 = new Transaction(null); final Transaction txn2 = new Transaction(null);
@@ -232,7 +235,8 @@ public class ValidationManagerImplTest extends BriarTestCase {
final Executor dbExecutor = new ImmediateExecutor(); final Executor dbExecutor = new ImmediateExecutor();
final Executor cryptoExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor();
final MessageValidator validator = context.mock(MessageValidator.class); final MessageValidator validator = context.mock(MessageValidator.class);
final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); final IncomingMessageHook hook =
context.mock(IncomingMessageHook.class);
final Transaction txn = new Transaction(null); final Transaction txn = new Transaction(null);
final Transaction txn1 = new Transaction(null); final Transaction txn1 = new Transaction(null);
context.checking(new Expectations() {{ context.checking(new Expectations() {{
@@ -272,7 +276,8 @@ public class ValidationManagerImplTest extends BriarTestCase {
final Executor dbExecutor = new ImmediateExecutor(); final Executor dbExecutor = new ImmediateExecutor();
final Executor cryptoExecutor = new ImmediateExecutor(); final Executor cryptoExecutor = new ImmediateExecutor();
final MessageValidator validator = context.mock(MessageValidator.class); final MessageValidator validator = context.mock(MessageValidator.class);
final IncomingMessageHook hook = context.mock(IncomingMessageHook.class); final IncomingMessageHook hook =
context.mock(IncomingMessageHook.class);
ValidationManagerImpl vm = new ValidationManagerImpl(db, dbExecutor, ValidationManagerImpl vm = new ValidationManagerImpl(db, dbExecutor,
cryptoExecutor); cryptoExecutor);