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
The following commit(s) were added to refs/heads/camel-main by this push:
new 9d703db3d8 Add dynamic discovery of ical zoneinfo
9d703db3d8 is described below
commit 9d703db3d83a77fa6700d13d756f5b062157ff7d
Author: James Netherton <[email protected]>
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