diff options
author | Ricki Hirner <hirner@bitfire.at> | 2022-09-26 15:16:48 +0300 |
---|---|---|
committer | Ricki Hirner <hirner@bitfire.at> | 2022-09-26 15:16:48 +0300 |
commit | e880785483f5e2e488982206cdaf1842e43dc36b (patch) | |
tree | 412778a9acadc02b7ef510aa0fae73c5c7b1c84a | |
parent | 2afb4f46dadbf9f65df9f127b30d8c08fcc9af61 (diff) |
Handle case that time zone is known in Android, but not in ical4j
-rw-r--r-- | src/androidTest/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistryTest.kt | 13 | ||||
-rw-r--r-- | src/main/java/at/bitfire/ical4android/AndroidCompatTimeZoneRegistry.kt | 4 |
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) |