Modified the project structure, removed module extension and went instead for a non-complete core dependency graph

This commit is contained in:
Ernir Erlingsson
2016-03-13 22:31:14 +01:00
parent 7670bc48ea
commit 4da63b3800
33 changed files with 314 additions and 398 deletions

View File

@@ -1,103 +0,0 @@
package org.briarproject;
import org.briarproject.api.android.PlatformExecutor;
import org.briarproject.api.android.ReferenceManager;
import org.briarproject.api.contact.ContactManager;
import org.briarproject.api.crypto.CryptoComponent;
import org.briarproject.api.crypto.CryptoExecutor;
import org.briarproject.api.crypto.PasswordStrengthEstimator;
import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.api.db.DatabaseExecutor;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.forum.ForumManager;
import org.briarproject.api.forum.ForumPostFactory;
import org.briarproject.api.forum.ForumSharingManager;
import org.briarproject.api.identity.AuthorFactory;
import org.briarproject.api.identity.IdentityManager;
import org.briarproject.api.invitation.InvitationTaskFactory;
import org.briarproject.api.lifecycle.IoExecutor;
import org.briarproject.api.lifecycle.LifecycleManager;
import org.briarproject.api.messaging.MessagingManager;
import org.briarproject.api.messaging.PrivateMessageFactory;
import org.briarproject.api.plugins.ConnectionRegistry;
import org.briarproject.api.plugins.PluginManager;
import org.briarproject.api.properties.TransportPropertyManager;
import org.briarproject.api.settings.SettingsManager;
import org.briarproject.api.sync.ValidationManager;
import org.briarproject.api.transport.KeyManager;
import org.briarproject.clients.ClientsModule;
import org.briarproject.contact.ContactModule;
import org.briarproject.crypto.CryptoModule;
import org.briarproject.data.DataModule;
import org.briarproject.db.DatabaseModule;
import org.briarproject.event.EventModule;
import org.briarproject.forum.ForumModule;
import org.briarproject.identity.IdentityModule;
import org.briarproject.invitation.InvitationModule;
import org.briarproject.lifecycle.LifecycleModule;
import org.briarproject.messaging.MessagingModule;
import org.briarproject.messaging.PrivateMessageValidator;
import org.briarproject.plugins.PluginsModule;
import org.briarproject.properties.PropertiesModule;
import org.briarproject.properties.TransportPropertyValidator;
import org.briarproject.reliability.ReliabilityModule;
import org.briarproject.settings.SettingsModule;
import org.briarproject.sync.SyncModule;
import org.briarproject.system.SystemModule;
import org.briarproject.transport.TransportModule;
import java.util.concurrent.Executor;
import javax.inject.Singleton;
import dagger.Component;
@Singleton
@Component(modules = {DatabaseModule.class,
CryptoModule.class, LifecycleModule.class, PlatformModule.class,
ReliabilityModule.class, MessagingModule.class,
InvitationModule.class, ForumModule.class, IdentityModule.class,
EventModule.class, DataModule.class, ContactModule.class,
PropertiesModule.class, TransportModule.class, SyncModule.class,
SettingsModule.class, ClientsModule.class, SystemModule.class,
PluginsModule.class})
public interface CoreComponent {
@IoExecutor
Executor ioExecutor();
ContactManager contactManager();
@CryptoExecutor Executor cryptoExecutor();
DatabaseConfig databaseConfig();
PasswordStrengthEstimator passwordStrengthEstimator();
CryptoComponent cryptoComponent();
@DatabaseExecutor Executor dbExecutor();
LifecycleManager lifecycleManager();
AuthorFactory authFactory();
EventBus eventBus();
KeyManager keyManager();
ValidationManager validationManager();
ForumManager forumManager();
IdentityManager identityManager();
PluginManager pluginManager();
SettingsManager settingsManater();
InvitationTaskFactory invitationTaskFactory();
MessagingManager messagingManager();
TransportPropertyManager transportPropertyManager();
ConnectionRegistry connectionRegistry();
ForumSharingManager forumSharingManager();
PrivateMessageFactory privateMessageFactory();
ForumPostFactory forumPostFactory();
PrivateMessageValidator privateMessageValidator();
TransportPropertyValidator transportPropertyValidator();
PlatformExecutor platformExecutor();
// Eager singletons
void inject(ContactModule.EagerSingletons init);
void inject(CryptoModule.EagerSingletons init);
void inject(DatabaseModule.EagerSingletons init);
void inject(ForumModule.EagerSingletons init);
void inject(LifecycleModule.EagerSingletons init);
void inject(MessagingModule.EagerSingletons init);
void inject(PluginsModule.EagerSingletons init);
void inject(PropertiesModule.EagerSingletons init);
void inject(SyncModule.EagerSingletons init);
void inject(TransportModule.EagerSingletons init);
}

View File

