diff --git a/app/src/androidTest/scala/com/nutomic/ensichat/protocol/AddressTest.scala b/app/src/androidTest/scala/com/nutomic/ensichat/protocol/AddressTest.scala index 42594fa..9e340a5 100644 --- a/app/src/androidTest/scala/com/nutomic/ensichat/protocol/AddressTest.scala +++ b/app/src/androidTest/scala/com/nutomic/ensichat/protocol/AddressTest.scala @@ -32,7 +32,7 @@ class AddressTest extends AndroidTestCase { } assertEquals(a1, new Address(a1Binary)) - assertEquals(a1Binary.deep, a1.Bytes.deep) + assertEquals(a1Binary.deep, a1.bytes.deep) } } \ No newline at end of file diff --git a/app/src/androidTest/scala/com/nutomic/ensichat/protocol/messages/MessageHeaderTest.scala b/app/src/androidTest/scala/com/nutomic/ensichat/protocol/messages/MessageHeaderTest.scala index 4eb8dac..9d37395 100644 --- a/app/src/androidTest/scala/com/nutomic/ensichat/protocol/messages/MessageHeaderTest.scala +++ b/app/src/androidTest/scala/com/nutomic/ensichat/protocol/messages/MessageHeaderTest.scala @@ -29,7 +29,7 @@ class MessageHeaderTest extends AndroidTestCase { val bytes = h.write(0) val header = MessageHeader.read(bytes) assertEquals(h, header) - assertEquals(bytes.length, header.Length) + assertEquals(bytes.length, header.length) } } diff --git a/app/src/androidTest/scala/com/nutomic/ensichat/protocol/messages/ResultAddContactTest.scala b/app/src/androidTest/scala/com/nutomic/ensichat/protocol/messages/ResultAddContactTest.scala index ce02a41..ccf8d89 100644 --- a/app/src/androidTest/scala/com/nutomic/ensichat/protocol/messages/ResultAddContactTest.scala +++ b/app/src/androidTest/scala/com/nutomic/ensichat/protocol/messages/ResultAddContactTest.scala @@ -11,7 +11,7 @@ class ResultAddContactTest extends AndroidTestCase { val rac = new ResultAddContact(a) val bytes = rac.write val read = ResultAddContact.read(bytes) - assertEquals(a, read.Accepted) + assertEquals(a, read.accepted) } } diff --git a/app/src/androidTest/scala/com/nutomic/ensichat/util/DatabaseTest.scala b/app/src/androidTest/scala/com/nutomic/ensichat/util/DatabaseTest.scala index 192ab02..c5d9bae 100644 --- a/app/src/androidTest/scala/com/nutomic/ensichat/util/DatabaseTest.scala +++ b/app/src/androidTest/scala/com/nutomic/ensichat/util/DatabaseTest.scala @@ -40,20 +40,20 @@ class DatabaseTest extends AndroidTestCase { } def testMessageCount(): Unit = { - val msg1 = database.getMessages(m1.Header.Origin, 1) + val msg1 = database.getMessages(m1.Header.origin, 1) assertEquals(1, msg1.size) - val msg2 = database.getMessages(m1.Header.Origin, 3) + val msg2 = database.getMessages(m1.Header.origin, 3) assertEquals(2, msg2.size) } def testMessageOrder(): Unit = { - val msg = database.getMessages(m1.Header.Target, 1) + val msg = database.getMessages(m1.Header.target, 1) assertTrue(msg.contains(m3)) } def testMessageSelect(): Unit = { - val msg = database.getMessages(m1.Header.Target, 2) + val msg = database.getMessages(m1.Header.target, 2) assertTrue(msg.contains(m1)) assertTrue(msg.contains(m3)) } @@ -62,7 +62,7 @@ class DatabaseTest extends AndroidTestCase { database.addContact(UserTest.u1) val contacts = database.getContacts assertEquals(1, contacts.size) - assertEquals(Some(UserTest.u1), database.getContact(UserTest.u1.Address)) + assertEquals(Some(UserTest.u1), database.getContact(UserTest.u1.address)) } def testAddContactCallback(): Unit = { @@ -76,8 +76,8 @@ class DatabaseTest extends AndroidTestCase { def testGetContact(): Unit = { database.addContact(UserTest.u2) - assertTrue(database.getContact(UserTest.u1.Address).isEmpty) - val c = database.getContact(UserTest.u2.Address) + assertTrue(database.getContact(UserTest.u1.address).isEmpty) + val c = database.getContact(UserTest.u2.address) assertTrue(c.nonEmpty) assertEquals(Some(UserTest.u2), c) } diff --git a/app/src/main/scala/com/nutomic/ensichat/activities/AddContactsActivity.scala b/app/src/main/scala/com/nutomic/ensichat/activities/AddContactsActivity.scala index 1e4dd82..1697125 100644 --- a/app/src/main/scala/com/nutomic/ensichat/activities/AddContactsActivity.scala +++ b/app/src/main/scala/com/nutomic/ensichat/activities/AddContactsActivity.scala @@ -48,9 +48,9 @@ class AddContactsActivity extends EnsiChatActivity with ChatService.OnConnection */ override def onItemClick(parent: AdapterView[_], view: View, position: Int, id: Long): Unit = { val contact = adapter.getItem(position) - service.sendTo(contact.Address, new RequestAddContact()) + service.sendTo(contact.address, new RequestAddContact()) val intent = new Intent(this, classOf[ConfirmAddContactDialog]) - intent.putExtra(ConfirmAddContactDialog.ExtraContactAddress, contact.Address.toString) + intent.putExtra(ConfirmAddContactDialog.ExtraContactAddress, contact.address.toString) startActivity(intent) } diff --git a/app/src/main/scala/com/nutomic/ensichat/activities/ConfirmAddContactDialog.scala b/app/src/main/scala/com/nutomic/ensichat/activities/ConfirmAddContactDialog.scala index 7833833..d65884b 100644 --- a/app/src/main/scala/com/nutomic/ensichat/activities/ConfirmAddContactDialog.scala +++ b/app/src/main/scala/com/nutomic/ensichat/activities/ConfirmAddContactDialog.scala @@ -55,11 +55,11 @@ class ConfirmAddContactDialog extends EnsiChatActivity with OnMessageReceivedLis val remoteTitle = view.findViewById(R.id.remote_identicon_title).asInstanceOf[TextView] local.setImageBitmap(IdenticonGenerator.generate(Crypto.getLocalAddress(this), (150, 150), this)) - remote.setImageBitmap(IdenticonGenerator.generate(user.Address, (150, 150), this)) - remoteTitle.setText(getString(R.string.remote_fingerprint_title, user.Name)) + remote.setImageBitmap(IdenticonGenerator.generate(user.address, (150, 150), this)) + remoteTitle.setText(getString(R.string.remote_fingerprint_title, user.name)) new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AppTheme)) - .setTitle(getString(R.string.add_contact_dialog, user.Name)) + .setTitle(getString(R.string.add_contact_dialog, user.name)) .setView(view) .setCancelable(false) .setPositiveButton(android.R.string.yes, this) @@ -78,7 +78,7 @@ class ConfirmAddContactDialog extends EnsiChatActivity with OnMessageReceivedLis finish() false } - service.sendTo(user.Address, new ResultAddContact(result)) + service.sendTo(user.address, new ResultAddContact(result)) } /** @@ -88,8 +88,8 @@ class ConfirmAddContactDialog extends EnsiChatActivity with OnMessageReceivedLis if (localConfirmed && remoteConfirmed) { Log.i(Tag, "Adding new contact " + user.toString) // Get the user again, in case it was updated in the mean time. - service.database.addContact(service.getUser(user.Address)) - Toast.makeText(this, getString(R.string.contact_added, user.Name), Toast.LENGTH_SHORT) + service.database.addContact(service.getUser(user.address)) + Toast.makeText(this, getString(R.string.contact_added, user.name), Toast.LENGTH_SHORT) .show() finish() } @@ -102,12 +102,12 @@ class ConfirmAddContactDialog extends EnsiChatActivity with OnMessageReceivedLis * the user is in this activity. */ override def onMessageReceived(msg: Message): Unit = { - if (msg.Header.Origin != user.Address || msg.Header.Target != Crypto.getLocalAddress(this)) + if (msg.Header.origin != user.address || msg.Header.target != Crypto.getLocalAddress(this)) return msg.Body match { case m: ResultAddContact => - if (m.Accepted) { + if (m.accepted) { Log.i(Tag, user.toString + " accepted us as a contact, updating state") remoteConfirmed = true addContactIfBothConfirmed() diff --git a/app/src/main/scala/com/nutomic/ensichat/activities/EnsiChatActivity.scala b/app/src/main/scala/com/nutomic/ensichat/activities/EnsiChatActivity.scala index e26a26d..03d3996 100644 --- a/app/src/main/scala/com/nutomic/ensichat/activities/EnsiChatActivity.scala +++ b/app/src/main/scala/com/nutomic/ensichat/activities/EnsiChatActivity.scala @@ -38,7 +38,7 @@ class EnsiChatActivity extends Activity with ServiceConnection { */ override def onServiceConnected(componentName: ComponentName, iBinder: IBinder): Unit = { val binder = iBinder.asInstanceOf[ChatServiceBinder] - chatService = Option(binder.Service) + chatService = Option(binder.service) listeners.foreach(_()) listeners = Set.empty } diff --git a/app/src/main/scala/com/nutomic/ensichat/activities/MainActivity.scala b/app/src/main/scala/com/nutomic/ensichat/activities/MainActivity.scala index f1f6ee6..d33b4cc 100644 --- a/app/src/main/scala/com/nutomic/ensichat/activities/MainActivity.scala +++ b/app/src/main/scala/com/nutomic/ensichat/activities/MainActivity.scala @@ -65,7 +65,7 @@ class MainActivity extends EnsiChatActivity { override def onSaveInstanceState(outState: Bundle): Unit = { super.onSaveInstanceState(outState) getFragmentManager.putFragment(outState, classOf[ContactsFragment].getName, contactsFragment) - currentChat.collect{case c => outState.putByteArray("current_chat", c.Bytes)} + currentChat.collect{case c => outState.putByteArray("current_chat", c.bytes)} } /** diff --git a/app/src/main/scala/com/nutomic/ensichat/bluetooth/BluetoothInterface.scala b/app/src/main/scala/com/nutomic/ensichat/bluetooth/BluetoothInterface.scala index a91d4fc..aa65c38 100644 --- a/app/src/main/scala/com/nutomic/ensichat/bluetooth/BluetoothInterface.scala +++ b/app/src/main/scala/com/nutomic/ensichat/bluetooth/BluetoothInterface.scala @@ -26,7 +26,7 @@ object BluetoothInterface { /** * Handles all Bluetooth connectivity. */ -class BluetoothInterface(Service: ChatService, Crypto: Crypto) extends InterfaceHandler { +class BluetoothInterface(service: ChatService, crypto: Crypto) extends InterfaceHandler { private val Tag = "BluetoothInterface" @@ -37,7 +37,7 @@ class BluetoothInterface(Service: ChatService, Crypto: Crypto) extends Interface private var connections = new HashMap[Device.ID, TransferThread]() private lazy val listenThread = - new ListenThread(Service.getString(R.string.app_name), btAdapter, onConnectionOpened) + new ListenThread(service.getString(R.string.app_name), btAdapter, onConnectionOpened) private var cancelDiscovery = false @@ -49,11 +49,11 @@ class BluetoothInterface(Service: ChatService, Crypto: Crypto) extends Interface * Initializes and starts discovery and listening. */ override def create(): Unit = { - Service.registerReceiver(DeviceDiscoveredReceiver, + service.registerReceiver(DeviceDiscoveredReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND)) - Service.registerReceiver(BluetoothStateReceiver, + service.registerReceiver(BluetoothStateReceiver, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED)) - Service.registerReceiver(DiscoveryFinishedReceiver, + service.registerReceiver(DiscoveryFinishedReceiver, new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) startBluetoothConnections() } @@ -64,9 +64,9 @@ class BluetoothInterface(Service: ChatService, Crypto: Crypto) extends Interface override def destroy(): Unit = { listenThread.cancel() cancelDiscovery = true - Service.unregisterReceiver(DeviceDiscoveredReceiver) - Service.unregisterReceiver(BluetoothStateReceiver) - Service.unregisterReceiver(DiscoveryFinishedReceiver) + service.unregisterReceiver(DeviceDiscoveredReceiver) + service.unregisterReceiver(BluetoothStateReceiver) + service.unregisterReceiver(DiscoveryFinishedReceiver) } /** @@ -90,9 +90,9 @@ class BluetoothInterface(Service: ChatService, Crypto: Crypto) extends Interface btAdapter.startDiscovery() } - val scanInterval = PreferenceManager.getDefaultSharedPreferences(Service) + val scanInterval = PreferenceManager.getDefaultSharedPreferences(service) .getString("scan_interval_seconds", "15").toInt * 1000 - Service.MainHandler.postDelayed(new Runnable { + service.MainHandler.postDelayed(new Runnable { override def run(): Unit = discover() }, scanInterval) } @@ -111,10 +111,10 @@ class BluetoothInterface(Service: ChatService, Crypto: Crypto) extends Interface */ private val DiscoveryFinishedReceiver = new BroadcastReceiver() { override def onReceive(context: Context, intent: Intent): Unit = { - discovered.filterNot(d => connections.keySet.contains(d.Id)) + discovered.filterNot(d => connections.keySet.contains(d.id)) .foreach { d => new ConnectThread(d, onConnectionOpened).start() - devices += (d.Id -> d) + devices += (d.id -> d) } discovered = Set[Device]() } @@ -127,7 +127,7 @@ class BluetoothInterface(Service: ChatService, Crypto: Crypto) extends Interface override def onReceive(context: Context, intent: Intent): Unit = { intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) match { case BluetoothAdapter.STATE_ON => - if (Crypto.localKeysExist) + if (crypto.localKeysExist) startBluetoothConnections() case BluetoothAdapter.STATE_TURNING_OFF => Log.i(Tag, "Bluetooth disabled, stopping connectivity") @@ -144,20 +144,20 @@ class BluetoothInterface(Service: ChatService, Crypto: Crypto) extends Interface * Initiates data transfer with device. */ def onConnectionOpened(device: Device, socket: BluetoothSocket): Unit = { - devices += (device.Id -> device) - connections += (device.Id -> - new TransferThread(device, socket, this, Crypto, onReceiveMessage)) - connections(device.Id).start() + devices += (device.id -> device) + connections += (device.id -> + new TransferThread(device, socket, this, crypto, onReceiveMessage)) + connections(device.id).start() } /** * Removes device from active connections. */ def onConnectionClosed(device: Device, socket: BluetoothSocket): Unit = { - devices -= device.Id - connections -= device.Id - Service.callConnectionListeners() - addressDeviceMap.inverse().remove(device.Id) + devices -= device.id + connections -= device.id + service.callConnectionListeners() + addressDeviceMap.inverse().remove(device.id) } /** @@ -170,13 +170,13 @@ class BluetoothInterface(Service: ChatService, Crypto: Crypto) extends Interface */ private def onReceiveMessage(msg: Message, device: Device.ID): Unit = msg.Body match { case info: ConnectionInfo => - val address = Crypto.calculateAddress(info.key) + val address = crypto.calculateAddress(info.key) // Service.onConnectionOpened sends message, so mapping already needs to be in place. addressDeviceMap.put(address, device) - if (!Service.onConnectionOpened(msg)) + if (!service.onConnectionOpened(msg)) addressDeviceMap.remove(address) case _ => - Service.onMessageReceived(msg) + service.onMessageReceived(msg) } /** diff --git a/app/src/main/scala/com/nutomic/ensichat/bluetooth/ConnectThread.scala b/app/src/main/scala/com/nutomic/ensichat/bluetooth/ConnectThread.scala index 9c02750..afb30e6 100644 --- a/app/src/main/scala/com/nutomic/ensichat/bluetooth/ConnectThread.scala +++ b/app/src/main/scala/com/nutomic/ensichat/bluetooth/ConnectThread.scala @@ -32,7 +32,7 @@ class ConnectThread(device: Device, onConnected: (Device, BluetoothSocket) => Un return } - Log.i(Tag, "Successfully connected to device " + device.Name) + Log.i(Tag, "Successfully connected to device " + device.name) onConnected(new Device(device.bluetoothDevice, true), socket) } diff --git a/app/src/main/scala/com/nutomic/ensichat/bluetooth/Device.scala b/app/src/main/scala/com/nutomic/ensichat/bluetooth/Device.scala index 60ac5b8..2112f17 100644 --- a/app/src/main/scala/com/nutomic/ensichat/bluetooth/Device.scala +++ b/app/src/main/scala/com/nutomic/ensichat/bluetooth/Device.scala @@ -7,13 +7,13 @@ private[bluetooth] object Device { /** * Holds bluetooth device IDs, which are just wrapped addresses (used for type safety). * - * @param Id A bluetooth device address. + * @param id A bluetooth device address. */ - case class ID(private val Id: String) { + case class ID(private val id: String) { - require(Id.matches("([A-Z0-9][A-Z0-9]:){5}[A-Z0-9][A-Z0-9]"), "Invalid device ID format") + require(id.matches("([A-Z0-9][A-Z0-9]:){5}[A-Z0-9][A-Z0-9]"), "Invalid device ID format") - override def toString = Id + override def toString = id } @@ -22,7 +22,7 @@ private[bluetooth] object Device { /** * Holds information about a remote bluetooth device. */ -private[bluetooth] case class Device(Id: Device.ID, Name: String, Connected: Boolean, +private[bluetooth] case class Device(id: Device.ID, name: String, connected: Boolean, btDevice: Option[BluetoothDevice] = None) { def this(btDevice: BluetoothDevice, connected: Boolean) = { diff --git a/app/src/main/scala/com/nutomic/ensichat/bluetooth/TransferThread.scala b/app/src/main/scala/com/nutomic/ensichat/bluetooth/TransferThread.scala index fab9048..2a4ff4a 100644 --- a/app/src/main/scala/com/nutomic/ensichat/bluetooth/TransferThread.scala +++ b/app/src/main/scala/com/nutomic/ensichat/bluetooth/TransferThread.scala @@ -52,7 +52,7 @@ class TransferThread(device: Device, socket: BluetoothSocket, Handler: Bluetooth if (inStream.available() > 0) { val msg = Message.read(inStream) - onReceive(msg, device.Id) + onReceive(msg, device.id) Log.v(Tag, "Receiving " + msg) } } catch { diff --git a/app/src/main/scala/com/nutomic/ensichat/fragments/ChatFragment.scala b/app/src/main/scala/com/nutomic/ensichat/fragments/ChatFragment.scala index f3b96af..501cb3a 100644 --- a/app/src/main/scala/com/nutomic/ensichat/fragments/ChatFragment.scala +++ b/app/src/main/scala/com/nutomic/ensichat/fragments/ChatFragment.scala @@ -48,7 +48,7 @@ class ChatFragment extends ListFragment with OnClickListener chatService = activity.service chatService.database.getContact(address) - .foreach(c => getActivity.setTitle(c.Name)) + .foreach(c => getActivity.setTitle(c.name)) // Read local device ID from service, adapter = new MessagesAdapter(getActivity, address) @@ -90,7 +90,7 @@ class ChatFragment extends ListFragment with OnClickListener override def onSaveInstanceState(outState: Bundle): Unit = { super.onSaveInstanceState(outState) - outState.putByteArray("device", address.Bytes) + outState.putByteArray("device", address.bytes) } /** @@ -110,7 +110,7 @@ class ChatFragment extends ListFragment with OnClickListener * Displays new messages in UI. */ override def onMessageReceived(msg: Message): Unit = { - if (Set(msg.Header.Origin, msg.Header.Target).contains(address)) + if (Set(msg.Header.origin, msg.Header.target).contains(address)) adapter.add(msg) } diff --git a/app/src/main/scala/com/nutomic/ensichat/fragments/ContactsFragment.scala b/app/src/main/scala/com/nutomic/ensichat/fragments/ContactsFragment.scala index de63d8a..e781480 100644 --- a/app/src/main/scala/com/nutomic/ensichat/fragments/ContactsFragment.scala +++ b/app/src/main/scala/com/nutomic/ensichat/fragments/ContactsFragment.scala @@ -60,7 +60,7 @@ class ContactsFragment extends ListFragment with OnContactsUpdatedListener { * Opens a chat with the clicked device. */ override def onListItemClick(l: ListView, v: View, position: Int, id: Long): Unit = - getActivity.asInstanceOf[MainActivity].openChat(adapter.getItem(position).Address) + getActivity.asInstanceOf[MainActivity].openChat(adapter.getItem(position).address) override def onContactsUpdated(): Unit = { getActivity.runOnUiThread(new Runnable { diff --git a/app/src/main/scala/com/nutomic/ensichat/fragments/SettingsFragment.scala b/app/src/main/scala/com/nutomic/ensichat/fragments/SettingsFragment.scala index 91f87f4..a37443e 100644 --- a/app/src/main/scala/com/nutomic/ensichat/fragments/SettingsFragment.scala +++ b/app/src/main/scala/com/nutomic/ensichat/fragments/SettingsFragment.scala @@ -48,7 +48,7 @@ class SettingsFragment extends PreferenceFragment with OnPreferenceChangeListene if (preference.getKey == KeyUserName) { val service = getActivity.asInstanceOf[EnsiChatActivity].service service.database.getContacts - .foreach(c => service.sendTo(c.Address, new UserName(newValue.toString))) + .foreach(c => service.sendTo(c.address, new UserName(newValue.toString))) } preference.setSummary(newValue.toString) true diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/Address.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/Address.scala index 672e5d2..34a7a7b 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/Address.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/Address.scala @@ -21,23 +21,23 @@ object Address { /** * Holds a device address and provides conversion methods. * - * @param Bytes SHA-256 hash of the node's public key. + * @param bytes SHA-256 hash of the node's public key. */ -case class Address(Bytes: Array[Byte]) { +case class Address(bytes: Array[Byte]) { - require(Bytes.length == Address.Length, "Invalid address length (was " + Bytes.length + ")") + require(bytes.length == Address.Length, "Invalid address length (was " + bytes.length + ")") def this(base16: String) { this(BaseEncoding.base16().decode(base16)) } - override def hashCode = util.Arrays.hashCode(Bytes) + override def hashCode = util.Arrays.hashCode(bytes) override def equals(a: Any) = a match { - case o: Address => Bytes.deep == o.Bytes.deep + case o: Address => bytes.deep == o.bytes.deep case _ => false } - override def toString = BaseEncoding.base16().encode(Bytes) + override def toString = BaseEncoding.base16().encode(bytes) } diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala index 3db555c..39f916b 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/ChatService.scala @@ -17,7 +17,6 @@ import com.nutomic.ensichat.util.Database import scala.collection.mutable import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Future -import scala.ref.WeakReference object ChatService { @@ -151,10 +150,10 @@ class ChatService extends Service { * Decrypts and verifies incoming messages, forwards valid ones to [[onNewMessage()]]. */ def onMessageReceived(msg: Message): Unit = { - if (msg.Header.Target == Crypto.getLocalAddress(this)) { + if (msg.Header.target == Crypto.getLocalAddress(this)) { val decrypted = crypto.decrypt(msg) if (!crypto.verify(decrypted)) { - Log.i(Tag, "Ignoring message with invalid signature from " + msg.Header.Origin) + Log.i(Tag, "Ignoring message with invalid signature from " + msg.Header.origin) return } onNewMessage(decrypted) @@ -168,25 +167,25 @@ class ChatService extends Service { */ private def onNewMessage(msg: Message): Unit = msg.Body match { case name: UserName => - val contact = new User(msg.Header.Origin, name.Name) + val contact = new User(msg.Header.origin, name.name) knownUsers += contact - if (database.getContact(msg.Header.Origin).nonEmpty) + if (database.getContact(msg.Header.origin).nonEmpty) database.changeContactName(contact) callConnectionListeners() case _: RequestAddContact => - if (msg.Header.Origin == Crypto.getLocalAddress(this)) + if (msg.Header.origin == Crypto.getLocalAddress(this)) return - Log.i(Tag, "Remote device " + msg.Header.Origin + + Log.i(Tag, "Remote device " + msg.Header.origin + " wants to add us as a contact, showing notification") val intent = new Intent(this, classOf[ConfirmAddContactDialog]) - intent.putExtra(ConfirmAddContactDialog.ExtraContactAddress, msg.Header.Origin.toString) + intent.putExtra(ConfirmAddContactDialog.ExtraContactAddress, msg.Header.origin.toString) val pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT) val notification = new Notification.Builder(this) - .setContentTitle(getString(R.string.notification_friend_request, getUser(msg.Header.Origin))) + .setContentTitle(getString(R.string.notification_friend_request, getUser(msg.Header.origin))) .setSmallIcon(R.drawable.ic_launcher) .setContentIntent(pi) .setAutoCancel(true) @@ -259,6 +258,6 @@ class ChatService extends Service { btInterface.getConnections def getUser(address: Address) = - knownUsers.find(_.Address == address).getOrElse(new User(address, address.toString)) + knownUsers.find(_.address == address).getOrElse(new User(address, address.toString)) } diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/ChatServiceBinder.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/ChatServiceBinder.scala index dbc09cc..2840485 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/ChatServiceBinder.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/ChatServiceBinder.scala @@ -2,4 +2,4 @@ package com.nutomic.ensichat.protocol import android.os.Binder -case class ChatServiceBinder (Service: ChatService) extends Binder +case class ChatServiceBinder (service: ChatService) extends Binder diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/Crypto.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/Crypto.scala index 01ea1d7..3671dee 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/Crypto.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/Crypto.scala @@ -141,11 +141,11 @@ class Crypto(Context: Context) { def verify(msg: Message, key: PublicKey = null): Boolean = { val publicKey = if (key != null) key - else loadKey(msg.Header.Origin.toString, classOf[PublicKey]) + else loadKey(msg.Header.origin.toString, classOf[PublicKey]) val sig = Signature.getInstance(SignAlgorithm) sig.initVerify(publicKey) sig.update(msg.Body.write) - sig.verify(msg.Crypto.Signature.get) + sig.verify(msg.Crypto.signature.get) } /** @@ -229,7 +229,7 @@ class Crypto(Context: Context) { private def keyFolder = new File(Context.getFilesDir, "keys") def encrypt(msg: Message, key: PublicKey = null): Message = { - assert(msg.Crypto.Signature.isDefined, "Message must be signed before encryption") + assert(msg.Crypto.signature.isDefined, "Message must be signed before encryption") // Symmetric encryption of data val secretKey = makeSecretKey() @@ -240,25 +240,25 @@ class Crypto(Context: Context) { // Asymmetric encryption of secret key val publicKey = if (key != null) key - else loadKey(msg.Header.Target.toString, classOf[PublicKey]) + else loadKey(msg.Header.target.toString, classOf[PublicKey]) val asymmetricCipher = Cipher.getInstance(KeyAlgorithm) asymmetricCipher.init(Cipher.WRAP_MODE, publicKey) new Message(msg.Header, - new CryptoData(msg.Crypto.Signature, Option(asymmetricCipher.wrap(secretKey))), encrypted) + new CryptoData(msg.Crypto.signature, Option(asymmetricCipher.wrap(secretKey))), encrypted) } def decrypt(msg: Message): Message = { // Asymmetric decryption of secret key val asymmetricCipher = Cipher.getInstance(KeyAlgorithm) asymmetricCipher.init(Cipher.UNWRAP_MODE, loadKey(PrivateKeyAlias, classOf[PrivateKey])) - val key = asymmetricCipher.unwrap(msg.Crypto.Key.get, SymmetricKeyAlgorithm, Cipher.SECRET_KEY) + val key = asymmetricCipher.unwrap(msg.Crypto.key.get, SymmetricKeyAlgorithm, Cipher.SECRET_KEY) // Symmetric decryption of data val symmetricCipher = Cipher.getInstance(SymmetricCipherAlgorithm) symmetricCipher.init(Cipher.DECRYPT_MODE, key) - val decrypted = copyThroughCipher(symmetricCipher, msg.Body.asInstanceOf[EncryptedBody].Data) - val body = msg.Header.MessageType match { + val decrypted = copyThroughCipher(symmetricCipher, msg.Body.asInstanceOf[EncryptedBody].data) + val body = msg.Header.messageType match { case RequestAddContact.Type => RequestAddContact.read(decrypted) case ResultAddContact.Type => ResultAddContact.read(decrypted) case Text.Type => Text.read(decrypted) diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/Router.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/Router.scala index faf0633..a9e40b5 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/Router.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/Router.scala @@ -10,7 +10,7 @@ class Router(activeConnections: () => Set[Address], send: (Address, Message) => private var messageSeen = Set[(Address, Int)]() def onReceive(msg: Message): Unit = { - val info = (msg.Header.Origin, msg.Header.SeqNum) + val info = (msg.Header.origin, msg.Header.seqNum) if (messageSeen.contains(info)) return diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/User.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/User.scala index d7ee3c7..ef21b6c 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/User.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/User.scala @@ -1,4 +1,3 @@ package com.nutomic.ensichat.protocol - -case class User(Address: Address, Name: String) \ No newline at end of file +case class User(address: Address, name: String) \ No newline at end of file diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/CryptoData.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/CryptoData.scala index d544425..bb5e5d9 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/CryptoData.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/CryptoData.scala @@ -36,11 +36,11 @@ object CryptoData { /** * Holds the signature and (optional) key that are stored in a message. */ -case class CryptoData(Signature: Option[Array[Byte]], Key: Option[Array[Byte]]) { +case class CryptoData(signature: Option[Array[Byte]], key: Option[Array[Byte]]) { override def equals(a: Any): Boolean = a match { - case o: CryptoData => util.Arrays.equals(Signature.orNull, o.Signature.orNull) && - util.Arrays.equals(Key.orNull, o.Key.orNull) + case o: CryptoData => util.Arrays.equals(signature.orNull, o.signature.orNull) && + util.Arrays.equals(key.orNull, o.key.orNull) case _ => false } @@ -49,15 +49,15 @@ case class CryptoData(Signature: Option[Array[Byte]], Key: Option[Array[Byte]]) */ def write: Array[Byte] = { val b = ByteBuffer.allocate(length) - BufferUtils.putUnsignedShort(b, Signature.get.length) + BufferUtils.putUnsignedShort(b, signature.get.length) BufferUtils.putUnsignedShort(b, keyLength) - b.put(Signature.get) - if (Key.nonEmpty) b.put(Key.get) + b.put(signature.get) + if (key.nonEmpty) b.put(key.get) b.array() } - def length = 4 + Signature.get.length + keyLength + def length = 4 + signature.get.length + keyLength - private def keyLength = if (Key.isDefined) Key.get.length else 0 + private def keyLength = if (key.isDefined) key.get.length else 0 } diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/EncryptedBody.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/EncryptedBody.scala index 482d098..660097e 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/EncryptedBody.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/EncryptedBody.scala @@ -3,11 +3,11 @@ package com.nutomic.ensichat.protocol.messages /** * Represents the data in an encrypted message body. */ -case class EncryptedBody(Data: Array[Byte]) extends MessageBody { +case class EncryptedBody(data: Array[Byte]) extends MessageBody { override def messageType = -1 - def write = Data + def write = data - override def length = Data.length + override def length = data.length } diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/Message.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/Message.scala index 3d57862..0a53a6b 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/Message.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/Message.scala @@ -26,7 +26,7 @@ object Message { stream.read(headerBytes, 0, MessageHeader.Length) val header = MessageHeader.read(headerBytes) - val contentLength = (header.Length - MessageHeader.Length).toInt + val contentLength = (header.length - MessageHeader.Length).toInt val contentBytes = new Array[Byte](contentLength) var numRead = 0 do { @@ -36,7 +36,7 @@ object Message { val (crypto, remaining) = CryptoData.read(contentBytes) val body = - header.MessageType match { + header.messageType match { case ConnectionInfo.Type => ConnectionInfo.read(remaining) case _ => new EncryptedBody(remaining) } diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/MessageHeader.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/MessageHeader.scala index c706b73..c3c065a 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/MessageHeader.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/MessageHeader.scala @@ -45,13 +45,13 @@ object MessageHeader { /** * First part of any message, used for routing. */ -case class MessageHeader(MessageType: Int, - HopLimit: Int, - Origin: Address, - Target: Address, - SeqNum: Int, - Length: Long = -1, - HopCount: Int = 0) { +case class MessageHeader(messageType: Int, + hopLimit: Int, + origin: Address, + target: Address, + seqNum: Int, + length: Long = -1, + hopCount: Int = 0) { /** * Writes the header to byte array. @@ -59,16 +59,16 @@ case class MessageHeader(MessageType: Int, def write(contentLength: Int): Array[Byte] = { val b = ByteBuffer.allocate(MessageHeader.Length) - val versionAndType = (MessageHeader.Version << 12) | MessageType + val versionAndType = (MessageHeader.Version << 12) | messageType BufferUtils.putUnsignedShort(b, versionAndType) - BufferUtils.putUnsignedByte(b, HopLimit) - BufferUtils.putUnsignedByte(b, HopCount) + BufferUtils.putUnsignedByte(b, hopLimit) + BufferUtils.putUnsignedByte(b, hopCount) BufferUtils.putUnsignedInt(b, MessageHeader.Length + contentLength) - b.put(Origin.Bytes) - b.put(Target.Bytes) + b.put(origin.bytes) + b.put(target.bytes) - BufferUtils.putUnsignedShort(b, SeqNum) + BufferUtils.putUnsignedShort(b, seqNum) BufferUtils.putUnsignedShort(b, 0) b.array() @@ -76,11 +76,11 @@ case class MessageHeader(MessageType: Int, override def equals(a: Any): Boolean = a match { case o: MessageHeader => - MessageType == o.MessageType && - HopLimit == o.HopLimit && - Origin == o.Origin && - Target == o.Target && - HopCount == o.HopCount + messageType == o.messageType && + hopLimit == o.hopLimit && + origin == o.origin && + target == o.target && + hopCount == o.hopCount // Don't compare length as it may be unknown (when header was just created without a body). case _ => false } diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/ResultAddContact.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/ResultAddContact.scala index e3350bd..3cb2c09 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/ResultAddContact.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/ResultAddContact.scala @@ -23,13 +23,13 @@ object ResultAddContact { /** * Contains the result of a [[RequestAddContact]] message. */ -case class ResultAddContact(Accepted: Boolean) extends MessageBody { +case class ResultAddContact(accepted: Boolean) extends MessageBody { override def messageType = ResultAddContact.Type override def write: Array[Byte] = { val b = ByteBuffer.allocate(length) - BufferUtils.putUnsignedByte(b, if (Accepted) 0x80 else 0) + BufferUtils.putUnsignedByte(b, if (accepted) 0x80 else 0) (0 to 1).foreach(_ => BufferUtils.putUnsignedByte(b, 0)) b.array() } diff --git a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/UserName.scala b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/UserName.scala index 20a3fee..4a6380b 100644 --- a/app/src/main/scala/com/nutomic/ensichat/protocol/messages/UserName.scala +++ b/app/src/main/scala/com/nutomic/ensichat/protocol/messages/UserName.scala @@ -24,18 +24,18 @@ object UserName { /** * Holds the display name of the sender. */ -case class UserName(Name: String) extends MessageBody { +case class UserName(name: String) extends MessageBody { override def messageType = UserName.Type override def write: Array[Byte] = { val b = ByteBuffer.allocate(length) - val bytes = Name.getBytes(Message.Charset) + val bytes = name.getBytes(Message.Charset) BufferUtils.putUnsignedInt(b, bytes.length) b.put(bytes) b.array() } - override def length = 4 + Name.getBytes(Message.Charset).length + override def length = 4 + name.getBytes(Message.Charset).length } diff --git a/app/src/main/scala/com/nutomic/ensichat/util/Database.scala b/app/src/main/scala/com/nutomic/ensichat/util/Database.scala index e016d1c..edbff3f 100644 --- a/app/src/main/scala/com/nutomic/ensichat/util/Database.scala +++ b/app/src/main/scala/com/nutomic/ensichat/util/Database.scala @@ -82,8 +82,8 @@ class Database(context: Context) override def onMessageReceived(msg: Message): Unit = msg.Body match { case text: Text => val cv = new ContentValues() - cv.put("origin", msg.Header.Origin.toString) - cv.put("target", msg.Header.Target.toString) + cv.put("origin", msg.Header.origin.toString) + cv.put("target", msg.Header.target.toString) // toString used as workaround for compile error with Long. cv.put("date", text.time.getTime.toString) cv.put("text", text.text) @@ -130,16 +130,16 @@ class Database(context: Context) */ def addContact(contact: User): Unit = { val cv = new ContentValues() - cv.put("address", contact.Address.toString) - cv.put("name", contact.Name.toString) + cv.put("address", contact.address.toString) + cv.put("name", contact.name.toString) getWritableDatabase.insert("contacts", null, cv) contactsUpdatedListeners.foreach(_.onContactsUpdated() ) } def changeContactName(contact: User): Unit = { val cv = new ContentValues() - cv.put("name", contact.Name.toString) - getWritableDatabase.update("contacts", cv, "address = ?", Array(contact.Address.toString)) + cv.put("name", contact.name.toString) + getWritableDatabase.update("contacts", cv, "address = ?", Array(contact.address.toString)) contactsUpdatedListeners.foreach(_.onContactsUpdated()) } diff --git a/app/src/main/scala/com/nutomic/ensichat/util/IdenticonGenerator.scala b/app/src/main/scala/com/nutomic/ensichat/util/IdenticonGenerator.scala index 1a7d58b..fe50229 100644 --- a/app/src/main/scala/com/nutomic/ensichat/util/IdenticonGenerator.scala +++ b/app/src/main/scala/com/nutomic/ensichat/util/IdenticonGenerator.scala @@ -25,7 +25,7 @@ object IdenticonGenerator { * @param size The size of the bitmap returned. */ def generate(address: Address, size: (Int, Int), context: Context): Bitmap = { - val hash = address.Bytes + val hash = address.bytes // Create base image and colors. var identicon = Bitmap.createBitmap(Width, Height, Config.ARGB_8888) diff --git a/app/src/main/scala/com/nutomic/ensichat/util/MessagesAdapter.scala b/app/src/main/scala/com/nutomic/ensichat/util/MessagesAdapter.scala index dd3bdd3..067d22d 100644 --- a/app/src/main/scala/com/nutomic/ensichat/util/MessagesAdapter.scala +++ b/app/src/main/scala/com/nutomic/ensichat/util/MessagesAdapter.scala @@ -26,7 +26,7 @@ class MessagesAdapter(context: Context, remoteAddress: Address) extends val lp = new RelativeLayout.LayoutParams(tv.getLayoutParams) val margin = (MessageMargin * context.getResources.getDisplayMetrics.density).toInt - if (getItem(position).Header.Origin != remoteAddress) { + if (getItem(position).Header.origin != remoteAddress) { view.setGravity(Gravity.RIGHT) lp.setMargins(margin, 0, 0, 0) } else { diff --git a/app/src/main/scala/com/nutomic/ensichat/util/UsersAdapter.scala b/app/src/main/scala/com/nutomic/ensichat/util/UsersAdapter.scala index dcfb042..d1b0e1d 100644 --- a/app/src/main/scala/com/nutomic/ensichat/util/UsersAdapter.scala +++ b/app/src/main/scala/com/nutomic/ensichat/util/UsersAdapter.scala @@ -15,7 +15,7 @@ class UsersAdapter(context: Context) extends override def getView(position: Int, convertView: View, parent: ViewGroup): View = { val view = super.getView(position, convertView, parent) val title: TextView = view.findViewById(android.R.id.text1).asInstanceOf[TextView] - title.setText(getItem(position).Name) + title.setText(getItem(position).name) view }