From 8c5c66fa9a2a11418bbc2a0078c48aa30b8626a9 Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Thu, 2 Aug 2018 15:06:17 +0100
Subject: [PATCH] Add null-safety and thread-safety annotations.

---
 .../bramble/network/AndroidNetworkManager.java           | 9 +++++++--
 .../briarproject/bramble/api/network/NetworkManager.java | 3 +++
 .../briarproject/bramble/api/network/NetworkStatus.java  | 6 ++++++
 .../bramble/api/network/event/NetworkStatusEvent.java    | 5 +++++
 4 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java
index f8e52e965a..490f8b4ec3 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java
@@ -13,6 +13,8 @@ import org.briarproject.bramble.api.lifecycle.Service;
 import org.briarproject.bramble.api.network.NetworkManager;
 import org.briarproject.bramble.api.network.NetworkStatus;
 import org.briarproject.bramble.api.network.event.NetworkStatusEvent;
+import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.system.Scheduler;
 
 import java.util.concurrent.Future;
@@ -22,6 +24,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.logging.Logger;
 
+import javax.annotation.Nullable;
 import javax.inject.Inject;
 
 import static android.content.Context.CONNECTIVITY_SERVICE;
@@ -35,6 +38,8 @@ import static java.util.concurrent.TimeUnit.MINUTES;
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static java.util.logging.Level.INFO;
 
+@MethodsNotNullByDefault
+@ParametersNotNullByDefault
 class AndroidNetworkManager implements NetworkManager, Service {
 
 	private static final Logger LOG =
@@ -122,7 +127,7 @@ class AndroidNetworkManager implements NetworkManager, Service {
 			}
 		}
 
-		private boolean isSleepOrDozeEvent(String action) {
+		private boolean isSleepOrDozeEvent(@Nullable String action) {
 			boolean isSleep = ACTION_SCREEN_ON.equals(action) ||
 					ACTION_SCREEN_OFF.equals(action);
 			boolean isDoze = SDK_INT >= 23 &&
@@ -130,7 +135,7 @@ class AndroidNetworkManager implements NetworkManager, Service {
 			return isSleep || isDoze;
 		}
 
-		private boolean isApEvent(String action) {
+		private boolean isApEvent(@Nullable String action) {
 			return WIFI_AP_STATE_CHANGED_ACTION.equals(action);
 		}
 	}
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkManager.java
index 5299c81267..f95eddc7d7 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkManager.java
@@ -1,5 +1,8 @@
 package org.briarproject.bramble.api.network;
 
+import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+
+@NotNullByDefault
 public interface NetworkManager {
 
 	NetworkStatus getNetworkStatus();
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkStatus.java b/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkStatus.java
index af3f7f94d6..2cdb22e768 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkStatus.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkStatus.java
@@ -1,5 +1,11 @@
 package org.briarproject.bramble.api.network;
 
+import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+
+import javax.annotation.concurrent.Immutable;
+
+@Immutable
+@NotNullByDefault
 public class NetworkStatus {
 
 	private final boolean connected, wifi;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/network/event/NetworkStatusEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/network/event/NetworkStatusEvent.java
index 8ecf08ada1..f37bff94dc 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/network/event/NetworkStatusEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/network/event/NetworkStatusEvent.java
@@ -2,7 +2,12 @@ package org.briarproject.bramble.api.network.event;
 
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.network.NetworkStatus;
+import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 
+import javax.annotation.concurrent.Immutable;
+
+@Immutable
+@NotNullByDefault
 public class NetworkStatusEvent extends Event {
 
 	private final NetworkStatus status;
-- 
GitLab