From e32313c30b5012fa0f67dfd93265bcdee4b5dc7c Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Thu, 17 Nov 2016 17:06:26 -0200
Subject: [PATCH] Use namespaced strings for Transport IDs

---
 .../briarproject/android/NavDrawerActivity.java    |  9 ++++++---
 .../plugins/droidtooth/DroidtoothPlugin.java       | 14 ++++++--------
 .../src/org/briarproject/api/TransportId.java      |  2 +-
 .../api/plugins/BluetoothConstants.java            | 14 ++++++++++++++
 .../briarproject/api/plugins/LanTcpConstants.java  |  9 +++++++++
 .../org/briarproject/api/plugins/TorConstants.java |  2 +-
 .../briarproject/api/plugins/WanTcpConstants.java  |  9 +++++++++
 .../keyagreement/PayloadParserImpl.java            |  6 ++++--
 .../org/briarproject/plugins/tcp/LanTcpPlugin.java |  3 +--
 .../plugins/tcp/LanTcpPluginFactory.java           |  4 +++-
 .../org/briarproject/plugins/tcp/WanTcpPlugin.java |  4 ++--
 .../plugins/tcp/WanTcpPluginFactory.java           |  4 +++-
 .../plugins/bluetooth/BluetoothPlugin.java         | 13 +++++--------
 .../plugins/bluetooth/BluetoothPluginFactory.java  |  4 +++-
 .../plugins/file/RemovableDrivePlugin.java         |  3 ++-
 .../briarproject/plugins/modem/ModemPlugin.java    |  3 ++-
 16 files changed, 71 insertions(+), 32 deletions(-)
 create mode 100644 briar-api/src/org/briarproject/api/plugins/BluetoothConstants.java
 create mode 100644 briar-api/src/org/briarproject/api/plugins/LanTcpConstants.java
 create mode 100644 briar-api/src/org/briarproject/api/plugins/WanTcpConstants.java

diff --git a/briar-android/src/org/briarproject/android/NavDrawerActivity.java b/briar-android/src/org/briarproject/android/NavDrawerActivity.java
index cc2fbbcbfb..c80310aa0c 100644
--- a/briar-android/src/org/briarproject/android/NavDrawerActivity.java
+++ b/briar-android/src/org/briarproject/android/NavDrawerActivity.java
@@ -29,6 +29,9 @@ import org.briarproject.android.forum.ForumListFragment;
 import org.briarproject.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.android.privategroup.list.GroupListFragment;
 import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.BluetoothConstants;
+import org.briarproject.api.plugins.LanTcpConstants;
+import org.briarproject.api.plugins.TorConstants;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -230,21 +233,21 @@ public class NavDrawerActivity extends BriarFragmentActivity implements
 		transports = new ArrayList<>(3);
 
 		Transport tor = new Transport();
-		tor.id = new TransportId("tor");
+		tor.id = TorConstants.ID;
 		tor.enabled = controller.isTransportRunning(tor.id);
 		tor.iconId = R.drawable.transport_tor;
 		tor.textId = R.string.transport_tor;
 		transports.add(tor);
 
 		Transport bt = new Transport();
-		bt.id = new TransportId("bt");
+		bt.id = BluetoothConstants.ID;
 		bt.enabled = controller.isTransportRunning(bt.id);
 		bt.iconId = R.drawable.transport_bt;
 		bt.textId = R.string.transport_bt;
 		transports.add(bt);
 
 		Transport lan = new Transport();
-		lan.id = new TransportId("lan");
+		lan.id = LanTcpConstants.ID;
 		lan.enabled = controller.isTransportRunning(lan.id);
 		lan.iconId = R.drawable.transport_lan;
 		lan.textId = R.string.transport_lan;
