diff --git a/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java b/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java index 7718122f0..feccd77ff 100644 --- a/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java +++ b/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java @@ -7,9 +7,8 @@ import org.briarproject.android.api.AndroidExecutor; import org.briarproject.api.event.EventBus; import org.briarproject.api.lifecycle.IoExecutor; import org.briarproject.api.plugins.BackoffFactory; -import org.briarproject.api.plugins.duplex.DuplexPluginConfig; +import org.briarproject.api.plugins.PluginConfig; import org.briarproject.api.plugins.duplex.DuplexPluginFactory; -import org.briarproject.api.plugins.simplex.SimplexPluginConfig; import org.briarproject.api.plugins.simplex.SimplexPluginFactory; import org.briarproject.api.system.LocationUtils; import org.briarproject.plugins.droidtooth.DroidtoothPluginFactory; @@ -29,17 +28,8 @@ import dagger.Provides; public class AndroidPluginsModule { @Provides - SimplexPluginConfig provideSimplexPluginConfig() { - return new SimplexPluginConfig() { - public Collection getFactories() { - return Collections.emptyList(); - } - }; - } - - @Provides - public DuplexPluginConfig provideDuplexPluginConfig( - @IoExecutor Executor ioExecutor, AndroidExecutor androidExecutor, + public PluginConfig providePluginConfig(@IoExecutor Executor ioExecutor, + AndroidExecutor androidExecutor, SecureRandom random, BackoffFactory backoffFactory, Application app, LocationUtils locationUtils, EventBus eventBus) { Context appContext = app.getApplicationContext(); @@ -49,13 +39,19 @@ public class AndroidPluginsModule { locationUtils, eventBus); DuplexPluginFactory lan = new AndroidLanTcpPluginFactory(ioExecutor, backoffFactory, appContext); - final Collection factories = + final Collection duplex = Arrays.asList(bluetooth, tor, lan); - return new DuplexPluginConfig() { - public Collection getFactories() { - return factories; + return new PluginConfig() { + + @Override + public Collection getDuplexFactories() { + return duplex; + } + + @Override + public Collection getSimplexFactories() { + return Collections.emptyList(); } }; } - } diff --git a/briar-api/src/org/briarproject/api/plugins/PluginConfig.java b/briar-api/src/org/briarproject/api/plugins/PluginConfig.java new file mode 100644 index 000000000..7fda14476 --- /dev/null +++ b/briar-api/src/org/briarproject/api/plugins/PluginConfig.java @@ -0,0 +1,13 @@ +package org.briarproject.api.plugins; + +import org.briarproject.api.plugins.duplex.DuplexPluginFactory; +import org.briarproject.api.plugins.simplex.SimplexPluginFactory; + +import java.util.Collection; + +public interface PluginConfig { + + Collection getDuplexFactories(); + + Collection getSimplexFactories(); +} diff --git a/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginConfig.java b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginConfig.java deleted file mode 100644 index fc1763719..000000000 --- a/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.briarproject.api.plugins.duplex; - -import java.util.Collection; - -public interface DuplexPluginConfig { - - Collection getFactories(); -} diff --git a/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginConfig.java b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginConfig.java deleted file mode 100644 index 59f4f6a07..000000000 --- a/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.briarproject.api.plugins.simplex; - -import java.util.Collection; - -public interface SimplexPluginConfig { - - Collection getFactories(); -} diff --git a/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java b/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java index bd110d0cf..85aa73e08 100644 --- a/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java +++ b/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java @@ -13,17 +13,16 @@ import org.briarproject.api.lifecycle.Service; import org.briarproject.api.plugins.ConnectionManager; import org.briarproject.api.plugins.Plugin; import org.briarproject.api.plugins.PluginCallback; +import org.briarproject.api.plugins.PluginConfig; import org.briarproject.api.plugins.PluginManager; import org.briarproject.api.plugins.TransportConnectionReader; import org.briarproject.api.plugins.TransportConnectionWriter; import org.briarproject.api.plugins.duplex.DuplexPlugin; import org.briarproject.api.plugins.duplex.DuplexPluginCallback; -import org.briarproject.api.plugins.duplex.DuplexPluginConfig; import org.briarproject.api.plugins.duplex.DuplexPluginFactory; import org.briarproject.api.plugins.duplex.DuplexTransportConnection; import org.briarproject.api.plugins.simplex.SimplexPlugin; import org.briarproject.api.plugins.simplex.SimplexPluginCallback; -import org.briarproject.api.plugins.simplex.SimplexPluginConfig; import org.briarproject.api.plugins.simplex.SimplexPluginFactory; import org.briarproject.api.properties.TransportProperties; import org.briarproject.api.properties.TransportPropertyManager; @@ -56,8 +55,7 @@ class PluginManagerImpl implements PluginManager, Service { private final Executor ioExecutor; private final EventBus eventBus; - private final SimplexPluginConfig simplexPluginConfig; - private final DuplexPluginConfig duplexPluginConfig; + private final PluginConfig pluginConfig; private final Clock clock; private final DatabaseComponent db; private final Poller poller; @@ -71,8 +69,7 @@ class PluginManagerImpl implements PluginManager, Service { @Inject PluginManagerImpl(@IoExecutor Executor ioExecutor, EventBus eventBus, - SimplexPluginConfig simplexPluginConfig, - DuplexPluginConfig duplexPluginConfig, Clock clock, + PluginConfig pluginConfig, Clock clock, DatabaseComponent db, Poller poller, ConnectionManager connectionManager, SettingsManager settingsManager, @@ -80,8 +77,7 @@ class PluginManagerImpl implements PluginManager, Service { UiCallback uiCallback) { this.ioExecutor = ioExecutor; this.eventBus = eventBus; - this.simplexPluginConfig = simplexPluginConfig; - this.duplexPluginConfig = duplexPluginConfig; + this.pluginConfig = pluginConfig; this.clock = clock; this.db = db; this.poller = poller; @@ -99,14 +95,14 @@ class PluginManagerImpl implements PluginManager, Service { // Instantiate and start the simplex plugins LOG.info("Starting simplex plugins"); Collection sFactories = - simplexPluginConfig.getFactories(); + pluginConfig.getSimplexFactories(); final CountDownLatch sLatch = new CountDownLatch(sFactories.size()); for (SimplexPluginFactory factory : sFactories) ioExecutor.execute(new SimplexPluginStarter(factory, sLatch)); // Instantiate and start the duplex plugins LOG.info("Starting duplex plugins"); Collection dFactories = - duplexPluginConfig.getFactories(); + pluginConfig.getDuplexFactories(); final CountDownLatch dLatch = new CountDownLatch(dFactories.size()); for (DuplexPluginFactory factory : dFactories) ioExecutor.execute(new DuplexPluginStarter(factory, dLatch)); diff --git a/briar-desktop/src/org/briarproject/plugins/DesktopPluginsModule.java b/briar-desktop/src/org/briarproject/plugins/DesktopPluginsModule.java index 6d727a6d8..912a0a7d7 100644 --- a/briar-desktop/src/org/briarproject/plugins/DesktopPluginsModule.java +++ b/briar-desktop/src/org/briarproject/plugins/DesktopPluginsModule.java @@ -3,9 +3,8 @@ package org.briarproject.plugins; import org.briarproject.api.lifecycle.IoExecutor; import org.briarproject.api.lifecycle.ShutdownManager; import org.briarproject.api.plugins.BackoffFactory; -import org.briarproject.api.plugins.duplex.DuplexPluginConfig; +import org.briarproject.api.plugins.PluginConfig; import org.briarproject.api.plugins.duplex.DuplexPluginFactory; -import org.briarproject.api.plugins.simplex.SimplexPluginConfig; import org.briarproject.api.plugins.simplex.SimplexPluginFactory; import org.briarproject.api.reliability.ReliabilityLayerFactory; import org.briarproject.plugins.bluetooth.BluetoothPluginFactory; @@ -27,21 +26,7 @@ import dagger.Provides; public class DesktopPluginsModule extends PluginsModule { @Provides - SimplexPluginConfig getSimplexPluginConfig( - @IoExecutor Executor ioExecutor) { - SimplexPluginFactory removable = - new RemovableDrivePluginFactory(ioExecutor); - final Collection factories = - Collections.singletonList(removable); - return new SimplexPluginConfig() { - public Collection getFactories() { - return factories; - } - }; - } - - @Provides - DuplexPluginConfig getDuplexPluginConfig(@IoExecutor Executor ioExecutor, + PluginConfig getPluginConfig(@IoExecutor Executor ioExecutor, SecureRandom random, BackoffFactory backoffFactory, ReliabilityLayerFactory reliabilityFactory, ShutdownManager shutdownManager) { @@ -53,11 +38,22 @@ public class DesktopPluginsModule extends PluginsModule { backoffFactory); DuplexPluginFactory wan = new WanTcpPluginFactory(ioExecutor, backoffFactory, shutdownManager); - final Collection factories = + SimplexPluginFactory removable = + new RemovableDrivePluginFactory(ioExecutor); + final Collection simplex = + Collections.singletonList(removable); + final Collection duplex = Arrays.asList(bluetooth, modem, lan, wan); - return new DuplexPluginConfig() { - public Collection getFactories() { - return factories; + return new PluginConfig() { + + @Override + public Collection getDuplexFactories() { + return duplex; + } + + @Override + public Collection getSimplexFactories() { + return simplex; } }; } diff --git a/briar-tests/src/org/briarproject/plugins/PluginManagerImplTest.java b/briar-tests/src/org/briarproject/plugins/PluginManagerImplTest.java index 52b5b5448..e6efbc5e5 100644 --- a/briar-tests/src/org/briarproject/plugins/PluginManagerImplTest.java +++ b/briar-tests/src/org/briarproject/plugins/PluginManagerImplTest.java @@ -6,13 +6,12 @@ import org.briarproject.api.db.DatabaseComponent; import org.briarproject.api.db.Transaction; import org.briarproject.api.event.EventBus; import org.briarproject.api.plugins.ConnectionManager; +import org.briarproject.api.plugins.PluginConfig; import org.briarproject.api.plugins.duplex.DuplexPlugin; import org.briarproject.api.plugins.duplex.DuplexPluginCallback; -import org.briarproject.api.plugins.duplex.DuplexPluginConfig; import org.briarproject.api.plugins.duplex.DuplexPluginFactory; import org.briarproject.api.plugins.simplex.SimplexPlugin; import org.briarproject.api.plugins.simplex.SimplexPluginCallback; -import org.briarproject.api.plugins.simplex.SimplexPluginConfig; import org.briarproject.api.plugins.simplex.SimplexPluginFactory; import org.briarproject.api.properties.TransportPropertyManager; import org.briarproject.api.settings.SettingsManager; @@ -40,10 +39,7 @@ public class PluginManagerImplTest extends BriarTestCase { }}; final Executor ioExecutor = Executors.newSingleThreadExecutor(); final EventBus eventBus = context.mock(EventBus.class); - final SimplexPluginConfig simplexPluginConfig = - context.mock(SimplexPluginConfig.class); - final DuplexPluginConfig duplexPluginConfig = - context.mock(DuplexPluginConfig.class); + final PluginConfig pluginConfig = context.mock(PluginConfig.class); final DatabaseComponent db = context.mock(DatabaseComponent.class); final Poller poller = context.mock(Poller.class); final ConnectionManager connectionManager = @@ -79,7 +75,7 @@ public class PluginManagerImplTest extends BriarTestCase { final TransportId duplexFailId = new TransportId("duplex1"); context.checking(new Expectations() {{ // First simplex plugin - oneOf(simplexPluginConfig).getFactories(); + oneOf(pluginConfig).getSimplexFactories(); will(returnValue(Arrays.asList(simplexFactory, simplexFailFactory))); oneOf(simplexFactory).getId(); @@ -114,7 +110,7 @@ public class PluginManagerImplTest extends BriarTestCase { oneOf(simplexFailPlugin).start(); will(returnValue(false)); // Failed to start // First duplex plugin - oneOf(duplexPluginConfig).getFactories(); + oneOf(pluginConfig).getDuplexFactories(); will(returnValue(Arrays.asList(duplexFactory, duplexFailFactory))); oneOf(duplexFactory).getId(); will(returnValue(duplexId)); @@ -144,9 +140,8 @@ public class PluginManagerImplTest extends BriarTestCase { oneOf(duplexPlugin).stop(); }}); PluginManagerImpl p = new PluginManagerImpl(ioExecutor, eventBus, - simplexPluginConfig, duplexPluginConfig, clock, db, poller, - connectionManager, settingsManager, transportPropertyManager, - uiCallback); + pluginConfig, clock, db, poller, connectionManager, + settingsManager, transportPropertyManager, uiCallback); // Two plugins should be started and stopped assertTrue(p.start());