Use client version to register validators, delivery hooks.

This commit is contained in:
akwizgran
2018-04-13 16:11:03 +01:00
parent 1197d65d8d
commit 114044ee5f
13 changed files with 88 additions and 62 deletions

View File

@@ -35,13 +35,15 @@ 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, int clientVersion,
MessageValidator v);
/** /**
* Sets the incoming message hook for the given client. The hook will be * Sets the incoming message hook for the given client. The hook will be
* called once for each incoming message that passes validation. * called once for each incoming message that passes validation.
*/ */
void registerIncomingMessageHook(ClientId c, IncomingMessageHook hook); void registerIncomingMessageHook(ClientId c, int clientVersion,
IncomingMessageHook hook);
interface MessageValidator { interface MessageValidator {

View File

@@ -15,6 +15,7 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import static org.briarproject.bramble.api.properties.TransportPropertyManager.CLIENT_ID; import static org.briarproject.bramble.api.properties.TransportPropertyManager.CLIENT_ID;
import static org.briarproject.bramble.api.properties.TransportPropertyManager.CLIENT_VERSION;
@Module @Module
public class PropertiesModule { public class PropertiesModule {
@@ -33,7 +34,8 @@ public class PropertiesModule {
Clock clock) { Clock clock) {
TransportPropertyValidator validator = new TransportPropertyValidator( TransportPropertyValidator validator = new TransportPropertyValidator(
clientHelper, metadataEncoder, clock); clientHelper, metadataEncoder, clock);
validationManager.registerMessageValidator(CLIENT_ID, validator); validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
validator);
return validator; return validator;
} }
@@ -44,7 +46,7 @@ public class PropertiesModule {
ValidationManager validationManager, ContactManager contactManager, ValidationManager validationManager, ContactManager contactManager,
TransportPropertyManagerImpl transportPropertyManager) { TransportPropertyManagerImpl transportPropertyManager) {
lifecycleManager.registerClient(transportPropertyManager); lifecycleManager.registerClient(transportPropertyManager);
validationManager.registerIncomingMessageHook(CLIENT_ID, validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
transportPropertyManager); transportPropertyManager);
contactManager.registerContactHook(transportPropertyManager); contactManager.registerContactHook(transportPropertyManager);
return transportPropertyManager; return transportPropertyManager;

View File

@@ -38,5 +38,10 @@ class ClientVersion implements Comparable<ClientVersion> {
if (compare != 0) return compare; if (compare != 0) return compare;
return clientVersion - c.clientVersion; return clientVersion - c.clientVersion;
} }
@Override
public String toString() {
return clientId.getString() + ":" + clientVersion;
}
} }

View File

@@ -28,6 +28,7 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import static org.briarproject.bramble.api.sync.ClientVersioningManager.CLIENT_ID; import static org.briarproject.bramble.api.sync.ClientVersioningManager.CLIENT_ID;
import static org.briarproject.bramble.api.sync.ClientVersioningManager.CLIENT_VERSION;
@Module @Module
public class SyncModule { public class SyncModule {
@@ -110,7 +111,7 @@ public class SyncModule {
lifecycleManager.registerClient(clientVersioningManager); lifecycleManager.registerClient(clientVersioningManager);
lifecycleManager.registerService(clientVersioningManager); lifecycleManager.registerService(clientVersioningManager);
contactManager.registerContactHook(clientVersioningManager); contactManager.registerContactHook(clientVersioningManager);
validationManager.registerIncomingMessageHook(CLIENT_ID, validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
clientVersioningManager); clientVersioningManager);
return clientVersioningManager; return clientVersioningManager;
} }
@@ -122,7 +123,8 @@ public class SyncModule {
Clock clock, ValidationManager validationManager) { Clock clock, ValidationManager validationManager) {
ClientVersioningValidator validator = new ClientVersioningValidator( ClientVersioningValidator validator = new ClientVersioningValidator(
clientHelper, metadataEncoder, clock); clientHelper, metadataEncoder, clock);
validationManager.registerMessageValidator(CLIENT_ID, validator); validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
validator);
return validator; return validator;
} }
} }

View File

