Skip to content
Snippets Groups Projects
Unverified Commit 741571bd authored by akwizgran's avatar akwizgran
Browse files

Run hooks when messages are validated.

parent d75c51ec
No related branches found
No related tags found
No related merge requests found
package org.briarproject.api.sync; package org.briarproject.api.sync;
import org.briarproject.api.db.Metadata;
/** /**
* Responsible for managing message validators and passing them messages to * Responsible for managing message validators and passing them messages to
* validate. * validate.
...@@ -28,4 +30,11 @@ public interface ValidationManager { ...@@ -28,4 +30,11 @@ 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); void registerMessageValidator(ClientId c, MessageValidator v);
/** Registers a hook to be called whenever a message is validated. */
void registerValidationHook(ValidationHook hook);
interface ValidationHook {
void validatingMessage(Message m, ClientId c, Metadata meta);
}
} }
...@@ -22,8 +22,10 @@ import org.briarproject.api.sync.MessageValidator; ...@@ -22,8 +22,10 @@ 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;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.logging.Logger; import java.util.logging.Logger;
...@@ -40,6 +42,7 @@ class ValidationManagerImpl implements ValidationManager, Service, ...@@ -40,6 +42,7 @@ class ValidationManagerImpl implements ValidationManager, Service,
private final Executor dbExecutor; private final Executor dbExecutor;
private final Executor cryptoExecutor; private final Executor cryptoExecutor;
private final Map<ClientId, MessageValidator> validators; private final Map<ClientId, MessageValidator> validators;
private final List<ValidationHook> hooks;
@Inject @Inject
ValidationManagerImpl(DatabaseComponent db, ValidationManagerImpl(DatabaseComponent db,
...@@ -49,6 +52,7 @@ class ValidationManagerImpl implements ValidationManager, Service, ...@@ -49,6 +52,7 @@ class ValidationManagerImpl implements ValidationManager, Service,
this.dbExecutor = dbExecutor; this.dbExecutor = dbExecutor;
this.cryptoExecutor = cryptoExecutor; this.cryptoExecutor = cryptoExecutor;
validators = new ConcurrentHashMap<ClientId, MessageValidator>(); validators = new ConcurrentHashMap<ClientId, MessageValidator>();
hooks = new CopyOnWriteArrayList<ValidationHook>();
} }
@Override @Override
...@@ -67,6 +71,11 @@ class ValidationManagerImpl implements ValidationManager, Service, ...@@ -67,6 +71,11 @@ class ValidationManagerImpl implements ValidationManager, Service,
validators.put(c, v); validators.put(c, v);
} }
@Override
public void registerValidationHook(ValidationHook hook) {
hooks.add(hook);
}
private void getMessagesToValidate(final ClientId c) { private void getMessagesToValidate(final ClientId c) {
dbExecutor.execute(new Runnable() { dbExecutor.execute(new Runnable() {
public void run() { public void run() {
...@@ -119,6 +128,8 @@ class ValidationManagerImpl implements ValidationManager, Service, ...@@ -119,6 +128,8 @@ class ValidationManagerImpl implements ValidationManager, Service,
if (meta == null) { if (meta == null) {
db.setMessageValid(m, c, false); db.setMessageValid(m, c, false);
} else { } else {
for (ValidationHook hook : hooks)
hook.validatingMessage(m, c, meta);
db.mergeMessageMetadata(m.getId(), meta); db.mergeMessageMetadata(m.getId(), meta);
db.setMessageValid(m, c, true); db.setMessageValid(m, c, true);
} }
......
package org.briarproject.sync;
import org.briarproject.BriarTestCase;
import org.junit.Test;
import static org.junit.Assert.fail;
public class ValidationManagerImplTest extends BriarTestCase {
@Test
public void testUnitTestsExist() {
fail(); // FIXME: Write tests
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment