You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ji...@apache.org on 2024/07/02 08:00:02 UTC
(camel-quarkus) 11/14: Add dynamic discovery of ical zoneinfo
This is an automated email from the ASF dual-hosted git repository.
jiriondrusek pushed a commit to branch camel-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 54faab786a5c44ecac4713a1d21cadcb5c2bcd4a
Author: James Netherton <ja...@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