@@ -51,8 +51,8 @@ class ValidationManagerImpl implements ValidationManager, Service,
private final DatabaseComponent db; private final DatabaseComponent db;
private final Executor dbExecutor, validationExecutor; private final Executor dbExecutor, validationExecutor;
private final MessageFactory messageFactory; private final MessageFactory messageFactory;
private final Map<ClientId, MessageValidator> validators; private final Map<ClientVersion, MessageValidator> validators;
private final Map<ClientId, IncomingMessageHook> hooks; private final Map<ClientVersion, IncomingMessageHook> hooks;
private final AtomicBoolean used = new AtomicBoolean(false); private final AtomicBoolean used = new AtomicBoolean(false);
@Inject @Inject
@@ -81,14 +81,15 @@ class ValidationManagerImpl implements ValidationManager, Service,
} }
@Override @Override
public void registerMessageValidator(ClientId c, MessageValidator v) { public void registerMessageValidator(ClientId c, int clientVersion,
validators.put(c, v); MessageValidator v) {
validators.put(new ClientVersion(c, clientVersion), v);
} }
@Override @Override
public void registerIncomingMessageHook(ClientId c, public void registerIncomingMessageHook(ClientId c, int clientVersion,
IncomingMessageHook hook) { IncomingMessageHook hook) {
hooks.put(c, hook); hooks.put(new ClientVersion(c, clientVersion), hook);
} }
private void validateOutstandingMessagesAsync() { private void validateOutstandingMessagesAsync() {
@@ -199,9 +200,11 @@ class ValidationManagerImpl implements ValidationManager, Service,
Message m = messageFactory.createMessage(id, raw); Message m = messageFactory.createMessage(id, raw);
Group g = db.getGroup(txn, m.getGroupId()); Group g = db.getGroup(txn, m.getGroupId());
ClientId c = g.getClientId(); ClientId c = g.getClientId();
int clientVersion = g.getClientVersion();
Metadata meta = Metadata meta =
db.getMessageMetadataForValidator(txn, id); db.getMessageMetadataForValidator(txn, id);
DeliveryResult result = deliverMessage(txn, m, c, meta); DeliveryResult result =
deliverMessage(txn, m, c, clientVersion, meta);
if (result.valid) { if (result.valid) {
pending.addAll(getPendingDependents(txn, id)); pending.addAll(getPendingDependents(txn, id));
if (result.share) { if (result.share) {
@@ -237,14 +240,16 @@ class ValidationManagerImpl implements ValidationManager, Service,
@ValidationExecutor @ValidationExecutor
private void validateMessage(Message m, Group g) { private void validateMessage(Message m, Group g) {
MessageValidator v = validators.get(g.getClientId()); ClientVersion cv =
new ClientVersion(g.getClientId(), g.getClientVersion());
MessageValidator v = validators.get(cv);
if (v == null) { if (v == null) {
if (LOG.isLoggable(WARNING)) if (LOG.isLoggable(WARNING)) LOG.warning("No validator for " + cv);
LOG.warning("No validator for " + g.getClientId().getString());
} else { } else {
try { try {
MessageContext context = v.validateMessage(m, g); MessageContext context = v.validateMessage(m, g);
storeMessageContextAsync(m, g.getClientId(), context); storeMessageContextAsync(m, g.getClientId(),
g.getClientVersion(), context);
} catch (InvalidMessageException e) { } catch (InvalidMessageException e) {
if (LOG.isLoggable(INFO)) if (LOG.isLoggable(INFO))
LOG.log(INFO, e.toString(), e); LOG.log(INFO, e.toString(), e);
@@ -256,12 +261,13 @@ class ValidationManagerImpl implements ValidationManager, Service,
} }
private void storeMessageContextAsync(Message m, ClientId c, private void storeMessageContextAsync(Message m, ClientId c,
MessageContext result) { int clientVersion, MessageContext result) {
dbExecutor.execute(() -> storeMessageContext(m, c, result)); dbExecutor.execute(() ->
storeMessageContext(m, c, clientVersion, result));
} }
@DatabaseExecutor @DatabaseExecutor
private void storeMessageContext(Message m, ClientId c, private void storeMessageContext(Message m, ClientId c, int clientVersion,
MessageContext context) { MessageContext context) {
try { try {
MessageId id = m.getId(); MessageId id = m.getId();
@@ -292,7 +298,8 @@ class ValidationManagerImpl implements ValidationManager, Service,
Metadata meta = context.getMetadata(); Metadata meta = context.getMetadata();
db.mergeMessageMetadata(txn, id, meta); db.mergeMessageMetadata(txn, id, meta);
if (allDelivered) { if (allDelivered) {
DeliveryResult result = deliverMessage(txn, m, c, meta); DeliveryResult result =
deliverMessage(txn, m, c, clientVersion, meta);
if (result.valid) { if (result.valid) {
pending = getPendingDependents(txn, id); pending = getPendingDependents(txn, id);
if (result.share) { if (result.share) {
@@ -324,10 +331,11 @@ class ValidationManagerImpl implements ValidationManager, Service,
@DatabaseExecutor @DatabaseExecutor
private DeliveryResult deliverMessage(Transaction txn, Message m, private DeliveryResult deliverMessage(Transaction txn, Message m,
ClientId c, Metadata meta) throws DbException { ClientId c, int clientVersion, Metadata meta) throws DbException {
// Deliver the message to the client if it's registered a hook // Deliver the message to the client if it's registered a hook
boolean shareMsg = false; boolean shareMsg = false;
IncomingMessageHook hook = hooks.get(c); ClientVersion cv = new ClientVersion(c, clientVersion);
IncomingMessageHook hook = hooks.get(cv);
if (hook != null) { if (hook != null) {
try { try {
shareMsg = hook.incomingMessage(txn, m, meta); shareMsg = hook.incomingMessage(txn, m, meta);

View File

@@ -53,10 +53,11 @@ public class ValidationManagerImplTest extends BrambleMockTestCase {
private final Executor dbExecutor = new ImmediateExecutor(); private final Executor dbExecutor = new ImmediateExecutor();
private final Executor validationExecutor = new ImmediateExecutor(); private final Executor validationExecutor = new ImmediateExecutor();
private final ClientId clientId = getClientId(); private final ClientId clientId = getClientId();
private final int clientVersion = 123;
private final MessageId messageId = new MessageId(getRandomId()); private final MessageId messageId = new MessageId(getRandomId());
private final MessageId messageId1 = new MessageId(getRandomId()); private final MessageId messageId1 = new MessageId(getRandomId());
private final MessageId messageId2 = new MessageId(getRandomId()); private final MessageId messageId2 = new MessageId(getRandomId());
private final Group group = getGroup(clientId, 123); private final Group group = getGroup(clientId, clientVersion);
private final GroupId groupId = group.getId(); private final GroupId groupId = group.getId();
private final long timestamp = System.currentTimeMillis(); private final long timestamp = System.currentTimeMillis();
private final byte[] raw = new byte[123]; private final byte[] raw = new byte[123];
@@ -85,8 +86,8 @@ public class ValidationManagerImplTest extends BrambleMockTestCase {
public void setUp() { public void setUp() {
vm = new ValidationManagerImpl(db, dbExecutor, validationExecutor, vm = new ValidationManagerImpl(db, dbExecutor, validationExecutor,
messageFactory); messageFactory);
vm.registerMessageValidator(clientId, validator); vm.registerMessageValidator(clientId, clientVersion, validator);
vm.registerIncomingMessageHook(clientId, hook); vm.registerIncomingMessageHook(clientId, clientVersion, hook);
} }
@Test @Test

View File

@@ -18,7 +18,8 @@ import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import static org.briarproject.briar.blog.BlogManagerImpl.CLIENT_ID; import static org.briarproject.briar.api.blog.BlogManager.CLIENT_ID;
import static org.briarproject.briar.api.blog.BlogManager.CLIENT_VERSION;
@Module @Module
public class BlogModule { public class BlogModule {
@@ -35,10 +36,10 @@ public class BlogModule {
BlogManager provideBlogManager(BlogManagerImpl blogManager, BlogManager provideBlogManager(BlogManagerImpl blogManager,
LifecycleManager lifecycleManager, ContactManager contactManager, LifecycleManager lifecycleManager, ContactManager contactManager,
ValidationManager validationManager) { ValidationManager validationManager) {
lifecycleManager.registerClient(blogManager); lifecycleManager.registerClient(blogManager);
contactManager.registerContactHook(blogManager); contactManager.registerContactHook(blogManager);
validationManager.registerIncomingMessageHook(CLIENT_ID, blogManager); validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
blogManager);
return blogManager; return blogManager;
} }
@@ -60,12 +61,11 @@ public class BlogModule {
MessageFactory messageFactory, BlogFactory blogFactory, MessageFactory messageFactory, BlogFactory blogFactory,
ClientHelper clientHelper, MetadataEncoder metadataEncoder, ClientHelper clientHelper, MetadataEncoder metadataEncoder,
Clock clock) { Clock clock) {
BlogPostValidator validator = new BlogPostValidator(groupFactory, BlogPostValidator validator = new BlogPostValidator(groupFactory,
messageFactory, blogFactory, clientHelper, metadataEncoder, messageFactory, blogFactory, clientHelper, metadataEncoder,
clock); clock);
validationManager.registerMessageValidator(CLIENT_ID, validator); validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
validator);
return validator; return validator;
} }

View File

@@ -15,6 +15,7 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import static org.briarproject.briar.api.forum.ForumManager.CLIENT_ID; import static org.briarproject.briar.api.forum.ForumManager.CLIENT_ID;
import static org.briarproject.briar.api.forum.ForumManager.CLIENT_VERSION;
@Module @Module
public class ForumModule { public class ForumModule {
@@ -30,7 +31,7 @@ public class ForumModule {
@Singleton @Singleton
ForumManager provideForumManager(ForumManagerImpl forumManager, ForumManager provideForumManager(ForumManagerImpl forumManager,
ValidationManager validationManager) { ValidationManager validationManager) {
validationManager.registerIncomingMessageHook(CLIENT_ID, validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
forumManager); forumManager);
return forumManager; return forumManager;
} }
@@ -53,7 +54,8 @@ public class ForumModule {
MetadataEncoder metadataEncoder, Clock clock) { MetadataEncoder metadataEncoder, Clock clock) {
ForumPostValidator validator = new ForumPostValidator(clientHelper, ForumPostValidator validator = new ForumPostValidator(clientHelper,
metadataEncoder, clock); metadataEncoder, clock);
validationManager.registerMessageValidator(CLIENT_ID, validator); validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
validator);
return validator; return validator;
} }

View File

@@ -16,6 +16,7 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import static org.briarproject.briar.api.introduction.IntroductionManager.CLIENT_ID; import static org.briarproject.briar.api.introduction.IntroductionManager.CLIENT_ID;
import static org.briarproject.briar.api.introduction.IntroductionManager.CLIENT_VERSION;
@Module @Module
public class IntroductionModule { public class IntroductionModule {
@@ -32,13 +33,11 @@ public class IntroductionModule {
IntroductionValidator provideValidator(ValidationManager validationManager, IntroductionValidator provideValidator(ValidationManager validationManager,
MessageEncoder messageEncoder, MetadataEncoder metadataEncoder, MessageEncoder messageEncoder, MetadataEncoder metadataEncoder,
ClientHelper clientHelper, Clock clock) { ClientHelper clientHelper, Clock clock) {
IntroductionValidator introductionValidator = IntroductionValidator introductionValidator =
new IntroductionValidator(messageEncoder, clientHelper, new IntroductionValidator(messageEncoder, clientHelper,
metadataEncoder, clock); metadataEncoder, clock);
validationManager.registerMessageValidator(CLIENT_ID, validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
introductionValidator); introductionValidator);
return introductionValidator; return introductionValidator;
} }
@@ -52,9 +51,8 @@ public class IntroductionModule {
lifecycleManager.registerClient(introductionManager); lifecycleManager.registerClient(introductionManager);
contactManager.registerContactHook(introductionManager); contactManager.registerContactHook(introductionManager);
validationManager.registerIncomingMessageHook(CLIENT_ID, validationManager.registerIncomingMessageHook(CLIENT_ID,
introductionManager); CLIENT_VERSION, introductionManager);
conversationManager.registerConversationClient(introductionManager); conversationManager.registerConversationClient(introductionManager);
return introductionManager; return introductionManager;
} }

View File

@@ -16,7 +16,8 @@ import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import static org.briarproject.briar.messaging.MessagingManagerImpl.CLIENT_ID; import static org.briarproject.briar.api.messaging.MessagingManager.CLIENT_ID;
import static org.briarproject.briar.api.messaging.MessagingManager.CLIENT_VERSION;
@Module @Module
public class MessagingModule { public class MessagingModule {
@@ -43,7 +44,8 @@ public class MessagingModule {
Clock clock) { Clock clock) {
PrivateMessageValidator validator = new PrivateMessageValidator( PrivateMessageValidator validator = new PrivateMessageValidator(
clientHelper, metadataEncoder, clock); clientHelper, metadataEncoder, clock);
validationManager.registerMessageValidator(CLIENT_ID, validator); validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
validator);
return validator; return validator;
} }
@@ -55,8 +57,8 @@ public class MessagingModule {
MessagingManagerImpl messagingManager) { MessagingManagerImpl messagingManager) {
lifecycleManager.registerClient(messagingManager); lifecycleManager.registerClient(messagingManager);
contactManager.registerContactHook(messagingManager); contactManager.registerContactHook(messagingManager);
validationManager validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
.registerIncomingMessageHook(CLIENT_ID, messagingManager); messagingManager);
conversationManager.registerConversationClient(messagingManager); conversationManager.registerConversationClient(messagingManager);
return messagingManager; return messagingManager;
} }

View File

@@ -16,6 +16,7 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import static org.briarproject.briar.api.privategroup.PrivateGroupManager.CLIENT_ID; import static org.briarproject.briar.api.privategroup.PrivateGroupManager.CLIENT_ID;
import static org.briarproject.briar.api.privategroup.PrivateGroupManager.CLIENT_VERSION;
@Module @Module
public class PrivateGroupModule { public class PrivateGroupModule {
@@ -32,7 +33,8 @@ public class PrivateGroupModule {
PrivateGroupManager provideGroupManager( PrivateGroupManager provideGroupManager(
PrivateGroupManagerImpl groupManager, PrivateGroupManagerImpl groupManager,
ValidationManager validationManager) { ValidationManager validationManager) {
validationManager.registerIncomingMessageHook(CLIENT_ID, groupManager); validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
groupManager);
return groupManager; return groupManager;
} }
@@ -58,7 +60,8 @@ public class PrivateGroupModule {
GroupMessageValidator validator = new GroupMessageValidator( GroupMessageValidator validator = new GroupMessageValidator(
privateGroupFactory, clientHelper, metadataEncoder, clock, privateGroupFactory, clientHelper, metadataEncoder, clock,
groupInvitationFactory); groupInvitationFactory);
validationManager.registerMessageValidator(CLIENT_ID, validator); validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
validator);
return validator; return validator;
} }

View File

@@ -19,6 +19,7 @@ import dagger.Module;
import dagger.Provides; import dagger.Provides;
import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager.CLIENT_ID; import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager.CLIENT_ID;
import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager.CLIENT_VERSION;
@Module @Module
public class GroupInvitationModule { public class GroupInvitationModule {
@@ -39,7 +40,7 @@ public class GroupInvitationModule {
PrivateGroupManager privateGroupManager, PrivateGroupManager privateGroupManager,
ConversationManager conversationManager) { ConversationManager conversationManager) {
lifecycleManager.registerClient(groupInvitationManager); lifecycleManager.registerClient(groupInvitationManager);
validationManager.registerIncomingMessageHook(CLIENT_ID, validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
groupInvitationManager); groupInvitationManager);
contactManager.registerContactHook(groupInvitationManager); contactManager.registerContactHook(groupInvitationManager);
privateGroupManager.registerPrivateGroupHook(groupInvitationManager); privateGroupManager.registerPrivateGroupHook(groupInvitationManager);
@@ -57,7 +58,8 @@ public class GroupInvitationModule {
GroupInvitationValidator validator = new GroupInvitationValidator( GroupInvitationValidator validator = new GroupInvitationValidator(
clientHelper, metadataEncoder, clock, privateGroupFactory, clientHelper, metadataEncoder, clock, privateGroupFactory,
messageEncoder); messageEncoder);
validationManager.registerMessageValidator(CLIENT_ID, validator); validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
validator);
return validator; return validator;
} }

View File

@@ -59,11 +59,11 @@ public class SharingModule {
ValidationManager validationManager, MessageEncoder messageEncoder, ValidationManager validationManager, MessageEncoder messageEncoder,
ClientHelper clientHelper, MetadataEncoder metadataEncoder, ClientHelper clientHelper, MetadataEncoder metadataEncoder,
Clock clock, BlogFactory blogFactory) { Clock clock, BlogFactory blogFactory) {
BlogSharingValidator validator = BlogSharingValidator validator = new BlogSharingValidator(
new BlogSharingValidator(messageEncoder, clientHelper, messageEncoder, clientHelper, metadataEncoder, clock,
metadataEncoder, clock, blogFactory); blogFactory);
validationManager.registerMessageValidator(BlogSharingManager.CLIENT_ID, validationManager.registerMessageValidator(BlogSharingManager.CLIENT_ID,
validator); BlogSharingManager.CLIENT_VERSION, validator);
return validator; return validator;
} }
@@ -77,10 +77,10 @@ public class SharingModule {
lifecycleManager.registerClient(blogSharingManager); lifecycleManager.registerClient(blogSharingManager);
contactManager.registerContactHook(blogSharingManager); contactManager.registerContactHook(blogSharingManager);
validationManager.registerIncomingMessageHook( validationManager.registerIncomingMessageHook(
BlogSharingManager.CLIENT_ID, blogSharingManager); BlogSharingManager.CLIENT_ID, BlogSharingManager.CLIENT_VERSION,
blogSharingManager);
conversationManager.registerConversationClient(blogSharingManager); conversationManager.registerConversationClient(blogSharingManager);
blogManager.registerRemoveBlogHook(blogSharingManager); blogManager.registerRemoveBlogHook(blogSharingManager);
return blogSharingManager; return blogSharingManager;
} }
@@ -108,12 +108,12 @@ public class SharingModule {
ValidationManager validationManager, MessageEncoder messageEncoder, ValidationManager validationManager, MessageEncoder messageEncoder,
ClientHelper clientHelper, MetadataEncoder metadataEncoder, ClientHelper clientHelper, MetadataEncoder metadataEncoder,
Clock clock, ForumFactory forumFactory) { Clock clock, ForumFactory forumFactory) {
ForumSharingValidator validator = ForumSharingValidator validator = new ForumSharingValidator(
new ForumSharingValidator(messageEncoder, clientHelper, messageEncoder, clientHelper, metadataEncoder, clock,
metadataEncoder, clock, forumFactory); forumFactory);
validationManager validationManager.registerMessageValidator(
.registerMessageValidator(ForumSharingManager.CLIENT_ID, ForumSharingManager.CLIENT_ID,
validator); ForumSharingManager.CLIENT_VERSION, validator);
return validator; return validator;
} }
@@ -124,14 +124,13 @@ public class SharingModule {
ValidationManager validationManager, ValidationManager validationManager,
ConversationManager conversationManager, ForumManager forumManager, ConversationManager conversationManager, ForumManager forumManager,
ForumSharingManagerImpl forumSharingManager) { ForumSharingManagerImpl forumSharingManager) {
lifecycleManager.registerClient(forumSharingManager); lifecycleManager.registerClient(forumSharingManager);
contactManager.registerContactHook(forumSharingManager); contactManager.registerContactHook(forumSharingManager);
validationManager.registerIncomingMessageHook( validationManager.registerIncomingMessageHook(
ForumSharingManager.CLIENT_ID, forumSharingManager); ForumSharingManager.CLIENT_ID,
ForumSharingManager.CLIENT_VERSION, forumSharingManager);
conversationManager.registerConversationClient(forumSharingManager); conversationManager.registerConversationClient(forumSharingManager);
forumManager.registerRemoveForumHook(forumSharingManager); forumManager.registerRemoveForumHook(forumSharingManager);
return forumSharingManager; return forumSharingManager;
} }