diff --git a/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
index f60e52bebb..7805acd868 100644
--- a/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
@@ -65,26 +65,23 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.api.keyagreement.KeyAgreementConstants.TRANSPORT_ID_BLUETOOTH;
+import static org.briarproject.api.plugins.BluetoothConstants.ID;
+import static org.briarproject.api.plugins.BluetoothConstants.PROP_ADDRESS;
+import static org.briarproject.api.plugins.BluetoothConstants.PROP_UUID;
+import static org.briarproject.api.plugins.BluetoothConstants.UUID_BYTES;
 import static org.briarproject.util.PrivacyUtils.scrubMacAddress;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
 class DroidtoothPlugin implements DuplexPlugin {
 
-	// Share an ID with the J2SE Bluetooth plugin
-	static final TransportId ID = new TransportId("bt");
-
 	private static final Logger LOG =
 			Logger.getLogger(DroidtoothPlugin.class.getName());
-	private static final int UUID_BYTES = 16;
 	private static final String FOUND =
 			"android.bluetooth.device.action.FOUND";
 	private static final String DISCOVERY_FINISHED =
 			"android.bluetooth.adapter.action.DISCOVERY_FINISHED";
 
-	private static final String PROP_ADDRESS = "address";
-	private static final String PROP_UUID = "uuid";
-
 	private final Executor ioExecutor;
 	private final AndroidExecutor androidExecutor;
 	private final Context appContext;
@@ -315,6 +312,7 @@ class DroidtoothPlugin implements DuplexPlugin {
 		}
 	}
 
