This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch camel-main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 8feae2b7cf4b58af9a96e0e689e13f83f101cb35 Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Fri Jun 28 14:23:17 2024 +0100 Add dynamic discovery of ical zoneinfo --- .../component/ical/deployment/IcalProcessor.java | 40 +++++++++++++--------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/extensions/ical/deployment/src/main/java/org/apache/camel/quarkus/component/ical/deployment/IcalProcessor.java b/extensions/ical/deployment/src/main/java/org/apache/camel/quarkus/component/ical/deployment/IcalProcessor.java index fc92c7b22d..da5fd0eaa8 100644 --- a/extensions/ical/deployment/src/main/java/org/apache/camel/quarkus/component/ical/deployment/IcalProcessor.java +++ b/extensions/ical/deployment/src/main/java/org/apache/camel/quarkus/component/ical/deployment/IcalProcessor.java @@ -16,7 +16,10 @@ */ package org.apache.camel.quarkus.component.ical.deployment; -import java.util.stream.Stream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; +import java.util.Properties; import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; @@ -27,9 +30,10 @@ import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceDirectoryB import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; import net.fortuna.ical4j.model.TimeZoneRegistryImpl; import net.fortuna.ical4j.util.MapTimeZoneCache; +import org.jboss.logging.Logger; class IcalProcessor { - + private static final Logger LOG = Logger.getLogger(IcalProcessor.class); private static final String FEATURE = "camel-ical"; @BuildStep @@ -50,21 +54,23 @@ class IcalProcessor { nativeResources.produce(new NativeImageResourceBuildItem("net/fortuna/ical4j/model/tz.alias")); - Stream.of("zoneinfo/Africa", - "zoneinfo/America", - "zoneinfo/America/Argentina", - "zoneinfo/America/Indiana", - "zoneinfo/America/Kentucky", - "zoneinfo/America/North_Dakota", - "zoneinfo/Antarctica", - "zoneinfo/Arctic", - "zoneinfo/Asia", - "zoneinfo/Atlantic", - "zoneinfo/Australia", - "zoneinfo/Europe", - "zoneinfo/Indian", - "zoneinfo/Pacific") - .forEach(path -> nativeResourceDirs.produce(new NativeImageResourceDirectoryBuildItem(path))); + try (InputStream stream = Thread.currentThread().getContextClassLoader() + .getResourceAsStream("net/fortuna/ical4j/model/tz.alias")) { + Properties timezoneData = new Properties(); + timezoneData.load(stream); + timezoneData.values() + .stream() + .map(Objects::toString) + .map(timeZone -> timeZone.split("/")[0]) + .distinct() + .forEach(region -> { + nativeResourceDirs.produce(new NativeImageResourceDirectoryBuildItem("zoneinfo/" + region)); + nativeResourceDirs.produce(new NativeImageResourceDirectoryBuildItem("zoneinfo-global/" + region)); + }); + + } catch (IOException e) { + throw new RuntimeException("Failed reading ical tz.alias"); + } } @BuildStep