Skip to content

Commit

Permalink
Merge pull request #138 from embrace-io/refactor-null-checks
Browse files Browse the repository at this point in the history
Replace null assertions with checkNotNull
  • Loading branch information
fractalwrench committed Nov 29, 2023
2 parents f67e08e + 0dd59b1 commit b24e31d
Show file tree
Hide file tree
Showing 13 changed files with 46 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ public class EmbraceOkHttp3NetworkInterceptor internal constructor(
HttpMethod.fromString(request.method),
response.sentRequestAtMillis + offset,
response.receivedResponseAtMillis + offset,
if (request.body != null) request.body!!.contentLength() else 0,
request.body?.contentLength() ?: 0,
contentLength,
response.code,
request.header(embrace.traceIdHeader),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,10 @@ internal class EmbraceBreadcrumbService(
endTime: Long
): List<T> {
logger.logDeveloper("EmbraceBreadcrumbsService", "Filtering breadcrumbs for time window")
return filter(breadcrumbs) { crumb: T -> crumb!!.getStartTime() >= startTime && (endTime <= 0L || crumb.getStartTime() <= endTime) }
return filter(breadcrumbs) { crumb: T ->
checkNotNull(crumb)
crumb.getStartTime() >= startTime && (endTime <= 0L || crumb.getStartTime() <= endTime)
}
}

private fun <T> tryAddBreadcrumb(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ internal class EmbraceWebViewService(
)
}

webViewInfoMap[it.url + it.startTime] = processVitalList(it, webViewInfoMap[it.url + it.startTime]!!)
webViewInfoMap[it.url + it.startTime] = processVitalList(it, checkNotNull(webViewInfoMap[it.url + it.startTime]))

InternalStaticEmbraceLogger.logger.logDebug("Collected WebView core vital: $message")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,13 @@ internal class EmbraceNdkServiceRepository(
}

val comparator: Comparator<File> = if (byOldest) {
Comparator { first: File, next: File -> sorted[first]?.compareTo(sorted[next]!!)!! }
Comparator { first: File, next: File ->
checkNotNull(sorted[first]?.compareTo(checkNotNull(sorted[next])))
}
} else {
Comparator { first: File, next: File -> sorted[next]?.compareTo(sorted[first]!!)!! }
Comparator { first: File, next: File ->
checkNotNull(sorted[next]?.compareTo(checkNotNull(sorted[first])))
}
}
return nativeCrashList.sortedWith(comparator)
} catch (ex: Exception) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ internal class AppInfoTest {
assertEquals("release", obj.buildType)
assertEquals("demo", obj.buildFlavor)
assertEquals("prod", obj.environment)
assertFalse(obj.appUpdated!!)
assertFalse(obj.appUpdatedThisLaunch!!)
assertFalse(checkNotNull(obj.appUpdated))
assertFalse(checkNotNull(obj.appUpdatedThisLaunch))
assertEquals("5ac7fe", obj.bundleVersion)
assertFalse(obj.osUpdated!!)
assertFalse(obj.osUpdatedThisLaunch!!)
assertFalse(checkNotNull(obj.osUpdated))
assertFalse(checkNotNull(obj.osUpdatedThisLaunch))
assertEquals("5.10.0", obj.sdkSimpleVersion)
assertEquals("5.11.0", obj.sdkVersion)
assertEquals("fba09c9f", obj.reactNativeBundleId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import io.mockk.verify
import org.junit.After
import org.junit.Assert.assertArrayEquals
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNull
import org.junit.Assert.assertTrue
import org.junit.Before
Expand Down Expand Up @@ -92,11 +91,11 @@ internal class EmbraceDeliveryCacheManagerTest {
)
}

assertSessionsMatch(sessionMessage, deliveryCacheManager.loadSession("test_cache")!!)
assertSessionsMatch(sessionMessage, checkNotNull(deliveryCacheManager.loadSession("test_cache")))

val expectedByteArray =
serializer.bytesFromPayload(sessionMessage, SessionMessage::class.java)
assertArrayEquals(expectedByteArray, deliveryCacheManager.loadSessionBytes("test_cache")!!)
assertArrayEquals(expectedByteArray, checkNotNull(deliveryCacheManager.loadSessionBytes("test_cache")))
}

