From 3c543b0d625d4a27c26049439e6046ea01ee2616 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Wed, 20 Jan 2016 15:03:10 +0000 Subject: [PATCH] Fixed crash caused by using DB too early in lifecycle. --- .../api/sync/ValidationManager.java | 2 +- .../org/briarproject/forum/ForumModule.java | 2 +- .../messaging/MessagingModule.java | 3 ++- .../src/org/briarproject/sync/SyncModule.java | 6 ++++-- .../sync/ValidationManagerImpl.java | 18 +++++++++++++++--- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/briar-api/src/org/briarproject/api/sync/ValidationManager.java b/briar-api/src/org/briarproject/api/sync/ValidationManager.java index 35fcea79c4..4de322bc0c 100644 --- a/briar-api/src/org/briarproject/api/sync/ValidationManager.java +++ b/briar-api/src/org/briarproject/api/sync/ValidationManager.java @@ -27,5 +27,5 @@ public interface ValidationManager { } /** Sets the message validator for the given client. */ - void setMessageValidator(ClientId c, MessageValidator v); + void registerMessageValidator(ClientId c, MessageValidator v); } diff --git a/briar-core/src/org/briarproject/forum/ForumModule.java b/briar-core/src/org/briarproject/forum/ForumModule.java index 94f0f829cd..3d82cdfe44 100644 --- a/briar-core/src/org/briarproject/forum/ForumModule.java +++ b/briar-core/src/org/briarproject/forum/ForumModule.java @@ -34,7 +34,7 @@ public class ForumModule extends AbstractModule { ForumPostValidator validator = new ForumPostValidator(crypto, bdfReaderFactory, bdfWriterFactory, authorReader, metadataEncoder, clock); - validationManager.setMessageValidator(forumManager.getClientId(), + validationManager.registerMessageValidator(forumManager.getClientId(), validator); return validator; } diff --git a/briar-core/src/org/briarproject/messaging/MessagingModule.java b/briar-core/src/org/briarproject/messaging/MessagingModule.java index 1854afcc76..0e55193e04 100644 --- a/briar-core/src/org/briarproject/messaging/MessagingModule.java +++ b/briar-core/src/org/briarproject/messaging/MessagingModule.java @@ -27,7 +27,8 @@ public class MessagingModule extends AbstractModule { Clock clock) { PrivateMessageValidator validator = new PrivateMessageValidator( bdfReaderFactory, metadataEncoder, clock); - validationManager.setMessageValidator(messagingManager.getClientId(), + validationManager.registerMessageValidator( + messagingManager.getClientId(), validator); return validator; } diff --git a/briar-core/src/org/briarproject/sync/SyncModule.java b/briar-core/src/org/briarproject/sync/SyncModule.java index 77633c7d2f..f90c6c1ecc 100644 --- a/briar-core/src/org/briarproject/sync/SyncModule.java +++ b/briar-core/src/org/briarproject/sync/SyncModule.java @@ -7,6 +7,7 @@ import org.briarproject.api.data.ObjectReader; import org.briarproject.api.event.EventBus; import org.briarproject.api.identity.Author; import org.briarproject.api.identity.AuthorFactory; +import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.sync.Group; import org.briarproject.api.sync.GroupFactory; import org.briarproject.api.sync.MessageFactory; @@ -48,8 +49,9 @@ public class SyncModule extends AbstractModule { } @Provides @Singleton - ValidationManager getValidationManager(EventBus eventBus, - ValidationManagerImpl validationManager) { + ValidationManager getValidationManager(LifecycleManager lifecycleManager, + EventBus eventBus, ValidationManagerImpl validationManager) { + lifecycleManager.register(validationManager); eventBus.addListener(validationManager); return validationManager; } diff --git a/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java b/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java index 9f977ef15b..28e248ae42 100644 --- a/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java +++ b/briar-core/src/org/briarproject/sync/ValidationManagerImpl.java @@ -13,6 +13,7 @@ import org.briarproject.api.db.NoSuchSubscriptionException; import org.briarproject.api.event.Event; import org.briarproject.api.event.EventListener; import org.briarproject.api.event.MessageAddedEvent; +import org.briarproject.api.lifecycle.Service; import org.briarproject.api.sync.ClientId; import org.briarproject.api.sync.GroupId; import org.briarproject.api.sync.Message; @@ -29,7 +30,8 @@ import java.util.logging.Logger; import static java.util.logging.Level.WARNING; import static org.briarproject.api.sync.SyncConstants.MESSAGE_HEADER_LENGTH; -class ValidationManagerImpl implements ValidationManager, EventListener { +class ValidationManagerImpl implements ValidationManager, Service, + EventListener { private static final Logger LOG = Logger.getLogger(ValidationManagerImpl.class.getName()); @@ -50,9 +52,19 @@ class ValidationManagerImpl implements ValidationManager, EventListener { } @Override - public void setMessageValidator(ClientId c, MessageValidator v) { + public boolean start() { + for (ClientId c : validators.keySet()) getMessagesToValidate(c); + return true; + } + + @Override + public boolean stop() { + return true; + } + + @Override + public void registerMessageValidator(ClientId c, MessageValidator v) { validators.put(c, v); - getMessagesToValidate(c); } private void getMessagesToValidate(final ClientId c) { -- GitLab