Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bitfireAT/ical4android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicki Hirner <hirner@bitfire.at>2022-09-26 15:16:48 +0300
committerRicki Hirner <hirner@bitfire.at>2022-09-26 15:16:48 +0300
commite880785483f5e2e488982206cdaf1842e43dc36b (patch)
tree412778a9acadc02b7ef510aa0fae73c5c7b1c84a
parent2afb4f46dadbf9f65df9f127b30d8c08fcc9af61 (diff)
Handle case that time zone is known in Android, but not in ical4j
-rw-r--r--src/androidTest/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistryTest.kt13
-rw-r--r--src/main/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistry.kt4
2 files changed, 15 insertions, 2 deletions
diff --git a/src/androidTest/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistryTest.kt b/src/androidTest/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistryTest.kt
index 5958e16..d4e2209 100644
--- a/src/androidTest/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistryTest.kt
+++ b/src/androidTest/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistryTest.kt
@@ -5,6 +5,7 @@
package at.bitfire.ical4android
import net.fortuna.ical4j.model.DefaultTimeZoneRegistryFactory
+import net.fortuna.ical4j.model.TimeZone
import net.fortuna.ical4j.model.TimeZoneRegistry
import org.junit.Assert.*
import org.junit.Assume
@@ -42,6 +43,18 @@ class AndroidCompatTimeZoneRegistryTest {
}
@Test
+ fun getTimeZone_Existing_ButNotInIcal4j() {
+ val reg = AndroidCompatTimeZoneRegistry(object: TimeZoneRegistry {
+ override fun register(timezone: TimeZone?) = throw NotImplementedError()
+ override fun register(timezone: TimeZone?, update: Boolean) = throw NotImplementedError()
+ override fun clear() = throw NotImplementedError()
+ override fun getTimeZone(id: String?) = null
+
+ })
+ assertNull(reg.getTimeZone("Europe/Berlin"))
+ }
+
+ @Test
fun getTimeZone_Existing_Kiev() {
Assume.assumeFalse(systemKnowsKyiv)
val tz = registry.getTimeZone("Europe/Kiev")
diff --git a/src/main/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistry.kt b/src/main/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistry.kt
index 5f7246d..4030404 100644
--- a/src/main/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistry.kt
+++ b/src/main/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistry.kt
@@ -51,8 +51,8 @@ class AndroidCompatTimeZoneRegistry(
Example: getTimeZone("Europe/Kiev") returns a TimeZone with TZID:Europe/Kyiv since ical4j/3.2.5,
but most Android devices don't now Europe/Kyiv yet.
*/
- val tz = base.getTimeZone(id)
- if (tz.id != androidTzId) {
+ val tz: TimeZone? = base.getTimeZone(id)
+ if (tz != null && tz.id != androidTzId) {
Ical4Android.log.warning("Using Android TZID $androidTzId instead of ical4j ${tz.id}")
// create a copy of the VTIMEZONE so that we don't modify the original registry values (which are not immutable)