@Test
Expand Down Expand Up @@ -150,8 +149,8 @@ internal class EmbraceDeliveryCacheManagerTest {
deliveryCacheManager.saveSession(session)

val cachedSession = deliveryCacheManager.loadSession("test_remove")
assertNotNull(cachedSession)
assertSessionsMatch(session, cachedSession!!)
checkNotNull(cachedSession)
assertSessionsMatch(session, cachedSession)

deliveryCacheManager.deleteSession("test_remove")

Expand Down Expand Up @@ -250,7 +249,7 @@ internal class EmbraceDeliveryCacheManagerTest {

val allSessions = deliveryCacheManager.getAllCachedSessionIds()
assertEquals(1, allSessions.size)
assertSessionsMatch(session, deliveryCacheManager.loadSession(allSessions[0])!!)
assertSessionsMatch(session, checkNotNull(deliveryCacheManager.loadSession(allSessions[0])))

verify { cacheService.deleteFile("last_session.json") }
}
Expand Down Expand Up @@ -413,8 +412,8 @@ internal class EmbraceDeliveryCacheManagerTest {
private fun assertSessionsMatch(session1: SessionMessage, session2: SessionMessage) {
// SessionMessage does not implement equals, so we have to serialize to compare
assertEquals(
String(serializer.bytesFromPayload(session1, SessionMessage::class.java)!!),
String(serializer.bytesFromPayload(session2, SessionMessage::class.java)!!)
String(checkNotNull(serializer.bytesFromPayload(session1, SessionMessage::class.java))),
String(checkNotNull(serializer.bytesFromPayload(session2, SessionMessage::class.java)))
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,11 @@ internal class EmbraceUserServiceTest {
mockUserInfo()

with(service) {
assertTrue(info.personas!!.contains("payer"))
assertTrue(checkNotNull(info.personas).contains("payer"))
clearUserAsPayer()
assertFalse(info.personas!!.contains("payer"))
assertFalse(checkNotNull(info.personas).contains("payer"))
setUserAsPayer()
assertTrue(info.personas!!.contains("payer"))
assertTrue(checkNotNull(info.personas).contains("payer"))
}
}

Expand All @@ -137,7 +137,8 @@ internal class EmbraceUserServiceTest {
mockUserInfo()
val persona = "!@£$$%*("
service.addUserPersona(persona)
assertFalse(service.info.personas!!.contains(persona))
val personas = checkNotNull(service.info.personas)
assertFalse(personas.contains(persona))
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ internal class EventSanitizerFacadeTest {

assertNotNull(sanitizedMessage.event.customPropertiesMap)
assertNotNull(sanitizedMessage.event.sessionPropertiesMap)
assertNotNull(sanitizedMessage.userInfo!!.personas)
assertNotNull(checkNotNull(sanitizedMessage.userInfo).personas)
assertNotNull(sanitizedMessage.performanceInfo?.anrIntervals)
assertNotNull(sanitizedMessage.performanceInfo?.networkInterfaceIntervals)
assertNotNull(sanitizedMessage.performanceInfo?.memoryWarnings)
Expand All @@ -80,7 +80,7 @@ internal class EventSanitizerFacadeTest {

assertNull(sanitizedMessage.event.customPropertiesMap)
assertNull(sanitizedMessage.event.sessionPropertiesMap)
assertNull(sanitizedMessage.userInfo!!.personas)
assertNull(checkNotNull(sanitizedMessage.userInfo).personas)
assertNull(sanitizedMessage.performanceInfo?.anrIntervals)
assertNull(sanitizedMessage.performanceInfo?.networkInterfaceIntervals)
assertNull(sanitizedMessage.performanceInfo?.memoryWarnings)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ internal class TestCacheService : CacheService {
if (!cache.containsKey(name)) {
return null
}
return gson.fromJson(String(cache[name]!!), clazz)
val json = String(checkNotNull(cache[name]))
return gson.fromJson(json, clazz)
}

override fun cacheBytes(name: String, bytes: ByteArray?) {
Expand Down Expand Up @@ -55,10 +56,8 @@ internal class TestCacheService : CacheService {
}

override fun moveObject(src: String, dst: String): Boolean {
if (cache[src] == null) {
return false
}
cache[dst] = cache[src]!!
val bytes = cache[src] ?: return false
cache[dst] = bytes
cache.remove(src)
return true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ internal class ThreadInfoTest {
),
1
)
assertEquals(1, threadInfo.lines!!.size)
assertEquals(1, checkNotNull(threadInfo.lines).size)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ internal class NetworkCaptureEncryptionManagerTest {
@Test
fun `test encrypt and decrypt correctly`() {
val textToEncrypt = "text to encrypt"
val encryptedText = networkCaptureEncryptionManager.encrypt(textToEncrypt, sPublicKey)
val encryptedText = checkNotNull(networkCaptureEncryptionManager.encrypt(textToEncrypt, sPublicKey))

assertEquals(textToEncrypt, decrypt(encryptedText!!))
assertEquals(textToEncrypt, decrypt(encryptedText))
}

@Test
Expand All @@ -66,9 +66,9 @@ internal class NetworkCaptureEncryptionManagerTest {

@Test
fun `test encrypt and decrypt long payload correctly`() {
val encryptedText = networkCaptureEncryptionManager.encrypt(encryptedPayload, sPublicKey)
val encryptedText = checkNotNull(networkCaptureEncryptionManager.encrypt(encryptedPayload, sPublicKey))

assertNotNull(decrypt(encryptedText!!))
assertNotNull(decrypt(encryptedText))
}

private fun decrypt(data: String): String? {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ internal class EmbracePreferencesServiceTest {
fun `test is jail broken is saved`() {
assertNull(service.jailbroken)
service.jailbroken = true
assertTrue(service.jailbroken!!)
assertTrue(checkNotNull(service.jailbroken))
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -300,8 +300,8 @@ internal class SessionHandlerTest {
)

verify(exactly = 1) { preferencesService.incrementAndGetSessionNumber() }
assertNotNull(sessionMessage)
assertNotNull(sessionMessage!!.session)
checkNotNull(sessionMessage)
assertNotNull(sessionMessage.session)
// no need to verify anything else because it's already verified in another test case
}

Expand All @@ -320,8 +320,8 @@ internal class SessionHandlerTest {

// verify automatic session stopper has not been scheduled
verify { mockAutomaticSessionStopper wasNot Called }
assertNotNull(sessionMessage)
assertNotNull(sessionMessage!!.session)
checkNotNull(sessionMessage)
assertNotNull(sessionMessage.session)
// no need to verify anything else because it's already verified in another test case
}

Expand All @@ -344,8 +344,8 @@ internal class SessionHandlerTest {

// verify we are forcing log view with foreground activity class name
verify(exactly = 1) { mockBreadcrumbService.forceLogView(activityClassName, now) }
assertNotNull(sessionMessage)
assertNotNull(sessionMessage!!.session)
checkNotNull(sessionMessage)
assertNotNull(sessionMessage.session)
// no need to verify anything else because it's already verified in another test case
}

Expand Down

0 comments on commit b24e31d

Please sign in to comment.