From 04176394109470b73eabd450246297d7fa7f7a95 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Mon, 28 Mar 2016 11:28:46 +0100
Subject: [PATCH] Merge duplex and simplex plugin config classes.

---
 .../plugins/AndroidPluginsModule.java         | 32 +++++++---------
 .../api/plugins/PluginConfig.java             | 13 +++++++
 .../plugins/duplex/DuplexPluginConfig.java    |  8 ----
 .../plugins/simplex/SimplexPluginConfig.java  |  8 ----
 .../plugins/PluginManagerImpl.java            | 16 +++-----
 .../plugins/DesktopPluginsModule.java         | 38 +++++++++----------
 .../plugins/PluginManagerImplTest.java        | 17 +++------
 7 files changed, 56 insertions(+), 76 deletions(-)
 create mode 100644 briar-api/src/org/briarproject/api/plugins/PluginConfig.java
 delete mode 100644 briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginConfig.java
 delete mode 100644 briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginConfig.java

diff --git a/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java b/briar-android/src/org/briarproject/plugins/AndroidPluginsModule.java
index 7718122f01..feccd77ff4 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<SimplexPluginFactory> 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<DuplexPluginFactory> factories =
+		final Collection<DuplexPluginFactory> duplex =
 				Arrays.asList(bluetooth, tor, lan);
-		return new DuplexPluginConfig() {
-			public Collection<DuplexPluginFactory> getFactories() {
-				return factories;
+		return new PluginConfig() {
+
+			@Override
+			public Collection<DuplexPluginFactory> getDuplexFactories() {
+				return duplex;
+			}
+
+			@Override
+			public Collection<SimplexPluginFactory> 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 0000000000..7fda14476e
--- /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<DuplexPluginFactory> getDuplexFactories();
+
+	Collection<SimplexPluginFactory> 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 fc17637196..0000000000
--- 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<DuplexPluginFactory> 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 59f4f6a079..0000000000
--- 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<SimplexPluginFactory> getFactories();
-}
diff --git a/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java b/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java
index bd110d0cf6..85aa73e080 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<SimplexPluginFactory> 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<DuplexPluginFactory> 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 6d727a6d89..912a0a7d7a 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<SimplexPluginFactory> factories =
-				Collections.singletonList(removable);
-		return new SimplexPluginConfig() {
-			public Collection<SimplexPluginFactory> 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<DuplexPluginFactory> factories =
+		SimplexPluginFactory removable =
+				new RemovableDrivePluginFactory(ioExecutor);
+		final Collection<SimplexPluginFactory> simplex =
+				Collections.singletonList(removable);
+		final Collection<DuplexPluginFactory> duplex =
 				Arrays.asList(bluetooth, modem, lan, wan);
-		return new DuplexPluginConfig() {
-			public Collection<DuplexPluginFactory> getFactories() {
-				return factories;
+		return new PluginConfig() {
+
+			@Override
+			public Collection<DuplexPluginFactory> getDuplexFactories() {
+				return duplex;
+			}
+
+			@Override
+			public Collection<SimplexPluginFactory> getSimplexFactories() {
+				return simplex;
 			}
 		};
 	}
diff --git a/briar-tests/src/org/briarproject/plugins/PluginManagerImplTest.java b/briar-tests/src/org/briarproject/plugins/PluginManagerImplTest.java
index 52b5b5448a..e6efbc5e54 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());
-- 
GitLab