diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/CoronaTestRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/CoronaTestRepository.kt index 2921477f4d0bbddf6ae3ea9a7041d0df92055cd8..3e35ebfa07e11b1194ca6d8a214f785906ef1b10 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/CoronaTestRepository.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/CoronaTestRepository.kt @@ -2,6 +2,7 @@ package de.rki.coronawarnapp.coronatest import androidx.annotation.VisibleForTesting import de.rki.coronawarnapp.bugreporting.reportProblem +import de.rki.coronawarnapp.coronatest.errors.CoronaTestNotFoundException import de.rki.coronawarnapp.coronatest.migration.PCRTestMigration import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestGUID import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode @@ -123,7 +124,7 @@ class CoronaTestRepository @Inject constructor( internalData.updateBlocking { val toBeRemoved = values.singleOrNull { it.identifier == identifier } - ?: throw IllegalArgumentException("No found for $identifier") + ?: throw CoronaTestNotFoundException("No found for $identifier") getProcessor(toBeRemoved.type).onRemove(toBeRemoved) @@ -236,7 +237,7 @@ class CoronaTestRepository @Inject constructor( ) { internalData.updateBlocking { val original = values.singleOrNull { it.identifier == identifier } - ?: throw IllegalArgumentException("No found for $identifier") + ?: throw CoronaTestNotFoundException("No test found for $identifier") val processor = getProcessor(original.type) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/errors/CoronaTestNotFoundException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/errors/CoronaTestNotFoundException.kt new file mode 100644 index 0000000000000000000000000000000000000000..5b0b92c1131c40252541088f50f3c530d04cf8b1 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/errors/CoronaTestNotFoundException.kt @@ -0,0 +1,5 @@ +package de.rki.coronawarnapp.coronatest.errors + +class CoronaTestNotFoundException( + message: String +) : IllegalArgumentException(message) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/SubmissionRepository.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/SubmissionRepository.kt index 7e621ecff18388ef2a5f100003def572229cb6eb..70549aee1c17eb4acd80e6bdc2b7004a6e08b1ad 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/SubmissionRepository.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/SubmissionRepository.kt @@ -2,6 +2,7 @@ package de.rki.coronawarnapp.submission import de.rki.coronawarnapp.coronatest.CoronaTestRepository import de.rki.coronawarnapp.coronatest.TestRegistrationRequest +import de.rki.coronawarnapp.coronatest.errors.CoronaTestNotFoundException import de.rki.coronawarnapp.coronatest.server.CoronaTestResult import de.rki.coronawarnapp.coronatest.type.CoronaTest import de.rki.coronawarnapp.coronatest.type.pcr.PCRCoronaTest @@ -101,9 +102,15 @@ class SubmissionRepository @Inject constructor( scope.launch { val test = coronaTestRepository.coronaTests.first().singleOrNull { it.type == type } - ?: throw IllegalStateException("No test of type $type available") - - coronaTestRepository.removeTest(identifier = test.identifier) + if (test == null) { + Timber.tag(TAG).w("There is no test of type=$type to remove.") + return@launch + } + try { + coronaTestRepository.removeTest(identifier = test.identifier) + } catch (e: CoronaTestNotFoundException) { + Timber.tag(TAG).e(e, "Test not found (type=$type), already removed?") + } } }