@@ -11,18 +11,16 @@ import org.briarproject.properties.PropertiesModule;
import org.briarproject.sync.SyncModule;
import org.briarproject.transport.TransportModule;
public class CoreEagerSingletons {
public interface CoreEagerSingletons {
void inject(ContactModule.EagerSingletons init);
void inject(CryptoModule.EagerSingletons init);
void inject(DatabaseModule.EagerSingletons init);
void inject(ForumModule.EagerSingletons init);
void inject(LifecycleModule.EagerSingletons init);
void inject(MessagingModule.EagerSingletons init);
void inject(PluginsModule.EagerSingletons init);
void inject(PropertiesModule.EagerSingletons init);
void inject(SyncModule.EagerSingletons init);
void inject(TransportModule.EagerSingletons init);
public static void initEagerSingletons(CoreComponent c) {
c.inject(new ContactModule.EagerSingletons());
c.inject(new CryptoModule.EagerSingletons());
c.inject(new DatabaseModule.EagerSingletons());
c.inject(new ForumModule.EagerSingletons());
c.inject(new LifecycleModule.EagerSingletons());
c.inject(new MessagingModule.EagerSingletons());
c.inject(new PluginsModule.EagerSingletons());
c.inject(new PropertiesModule.EagerSingletons());
c.inject(new SyncModule.EagerSingletons());
c.inject(new TransportModule.EagerSingletons());
}
}

View File

@@ -0,0 +1,45 @@
package org.briarproject;
import org.briarproject.clients.ClientsModule;
import org.briarproject.contact.ContactModule;
import org.briarproject.crypto.CryptoModule;
import org.briarproject.data.DataModule;
import org.briarproject.db.DatabaseModule;
import org.briarproject.event.EventModule;
import org.briarproject.forum.ForumModule;
import org.briarproject.identity.IdentityModule;
import org.briarproject.invitation.InvitationModule;
import org.briarproject.lifecycle.LifecycleModule;
import org.briarproject.messaging.MessagingModule;
import org.briarproject.plugins.PluginsModule;
import org.briarproject.properties.PropertiesModule;
import org.briarproject.reliability.ReliabilityModule;
import org.briarproject.settings.SettingsModule;
import org.briarproject.sync.SyncModule;
import org.briarproject.system.SystemModule;
import org.briarproject.transport.TransportModule;
import dagger.Module;
@Module(includes = {DatabaseModule.class,
CryptoModule.class, LifecycleModule.class, ReliabilityModule.class,
MessagingModule.class, InvitationModule.class, ForumModule.class,
IdentityModule.class, EventModule.class, DataModule.class,
ContactModule.class, PropertiesModule.class, TransportModule.class,
SyncModule.class, SettingsModule.class, ClientsModule.class,
SystemModule.class, PluginsModule.class})
public class CoreModule {
public static void initEagerSingletons(CoreEagerSingletons c) {
c.inject(new ContactModule.EagerSingletons());
c.inject(new CryptoModule.EagerSingletons());
c.inject(new DatabaseModule.EagerSingletons());
c.inject(new ForumModule.EagerSingletons());
c.inject(new LifecycleModule.EagerSingletons());
c.inject(new MessagingModule.EagerSingletons());
c.inject(new PluginsModule.EagerSingletons());
c.inject(new PropertiesModule.EagerSingletons());
c.inject(new SyncModule.EagerSingletons());
c.inject(new TransportModule.EagerSingletons());
}
}

View File

@@ -1,36 +0,0 @@
package org.briarproject;
import org.briarproject.api.android.PlatformExecutor;
import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.api.ui.UiCallback;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
/**
* This class contains methods that MUST(!) be overridden in platform specific
* modules that use the core.
*/
@Module
public class PlatformModule {
@Provides
@Singleton
public DatabaseConfig provideDatabaseConfig() {
return null;
}
@Provides
public UiCallback provideUICallback() {
return null;
}
@Provides
public PlatformExecutor providePlatformExecutor() {
return null;
}
}

View File

@@ -3,7 +3,6 @@ package org.briarproject.plugins;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.briarproject.api.android.PlatformExecutor;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.lifecycle.IoExecutor;
import org.briarproject.api.lifecycle.LifecycleManager;
@@ -11,19 +10,13 @@ import org.briarproject.api.plugins.BackoffFactory;
import org.briarproject.api.plugins.ConnectionManager;
import org.briarproject.api.plugins.ConnectionRegistry;
import org.briarproject.api.plugins.PluginManager;
import org.briarproject.api.plugins.duplex.DuplexPluginConfig;
import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
import org.briarproject.api.sync.SyncSessionFactory;
import org.briarproject.api.system.LocationUtils;
import org.briarproject.api.system.Timer;
import org.briarproject.api.transport.KeyManager;
import org.briarproject.api.transport.StreamReaderFactory;
import org.briarproject.api.transport.StreamWriterFactory;
import java.security.SecureRandom;
import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.Executor;
import dagger.Module;
@@ -68,6 +61,7 @@ public class PluginsModule {
return new ConnectionRegistryImpl(eventBus);
}
@Provides
@Singleton
PluginManager getPluginManager(LifecycleManager lifecycleManager,
@@ -75,21 +69,15 @@ public class PluginsModule {
lifecycleManager.register(pluginManager);
return pluginManager;
}
/*
@Provides
SimplexPluginConfig provideSimplexPluginConfig() {
return new SimplexPluginConfig() {
public Collection<SimplexPluginFactory> getFactories() {
return Collections.emptyList();
}
};
return null;
}
@Provides
public DuplexPluginConfig provideDuplexPluginConfig(@IoExecutor Executor ioExecutor,
PlatformExecutor platformExecutor, /*Application app,*/
SecureRandom random, BackoffFactory backoffFactory,
LocationUtils locationUtils, EventBus eventBus) {
public DuplexPluginConfig provideDuplexPluginConfig() {
return null;
}
*/
}

View File

@@ -20,13 +20,4 @@ public class SystemModule {
return new SystemTimer();
}
@Provides
public SeedProvider provideSeedProvider() {
return null;
}
@Provides
public LocationUtils provideLocationUtils() {
return null;
}
}