diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java b/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java index b896cbed94..90448e0f02 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/BeforeSendTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import android.support.annotation.NonNull; import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -30,13 +31,13 @@ public void setUp() throws Exception { config = new Configuration("key"); config.setDelivery(new Delivery() { @Override - public void deliver(SessionTrackingPayload payload, - Configuration config) + public void deliver(@NonNull SessionTrackingPayload payload, + @NonNull Configuration config) throws DeliveryFailureException {} @Override - public void deliver(Report report, - Configuration config) + public void deliver(@NonNull Report report, + @NonNull Configuration config) throws DeliveryFailureException { lastReport = report; } @@ -53,21 +54,21 @@ public void tearDown() throws Exception { public void testCallbackOrderPreserved() { config.beforeSend(new BeforeSend() { @Override - public boolean run(Report report) { + public boolean run(@NonNull Report report) { result = result + "a"; return true; } }); config.beforeSend(new BeforeSend() { @Override - public boolean run(Report report) { + public boolean run(@NonNull Report report) { result = result + "b"; return true; } }); config.beforeSend(new BeforeSend() { @Override - public boolean run(Report report) { + public boolean run(@NonNull Report report) { result = result + "c"; return true; } @@ -81,14 +82,14 @@ public boolean run(Report report) { public void testCancelReport() { config.beforeSend(new BeforeSend() { @Override - public boolean run(Report report) { + public boolean run(@NonNull Report report) { result = result + "a"; return true; } }); config.beforeSend(new BeforeSend() { @Override - public boolean run(Report report) { + public boolean run(@NonNull Report report) { result = result + "b"; return false; } @@ -102,7 +103,7 @@ public boolean run(Report report) { public void testAlterReport() { config.beforeSend(new BeforeSend() { @Override - public boolean run(Report report) { + public boolean run(@NonNull Report report) { report.getError().setGroupingHash("123"); return true; } diff --git a/sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java b/sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java index fa9f8612cb..6a6fc3505d 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/BugsnagTestUtils.java @@ -75,9 +75,9 @@ static SessionStore generateSessionStore() { static SessionTrackingApiClient generateSessionTrackingApiClient() { return new SessionTrackingApiClient() { @Override - public void postSessionTrackingPayload(String urlString, - SessionTrackingPayload payload, - Map headers) + public void postSessionTrackingPayload(@NonNull String urlString, + @NonNull SessionTrackingPayload payload, + @NonNull Map headers) throws NetworkException, BadResponseException { } @@ -88,9 +88,9 @@ public void postSessionTrackingPayload(String urlString, static ErrorReportApiClient generateErrorReportApiClient() { // no-op return new ErrorReportApiClient() { @Override - public void postReport(String urlString, - Report report, - Map headers) + public void postReport(@NonNull String urlString, + @NonNull Report report, + @NonNull Map headers) throws NetworkException, BadResponseException { } @@ -100,13 +100,13 @@ public void postReport(String urlString, public static Delivery generateDelivery() { return new Delivery() { @Override - public void deliver(SessionTrackingPayload payload, - Configuration config) + public void deliver(@NonNull SessionTrackingPayload payload, + @NonNull Configuration config) throws DeliveryFailureException {} @Override - public void deliver(Report report, - Configuration config) + public void deliver(@NonNull Report report, + @NonNull Configuration config) throws DeliveryFailureException {} }; diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java b/sdk/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java index f3e2d81ebe..44f49ec33d 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/ClientConfigTest.java @@ -6,6 +6,7 @@ import static org.junit.Assert.assertTrue; import android.content.Context; +import android.support.annotation.NonNull; import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -105,13 +106,13 @@ public void testCustomDeliveryOverride() { config = BugsnagTestUtils.generateConfiguration(); Delivery customDelivery = new Delivery() { @Override - public void deliver(SessionTrackingPayload payload, - Configuration config) + public void deliver(@NonNull SessionTrackingPayload payload, + @NonNull Configuration config) throws DeliveryFailureException {} @Override - public void deliver(Report report, - Configuration config) + public void deliver(@NonNull Report report, + @NonNull Configuration config) throws DeliveryFailureException {} }; diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java b/sdk/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java index 6df29a82a2..c79be5038d 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/ClientNotifyTest.java @@ -2,6 +2,7 @@ import static org.junit.Assert.assertEquals; +import android.support.annotation.NonNull; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -49,7 +50,7 @@ public void testNotifyBlockingDefaultSeverity() { public void testNotifyBlockingCallback() { client.notifyBlocking(new RuntimeException("Testing"), new Callback() { @Override - public void beforeNotify(Report report) { + public void beforeNotify(@NonNull Report report) { report.getError().setUserName("Foo"); } }); @@ -72,7 +73,7 @@ public void testNotifyBlockingCustomStackTrace() { client.notifyBlocking("Name", "Message", stacktrace, new Callback() { @Override - public void beforeNotify(Report report) { + public void beforeNotify(@NonNull Report report) { report.getError().setSeverity(Severity.ERROR); } }); @@ -89,9 +90,9 @@ static class FakeClient implements ErrorReportApiClient { Report report; @Override - public void postReport(String urlString, - Report report, - Map headers) + public void postReport(@NonNull String urlString, + @NonNull Report report, + @NonNull Map headers) throws NetworkException, BadResponseException { try { Thread.sleep(10); // simulate async request diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java b/sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java index a946281ba0..83c4b8aadc 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/ClientTest.java @@ -10,6 +10,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -116,7 +117,7 @@ public void testRestoreUserFromPrefs() { client.beforeNotify(new BeforeNotify() { @Override - public boolean run(Error error) { + public boolean run(@NonNull Error error) { // Pull out the user information user.setId(error.getUser().getId()); user.setEmail(error.getUser().getEmail()); diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java b/sdk/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java index 3358881703..3d75c0851a 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/ConcurrentCallbackTest.java @@ -36,7 +36,7 @@ public void testClientNotifyModification() throws Exception { final Collection beforeNotifyTasks = client.config.getBeforeNotifyTasks(); client.beforeNotify(new BeforeNotify() { @Override - public boolean run(Error error) { + public boolean run(@NonNull Error error) { beforeNotifyTasks.add(new BeforeNotifySkeleton()); // modify the Set, when iterating to the next callback this should not crash return true; @@ -66,7 +66,7 @@ public boolean shouldRecord(@NonNull Breadcrumb breadcrumb) { static class BeforeNotifySkeleton implements BeforeNotify { @Override - public boolean run(Error error) { + public boolean run(@NonNull Error error) { return true; } } diff --git a/sdk/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java b/sdk/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java index 26e9f35f1d..177cfc4d88 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/DeliveryCompatTest.java @@ -5,6 +5,8 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import android.support.annotation.NonNull; + import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -38,9 +40,9 @@ public void deliverReport() throws Exception { deliveryCompat.errorReportApiClient = new ErrorReportApiClient() { @Override - public void postReport(String urlString, - Report report, - Map headers) + public void postReport(@NonNull String urlString, + @NonNull Report report, + @NonNull Map headers) throws NetworkException, BadResponseException { customCount.incrementAndGet(); } @@ -58,9 +60,9 @@ public void deliverSession() throws Exception { deliveryCompat.sessionTrackingApiClient = new SessionTrackingApiClient() { @Override - public void postSessionTrackingPayload(String urlString, - SessionTrackingPayload payload, - Map headers) + public void postSessionTrackingPayload(@NonNull String urlString, + @NonNull SessionTrackingPayload payload, + @NonNull Map headers) throws NetworkException, BadResponseException { customCount.incrementAndGet(); } diff --git a/sdk/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java b/sdk/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java index a1a7612068..83c5e2d1f2 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/ErrorReportApiClientTest.java @@ -3,6 +3,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import android.support.annotation.NonNull; import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -53,9 +54,9 @@ private static class FakeApiClient implements ErrorReportApiClient { private Report report; @Override - public void postReport(String urlString, - Report report, - Map headers) + public void postReport(@NonNull String urlString, + @NonNull Report report, + @NonNull Map headers) throws NetworkException, BadResponseException { this.report = report; } diff --git a/sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java b/sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java index a4bdb8cb88..dde426a003 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/NullMetadataTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import android.support.annotation.NonNull; import android.support.test.InstrumentationRegistry; import org.junit.After; @@ -95,7 +96,7 @@ public void testConfigSetNullMetadata() throws Exception { public void testNotify() throws Exception { Bugsnag.beforeNotify(new BeforeNotify() { @Override - public boolean run(Error error) { + public boolean run(@NonNull Error error) { validateDefaultMetadata(error.getMetaData()); return false; } diff --git a/sdk/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java b/sdk/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java index 28b1b96db0..ec3c97600e 100644 --- a/sdk/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java +++ b/sdk/src/androidTest/java/com/bugsnag/android/UniqueBeforeNotifyTest.java @@ -2,6 +2,7 @@ import static org.junit.Assert.assertEquals; +import android.support.annotation.NonNull; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -20,14 +21,14 @@ public class UniqueBeforeNotifyTest { private BeforeNotify firstCb = new BeforeNotify() { @Override - public boolean run(Error error) { + public boolean run(@NonNull Error error) { return handleCallback(); } }; private BeforeNotify secondCb = new BeforeNotify() { @Override - public boolean run(Error error) { + public boolean run(@NonNull Error error) { return handleCallback(); } }; @@ -72,7 +73,7 @@ public void testDuplicateCallback() { public void testCallbackOrder() { client.beforeNotify(new BeforeNotify() { @Override - public boolean run(Error error) { + public boolean run(@NonNull Error error) { assertEquals(0, callbackCount); callbackCount++; return false; @@ -80,7 +81,7 @@ public boolean run(Error error) { }); client.beforeNotify(new BeforeNotify() { @Override - public boolean run(Error error) { + public boolean run(@NonNull Error error) { assertEquals(1, callbackCount); return false; } diff --git a/sdk/src/main/java/com/bugsnag/android/BlockedThreadDetector.java b/sdk/src/main/java/com/bugsnag/android/BlockedThreadDetector.java index 949ff992d3..1fcc4cf369 100644 --- a/sdk/src/main/java/com/bugsnag/android/BlockedThreadDetector.java +++ b/sdk/src/main/java/com/bugsnag/android/BlockedThreadDetector.java @@ -36,7 +36,6 @@ interface Delegate { final long blockedThresholdMs; final Handler uiHandler; final Handler watchdogHandler; - private final HandlerThread watchdogHandlerThread; final Delegate delegate; final ActivityManager activityManager; @@ -66,7 +65,7 @@ interface Delegate { this.uiHandler = new Handler(looper); this.activityManager = activityManager; - watchdogHandlerThread = new HandlerThread("bugsnag-anr-watchdog"); + HandlerThread watchdogHandlerThread = new HandlerThread("bugsnag-anr-watchdog"); watchdogHandlerThread.start(); watchdogHandler = new Handler(watchdogHandlerThread.getLooper()); } diff --git a/sdk/src/main/java/com/bugsnag/android/CachedThread.java b/sdk/src/main/java/com/bugsnag/android/CachedThread.java index 40f15e81e2..8c8048b5d8 100644 --- a/sdk/src/main/java/com/bugsnag/android/CachedThread.java +++ b/sdk/src/main/java/com/bugsnag/android/CachedThread.java @@ -8,12 +8,12 @@ * A representation of a thread recorded in a {@link Report} */ class CachedThread implements JsonStream.Streamable { - private long id; - private String name; - private String type; - private boolean isErrorReportingThread; - private StackTraceElement[] frames; - private Configuration config; + private final long id; + private final String name; + private final String type; + private final boolean isErrorReportingThread; + private final StackTraceElement[] frames; + private final Configuration config; CachedThread(Configuration config, long id, String name, String type, boolean isErrorReportingThread, StackTraceElement[] frames) { diff --git a/sdk/src/main/java/com/bugsnag/android/Client.java b/sdk/src/main/java/com/bugsnag/android/Client.java index c8d3e27c4e..800ac6c761 100644 --- a/sdk/src/main/java/com/bugsnag/android/Client.java +++ b/sdk/src/main/java/com/bugsnag/android/Client.java @@ -26,7 +26,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Locale; import java.util.Map; import java.util.Observable; import java.util.Observer; @@ -75,7 +74,7 @@ public class Client extends Observable implements Observer { final EventReceiver eventReceiver; final SessionTracker sessionTracker; - SharedPreferences sharedPrefs; + final SharedPreferences sharedPrefs; private final OrientationEventListener orientationListener; diff --git a/sdk/src/main/java/com/bugsnag/android/Configuration.java b/sdk/src/main/java/com/bugsnag/android/Configuration.java index 0c84adc217..fe7f954997 100644 --- a/sdk/src/main/java/com/bugsnag/android/Configuration.java +++ b/sdk/src/main/java/com/bugsnag/android/Configuration.java @@ -8,7 +8,6 @@ import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; diff --git a/sdk/src/main/java/com/bugsnag/android/DeviceData.java b/sdk/src/main/java/com/bugsnag/android/DeviceData.java index 611500440a..4bd092eef0 100644 --- a/sdk/src/main/java/com/bugsnag/android/DeviceData.java +++ b/sdk/src/main/java/com/bugsnag/android/DeviceData.java @@ -55,19 +55,19 @@ class DeviceData { private final boolean rooted; @Nullable - Float screenDensity; + final Float screenDensity; @Nullable - Integer dpi; + final Integer dpi; @Nullable - String screenResolution; + final String screenResolution; @NonNull - String locale; + final String locale; @NonNull - String[] cpuAbi; + final String[] cpuAbi; DeviceData(Client client) { this.client = client; diff --git a/sdk/src/main/java/com/bugsnag/android/Error.java b/sdk/src/main/java/com/bugsnag/android/Error.java index fee59359ac..683b16e003 100644 --- a/sdk/src/main/java/com/bugsnag/android/Error.java +++ b/sdk/src/main/java/com/bugsnag/android/Error.java @@ -19,10 +19,10 @@ public class Error implements JsonStream.Streamable { @NonNull - private Map appData = new HashMap(); + private Map appData = new HashMap<>(); @NonNull - private Map deviceData = new HashMap(); + private Map deviceData = new HashMap<>(); @NonNull private User user = new User(); diff --git a/sdk/src/main/java/com/bugsnag/android/ErrorReader.java b/sdk/src/main/java/com/bugsnag/android/ErrorReader.java index 91f344940a..44e030dc1d 100644 --- a/sdk/src/main/java/com/bugsnag/android/ErrorReader.java +++ b/sdk/src/main/java/com/bugsnag/android/ErrorReader.java @@ -245,7 +245,7 @@ private static StackTraceElement[] readStackFrames(JsonReader reader) throws IOE frames.add(readStackFrame(reader)); } reader.endArray(); - return frames.toArray(new StackTraceElement[frames.size()]); + return frames.toArray(new StackTraceElement[0]); } private static StackTraceElement readStackFrame(JsonReader reader) throws IOException { @@ -290,16 +290,19 @@ private static ArrayList readSeverityReason(JsonReader reader) throws IO String type = null; String attributeValue = null; while (reader.hasNext()) { - String name = reader.nextName(); - if (name.equals("type")) { - type = reader.nextString(); - } else if (name.equals("attributes")) { - reader.beginObject(); - reader.nextName(); - attributeValue = reader.nextString(); - reader.endObject(); - } else { - reader.skipValue(); + switch (reader.nextName()) { + case "type": + type = reader.nextString(); + break; + case "attributes": + reader.beginObject(); + reader.nextName(); + attributeValue = reader.nextString(); + reader.endObject(); + break; + default: + reader.skipValue(); + break; } } reader.endObject(); @@ -324,32 +327,40 @@ private static Session readSession(JsonReader reader) throws IOException { User user = null; reader.beginObject(); while (reader.hasNext()) { - String name = reader.nextName(); - if (name.equals("id")) { - id = reader.nextString(); - } else if (name.equals("startedAt")) { - try { - startedAt = DateUtils.fromIso8601(reader.nextString()); - } catch (Exception ex) { - throw new IOException("Unable to parse session startedAt: ", ex); - } - } else if (name.equals("events")) { - reader.beginObject(); - while (reader.hasNext()) { - String eventName = reader.nextName(); - if (eventName.equals("unhandled")) { - unhandled = reader.nextInt(); - } else if (eventName.equals("handled")) { - handled = reader.nextInt(); - } else { - reader.skipValue(); + switch (reader.nextName()) { + case "id": + id = reader.nextString(); + break; + case "startedAt": + try { + startedAt = DateUtils.fromIso8601(reader.nextString()); + } catch (Exception ex) { + throw new IOException("Unable to parse session startedAt: ", ex); } - } - reader.endObject(); - } else if (name.equals("user")) { - user = readUser(reader); - } else { - reader.skipValue(); + break; + case "events": + reader.beginObject(); + while (reader.hasNext()) { + switch (reader.nextName()) { + case "unhandled": + unhandled = reader.nextInt(); + break; + case "handled": + handled = reader.nextInt(); + break; + default: + reader.skipValue(); + break; + } + } + reader.endObject(); + break; + case "user": + user = readUser(reader); + break; + default: + reader.skipValue(); + break; } } reader.endObject(); @@ -396,7 +407,7 @@ private static ThreadState readThreadState(Configuration config, JsonReader read } } reader.endArray(); - return new ThreadState(threads.toArray(new CachedThread[threads.size()])); + return new ThreadState(threads.toArray(new CachedThread[0])); } private static CachedThread readThread(Configuration config, diff --git a/sdk/src/main/java/com/bugsnag/android/EventReceiver.java b/sdk/src/main/java/com/bugsnag/android/EventReceiver.java index 40820064a3..1d1b51c73d 100644 --- a/sdk/src/main/java/com/bugsnag/android/EventReceiver.java +++ b/sdk/src/main/java/com/bugsnag/android/EventReceiver.java @@ -69,7 +69,7 @@ static boolean isAndroidKey(@NonNull String actionName) { @NonNull static String shortenActionNameIfNeeded(@NonNull String action) { if (isAndroidKey(action)) { - return action.substring(action.lastIndexOf(".") + 1, action.length()); + return action.substring(action.lastIndexOf(".") + 1); } else { return action; } diff --git a/sdk/src/main/java/com/bugsnag/android/Exceptions.java b/sdk/src/main/java/com/bugsnag/android/Exceptions.java index 5f38888e48..692f51bc20 100644 --- a/sdk/src/main/java/com/bugsnag/android/Exceptions.java +++ b/sdk/src/main/java/com/bugsnag/android/Exceptions.java @@ -3,20 +3,16 @@ import android.support.annotation.NonNull; import java.io.IOException; -import java.util.Collections; -import java.util.List; /** * Unwrap and serialize exception information and any "cause" exceptions. */ class Exceptions implements JsonStream.Streamable { - private final Configuration config; private final Throwable exception; private String exceptionType; private String[] projectPackages; Exceptions(Configuration config, Throwable exception) { - this.config = config; this.exception = exception; exceptionType = Configuration.DEFAULT_EXCEPTION_TYPE; projectPackages = config.getProjectPackages(); diff --git a/sdk/src/main/java/com/bugsnag/android/MetaData.java b/sdk/src/main/java/com/bugsnag/android/MetaData.java index 026bcbdc20..94d81cd5fb 100644 --- a/sdk/src/main/java/com/bugsnag/android/MetaData.java +++ b/sdk/src/main/java/com/bugsnag/android/MetaData.java @@ -122,7 +122,7 @@ static MetaData merge(@NonNull MetaData... metaDataList) { @SuppressWarnings({"unchecked", "rawtypes"}) MetaData newMeta = new MetaData(mergeMaps(stores.toArray(new Map[0]))); - newMeta.setFilters(filters.toArray(new String[filters.size()])); + newMeta.setFilters(filters.toArray(new String[0])); return newMeta; } diff --git a/sdk/src/main/java/com/bugsnag/android/Session.java b/sdk/src/main/java/com/bugsnag/android/Session.java index 882500cf6c..8eb88b204c 100644 --- a/sdk/src/main/java/com/bugsnag/android/Session.java +++ b/sdk/src/main/java/com/bugsnag/android/Session.java @@ -12,7 +12,7 @@ class Session implements JsonStream.Streamable { private final String id; private final Date startedAt; private final User user; - private AtomicBoolean autoCaptured; + private final AtomicBoolean autoCaptured; static Session copySession(Session session) { Session copy = new Session(session.id, session.startedAt, diff --git a/sdk/src/main/java/com/bugsnag/android/SessionTracker.java b/sdk/src/main/java/com/bugsnag/android/SessionTracker.java index f559650470..085efe2149 100644 --- a/sdk/src/main/java/com/bugsnag/android/SessionTracker.java +++ b/sdk/src/main/java/com/bugsnag/android/SessionTracker.java @@ -38,12 +38,12 @@ class SessionTracker extends Observable implements Application.ActivityLifecycle final SessionStore sessionStore; // This most recent time an Activity was stopped. - private AtomicLong lastExitedForegroundMs = new AtomicLong(0); + private final AtomicLong lastExitedForegroundMs = new AtomicLong(0); // The first Activity in this 'session' was started at this time. - private AtomicLong lastEnteredForegroundMs = new AtomicLong(0); - private AtomicReference currentSession = new AtomicReference<>(); - private Semaphore flushingRequest = new Semaphore(1); + private final AtomicLong lastEnteredForegroundMs = new AtomicLong(0); + private final AtomicReference currentSession = new AtomicReference<>(); + private final Semaphore flushingRequest = new Semaphore(1); SessionTracker(Configuration configuration, Client client, SessionStore sessionStore) { this(configuration, client, DEFAULT_TIMEOUT_MS, sessionStore); diff --git a/sdk/src/main/java/com/bugsnag/android/Stacktrace.java b/sdk/src/main/java/com/bugsnag/android/Stacktrace.java index a3c2cf5f9b..ff136c274b 100644 --- a/sdk/src/main/java/com/bugsnag/android/Stacktrace.java +++ b/sdk/src/main/java/com/bugsnag/android/Stacktrace.java @@ -3,7 +3,6 @@ import android.support.annotation.NonNull; import java.io.IOException; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; diff --git a/sdk/src/main/java/com/bugsnag/android/ThreadState.java b/sdk/src/main/java/com/bugsnag/android/ThreadState.java index 8e89ab1967..9f4c57c8ae 100644 --- a/sdk/src/main/java/com/bugsnag/android/ThreadState.java +++ b/sdk/src/main/java/com/bugsnag/android/ThreadState.java @@ -6,7 +6,6 @@ import java.io.IOException; import java.util.Arrays; import java.util.Comparator; -import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -20,9 +19,8 @@ class ThreadState implements JsonStream.Streamable { public ThreadState(@NonNull Configuration config, @NonNull Thread currentThread, - @NonNull Map allStackTraces, + @NonNull Map stackTraces, @Nullable Throwable exc) { - Map stackTraces = allStackTraces; // API 24/25 don't record the currentThread, add it in manually // https://issuetracker.google.com/issues/64122757 @@ -56,7 +54,7 @@ public ThreadState(@NonNull Configuration config, private Thread[] sortThreadsById(Map liveThreads) { Set threadSet = liveThreads.keySet(); - Thread[] threads = threadSet.toArray(new Thread[threadSet.size()]); + Thread[] threads = threadSet.toArray(new Thread[0]); Arrays.sort(threads, new Comparator() { public int compare(@NonNull Thread lhs, @NonNull Thread rhs) { return Long.valueOf(lhs.getId()).compareTo(rhs.getId());