+	@Nullable
 	private BluetoothSocket connect(String address, String uuid) {
 		// Validate the address
 		if (!BluetoothAdapter.checkBluetoothAddress(address)) {
@@ -646,7 +644,7 @@ class DroidtoothPlugin implements DuplexPlugin {
 
 		private final BluetoothServerSocket ss;
 
-		BluetoothKeyAgreementListener(BdfList descriptor,
+		private BluetoothKeyAgreementListener(BdfList descriptor,
 				BluetoothServerSocket ss) {
 			super(descriptor);
 			this.ss = ss;
diff --git a/briar-api/src/org/briarproject/api/TransportId.java b/briar-api/src/org/briarproject/api/TransportId.java
index 94e21cfa5d..b0ad34b094 100644
--- a/briar-api/src/org/briarproject/api/TransportId.java
+++ b/briar-api/src/org/briarproject/api/TransportId.java
@@ -10,7 +10,7 @@ public class TransportId {
 	/**
 	 * The maximum length of transport identifier in UTF-8 bytes.
 	 */
-	public static int MAX_TRANSPORT_ID_LENGTH = 10;
+	public static int MAX_TRANSPORT_ID_LENGTH = 64;
 
 	private final String id;
 
diff --git a/briar-api/src/org/briarproject/api/plugins/BluetoothConstants.java b/briar-api/src/org/briarproject/api/plugins/BluetoothConstants.java
new file mode 100644
index 0000000000..3708df560a
--- /dev/null
+++ b/briar-api/src/org/briarproject/api/plugins/BluetoothConstants.java
@@ -0,0 +1,14 @@
+package org.briarproject.api.plugins;
+
+import org.briarproject.api.TransportId;
+
+public interface BluetoothConstants {
+
+	TransportId ID = new TransportId("org.briarproject.bramble.bluetooth");
+
+	int UUID_BYTES = 16;
+
+	String PROP_ADDRESS = "address";
+	String PROP_UUID = "uuid";
+
+}
diff --git a/briar-api/src/org/briarproject/api/plugins/LanTcpConstants.java b/briar-api/src/org/briarproject/api/plugins/LanTcpConstants.java
new file mode 100644
index 0000000000..6ea2ceb514
--- /dev/null
+++ b/briar-api/src/org/briarproject/api/plugins/LanTcpConstants.java
@@ -0,0 +1,9 @@
+package org.briarproject.api.plugins;
+
+import org.briarproject.api.TransportId;
+
+public interface LanTcpConstants {
+
+	TransportId ID = new TransportId("org.briarproject.bramble.lan");
+
+}
diff --git a/briar-api/src/org/briarproject/api/plugins/TorConstants.java b/briar-api/src/org/briarproject/api/plugins/TorConstants.java
index f90e047bb0..27624c7a8d 100644
--- a/briar-api/src/org/briarproject/api/plugins/TorConstants.java
+++ b/briar-api/src/org/briarproject/api/plugins/TorConstants.java
@@ -4,7 +4,7 @@ import org.briarproject.api.TransportId;
 
 public interface TorConstants {
 
-	TransportId ID = new TransportId("tor");
+	TransportId ID = new TransportId("org.briarproject.bramble.tor");
 
 	int SOCKS_PORT   = 59050;
 	int CONTROL_PORT = 59051;
diff --git a/briar-api/src/org/briarproject/api/plugins/WanTcpConstants.java b/briar-api/src/org/briarproject/api/plugins/WanTcpConstants.java
new file mode 100644
index 0000000000..cf8f649486
--- /dev/null
+++ b/briar-api/src/org/briarproject/api/plugins/WanTcpConstants.java
@@ -0,0 +1,9 @@
+package org.briarproject.api.plugins;
+
+import org.briarproject.api.TransportId;
+
+public interface WanTcpConstants {
+
+	TransportId ID = new TransportId("org.briarproject.bramble.wan");
+
+}
diff --git a/briar-core/src/org/briarproject/keyagreement/PayloadParserImpl.java b/briar-core/src/org/briarproject/keyagreement/PayloadParserImpl.java
index 1f9b656357..471e229fd7 100644
--- a/briar-core/src/org/briarproject/keyagreement/PayloadParserImpl.java
+++ b/briar-core/src/org/briarproject/keyagreement/PayloadParserImpl.java
@@ -9,6 +9,8 @@ import org.briarproject.api.keyagreement.Payload;
 import org.briarproject.api.keyagreement.PayloadParser;
 import org.briarproject.api.keyagreement.TransportDescriptor;
 import org.briarproject.api.nullsafety.NotNullByDefault;
+import org.briarproject.api.plugins.BluetoothConstants;
+import org.briarproject.api.plugins.TorConstants;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -55,10 +57,10 @@ class PayloadParserImpl implements PayloadParser {
 			BdfList descriptor = payload.getList(i);
 			long transportId = descriptor.getLong(0);
 			if (transportId == TRANSPORT_ID_BLUETOOTH) {
-				TransportId id = new TransportId("bt");
+				TransportId id = BluetoothConstants.ID;
 				recognised.add(new TransportDescriptor(id, descriptor));
 			} else if (transportId == TRANSPORT_ID_LAN) {
-				TransportId id = new TransportId("lan");
+				TransportId id = TorConstants.ID;
 				recognised.add(new TransportDescriptor(id, descriptor));
 			}
 		}
diff --git a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
index e3527f74dd..f60a0a743c 100644
--- a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
@@ -33,14 +33,13 @@ import java.util.logging.Logger;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.api.keyagreement.KeyAgreementConstants.TRANSPORT_ID_LAN;
+import static org.briarproject.api.plugins.LanTcpConstants.ID;
 import static org.briarproject.util.ByteUtils.MAX_16_BIT_UNSIGNED;
 import static org.briarproject.util.PrivacyUtils.scrubSocketAddress;
 
 @NotNullByDefault
 class LanTcpPlugin extends TcpPlugin {
 
-	static final TransportId ID = new TransportId("lan");
-
 	private static final Logger LOG =
 			Logger.getLogger(LanTcpPlugin.class.getName());
 
diff --git a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java
index 541b8ad5ff..2818666b0b 100644
--- a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java
@@ -9,6 +9,8 @@ import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
 
 import java.util.concurrent.Executor;
 
+import static org.briarproject.api.plugins.LanTcpConstants.ID;
+
 public class LanTcpPluginFactory implements DuplexPluginFactory {
 
 	private static final int MAX_LATENCY = 30 * 1000; // 30 seconds
@@ -28,7 +30,7 @@ public class LanTcpPluginFactory implements DuplexPluginFactory {
 
 	@Override
 	public TransportId getId() {
-		return LanTcpPlugin.ID;
+		return ID;
 	}
 
 	@Override
diff --git a/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java
index 3f297d1482..f51767af60 100644
--- a/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java
@@ -16,12 +16,12 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.Executor;
 
+import static org.briarproject.api.plugins.WanTcpConstants.ID;
+
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
 class WanTcpPlugin extends TcpPlugin {
 
-	static final TransportId ID = new TransportId("wan");
-
 	private static final String PROP_IP_PORT = "ipPort";
 
 	private final PortMapper portMapper;
diff --git a/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java
index b5e2823ca7..f1fd78bcf5 100644
--- a/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java
@@ -10,6 +10,8 @@ import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
 
 import java.util.concurrent.Executor;
 
+import static org.briarproject.api.plugins.WanTcpConstants.ID;
+
 public class WanTcpPluginFactory implements DuplexPluginFactory {
 
 	private static final int MAX_LATENCY = 30 * 1000; // 30 seconds
@@ -31,7 +33,7 @@ public class WanTcpPluginFactory implements DuplexPluginFactory {
 
 	@Override
 	public TransportId getId() {
-		return WanTcpPlugin.ID;
+		return ID;
 	}
 
 	@Override
diff --git a/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java
index c945ca8154..81d5588abe 100644
--- a/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java
+++ b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java
@@ -49,20 +49,17 @@ import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static javax.bluetooth.DiscoveryAgent.GIAC;
 import static org.briarproject.api.keyagreement.KeyAgreementConstants.TRANSPORT_ID_BLUETOOTH;
+import static org.briarproject.api.plugins.BluetoothConstants.ID;
+import static org.briarproject.api.plugins.BluetoothConstants.PROP_ADDRESS;
+import static org.briarproject.api.plugins.BluetoothConstants.PROP_UUID;
+import static org.briarproject.api.plugins.BluetoothConstants.UUID_BYTES;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
 class BluetoothPlugin implements DuplexPlugin {
 
-	// Share an ID with the Android Bluetooth plugin
-	static final TransportId ID = new TransportId("bt");
-
 	private static final Logger LOG =
 			Logger.getLogger(BluetoothPlugin.class.getName());
-	private static final int UUID_BYTES = 16;
-
-	private static final String PROP_ADDRESS = "address";
-	private static final String PROP_UUID = "uuid";
 
 	private final Executor ioExecutor;
 	private final SecureRandom secureRandom;
@@ -507,7 +504,7 @@ class BluetoothPlugin implements DuplexPlugin {
 
 		private final StreamConnectionNotifier ss;
 
-		BluetoothKeyAgreementListener(BdfList descriptor,
+		private BluetoothKeyAgreementListener(BdfList descriptor,
 				StreamConnectionNotifier ss) {
 			super(descriptor);
 			this.ss = ss;
diff --git a/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java
index 1fd6648b3b..fbe51e342f 100644
--- a/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java
+++ b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java
@@ -10,6 +10,8 @@ import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
 import java.security.SecureRandom;
 import java.util.concurrent.Executor;
 
+import static org.briarproject.api.plugins.BluetoothConstants.ID;
+
 public class BluetoothPluginFactory implements DuplexPluginFactory {
 
 	private static final int MAX_LATENCY = 30 * 1000; // 30 seconds
@@ -30,7 +32,7 @@ public class BluetoothPluginFactory implements DuplexPluginFactory {
 
 	@Override
 	public TransportId getId() {
-		return BluetoothPlugin.ID;
+		return ID;
 	}
 
 	@Override
diff --git a/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java b/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java
index 37728666d0..a5dba602e0 100644
--- a/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java
@@ -19,7 +19,8 @@ import static java.util.logging.Level.WARNING;
 class RemovableDrivePlugin extends FilePlugin
 implements RemovableDriveMonitor.Callback {
 
-	static final TransportId ID = new TransportId("file");
+	static final TransportId ID =
+			new TransportId("org.briarproject.bramble.file");
 
 	private static final Logger LOG =
 			Logger.getLogger(RemovableDrivePlugin.class.getName());
diff --git a/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java b/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java
index fe3b89e2c3..ae08ea3973 100644
--- a/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java
@@ -28,7 +28,8 @@ import static java.util.logging.Level.WARNING;
 @ParametersNotNullByDefault
 class ModemPlugin implements DuplexPlugin, Modem.Callback {
 
-	static final TransportId ID = new TransportId("modem");
+	static final TransportId ID =
+			new TransportId("org.briarproject.bramble.modem");
 
 	private static final Logger LOG =
 			Logger.getLogger(ModemPlugin.class.getName());
-- 
GitLab