This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 6893c54e4b7 Upgrade to ical 4.0.0
6893c54e4b7 is described below

commit 6893c54e4b75fe5766af0d5738f7c912af5e7637
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Jun 20 11:44:14 2024 +0200

    Upgrade to ical 4.0.0
---
 .../camel/component/ical/ICalConverterLoader.java  |  2 +
 .../apache/camel/component/ical/ICalConverter.java | 18 +++++-
 .../camel/component/ical/ICalDataFormatTest.java   | 65 +++++++---------------
 parent/pom.xml                                     |  2 +-
 4 files changed, 40 insertions(+), 47 deletions(-)

diff --git 
a/components/camel-ical/src/generated/java/org/apache/camel/component/ical/ICalConverterLoader.java
 
b/components/camel-ical/src/generated/java/org/apache/camel/component/ical/ICalConverterLoader.java
index 0be6475ce2d..7da745f71a6 100644
--- 
a/components/camel-ical/src/generated/java/org/apache/camel/component/ical/ICalConverterLoader.java
+++ 
b/components/camel-ical/src/generated/java/org/apache/camel/component/ical/ICalConverterLoader.java
@@ -46,6 +46,8 @@ public final class ICalConverterLoader implements 
TypeConverterLoader, CamelCont
     private void registerConverters(TypeConverterRegistry registry) {
         addTypeConverter(registry, java.io.ByteArrayInputStream.class, 
net.fortuna.ical4j.model.Calendar.class, false,
             (type, exchange, value) -> 
org.apache.camel.component.ical.ICalConverter.toStream((net.fortuna.ical4j.model.Calendar)
 value, exchange));
+        addTypeConverter(registry, java.time.Instant.class, 
net.fortuna.ical4j.model.property.DateProperty.class, false,
+            (type, exchange, value) -> 
org.apache.camel.component.ical.ICalConverter.toInstant((net.fortuna.ical4j.model.property.DateProperty)
 value));
         addTypeConverter(registry, java.util.Date.class, 
net.fortuna.ical4j.model.property.DateProperty.class, false,
             (type, exchange, value) -> 
org.apache.camel.component.ical.ICalConverter.toDate((net.fortuna.ical4j.model.property.DateProperty)
 value));
     }
diff --git 
a/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalConverter.java
 
b/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalConverter.java
index c889228596e..3450c03cc6c 100644
--- 
a/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalConverter.java
+++ 
b/components/camel-ical/src/main/java/org/apache/camel/component/ical/ICalConverter.java
@@ -18,6 +18,8 @@ package org.apache.camel.component.ical;
 
 import java.io.ByteArrayInputStream;
 import java.io.UnsupportedEncodingException;
+import java.time.Instant;
+import java.time.temporal.Temporal;
 import java.util.Date;
 
 import net.fortuna.ical4j.model.Calendar;
@@ -31,13 +33,27 @@ import org.apache.camel.support.ExchangeHelper;
  */
 @Converter(generateLoader = true)
 public final class ICalConverter {
+
     private ICalConverter() {
         // Helper class
     }
 
     @Converter
     public static Date toDate(DateProperty property) {
-        return property.getDate();
+        Temporal t = property.getDate();
+        if (t instanceof Instant ins) {
+            return Date.from(ins);
+        }
+        return null;
+    }
+
+    @Converter
+    public static Instant toInstant(DateProperty property) {
+        Temporal t = property.getDate();
+        if (t instanceof Instant ins) {
+            return ins;
+        }
+        return null;
     }
 
     @Converter
diff --git 
a/components/camel-ical/src/test/java/org/apache/camel/component/ical/ICalDataFormatTest.java
 
b/components/camel-ical/src/test/java/org/apache/camel/component/ical/ICalDataFormatTest.java
index 46e4dc3db79..f86f7308ba5 100644
--- 
a/components/camel-ical/src/test/java/org/apache/camel/component/ical/ICalDataFormatTest.java
+++ 
b/components/camel-ical/src/test/java/org/apache/camel/component/ical/ICalDataFormatTest.java
@@ -19,12 +19,8 @@ package org.apache.camel.component.ical;
 import java.io.File;
 import java.io.InputStream;
 import java.net.URI;
-import java.text.ParseException;
-import java.util.GregorianCalendar;
 
 import net.fortuna.ical4j.model.Calendar;
-import net.fortuna.ical4j.model.DateTime;
-import net.fortuna.ical4j.model.PropertyList;
 import net.fortuna.ical4j.model.TimeZone;
 import net.fortuna.ical4j.model.TimeZoneRegistry;
 import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
@@ -33,14 +29,14 @@ import net.fortuna.ical4j.model.component.VTimeZone;
 import net.fortuna.ical4j.model.parameter.Cn;
 import net.fortuna.ical4j.model.parameter.Role;
 import net.fortuna.ical4j.model.property.Attendee;
-import net.fortuna.ical4j.model.property.CalScale;
 import net.fortuna.ical4j.model.property.DtEnd;
 import net.fortuna.ical4j.model.property.DtStamp;
 import net.fortuna.ical4j.model.property.DtStart;
 import net.fortuna.ical4j.model.property.ProdId;
 import net.fortuna.ical4j.model.property.Summary;
 import net.fortuna.ical4j.model.property.Uid;
-import net.fortuna.ical4j.model.property.Version;
+import net.fortuna.ical4j.model.property.immutable.ImmutableCalScale;
+import net.fortuna.ical4j.model.property.immutable.ImmutableVersion;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.converter.IOConverter;
@@ -109,65 +105,44 @@ public class ICalDataFormatTest extends CamelTestSupport {
      *
      * @return ICal calendar object.
      */
-    protected Calendar createTestCalendar() throws ParseException {
+    protected Calendar createTestCalendar() {
         // Create a TimeZone
         TimeZoneRegistry registry = 
TimeZoneRegistryFactory.getInstance().createRegistry();
         TimeZone timezone = registry.getTimeZone("America/New_York");
         VTimeZone tz = timezone.getVTimeZone();
 
-        // Start Date is on: April 1, 2013, 9:00 am
-        java.util.Calendar startDate = new GregorianCalendar();
-        startDate.setTimeZone(timezone);
-        startDate.set(java.util.Calendar.MONTH, java.util.Calendar.APRIL);
-        startDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
-        startDate.set(java.util.Calendar.YEAR, 2013);
-        startDate.set(java.util.Calendar.HOUR_OF_DAY, 17);
-        startDate.set(java.util.Calendar.MINUTE, 0);
-        startDate.set(java.util.Calendar.SECOND, 0);
-
-        // End Date is on: April 1, 2013, 13:00
-        java.util.Calendar endDate = new GregorianCalendar();
-        endDate.setTimeZone(timezone);
-        endDate.set(java.util.Calendar.MONTH, java.util.Calendar.APRIL);
-        endDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
-        endDate.set(java.util.Calendar.YEAR, 2013);
-        endDate.set(java.util.Calendar.HOUR_OF_DAY, 21);
-        endDate.set(java.util.Calendar.MINUTE, 0);
-        endDate.set(java.util.Calendar.SECOND, 0);
-
         // Create the event
-        PropertyList propertyList = new PropertyList();
-        propertyList.add(new DtStamp("20130324T180000Z"));
-        propertyList.add(new DtStart(new DateTime(startDate.getTime())));
-        propertyList.add(new DtEnd(new DateTime(endDate.getTime())));
-        propertyList.add(new Summary("Progress Meeting"));
-        VEvent meeting = new VEvent(propertyList);
+        VEvent meeting = new VEvent();
+        meeting.replace(new DtStamp("20130324T180000Z"));
+        meeting.add(new DtStart("20130401T170000"));
+        meeting.add(new DtEnd("20130401T210000"));
+        meeting.add(new Summary("Progress Meeting"));
 
         // add timezone info..
-        meeting.getProperties().add(tz.getTimeZoneId());
+        meeting.add(tz.getTimeZoneId().get());
 
         // generate unique identifier..
-        meeting.getProperties().add(new Uid("00000000"));
+        meeting.add(new Uid("00000000"));
 
         // add attendees..
         Attendee dev1 = new Attendee(URI.create("mailto:[email protected]";));
-        dev1.getParameters().add(Role.REQ_PARTICIPANT);
-        dev1.getParameters().add(new Cn("Developer 1"));
-        meeting.getProperties().add(dev1);
+        dev1.add(Role.REQ_PARTICIPANT);
+        dev1.add(new Cn("Developer 1"));
+        meeting.add(dev1);
 
         Attendee dev2 = new Attendee(URI.create("mailto:[email protected]";));
-        dev2.getParameters().add(Role.OPT_PARTICIPANT);
-        dev2.getParameters().add(new Cn("Developer 2"));
-        meeting.getProperties().add(dev2);
+        dev2.add(Role.OPT_PARTICIPANT);
+        dev2.add(new Cn("Developer 2"));
+        meeting.add(dev2);
 
         // Create a calendar
         net.fortuna.ical4j.model.Calendar icsCalendar = new 
net.fortuna.ical4j.model.Calendar();
-        icsCalendar.getProperties().add(Version.VERSION_2_0);
-        icsCalendar.getProperties().add(new ProdId("-//Events Calendar//iCal4j 
1.0//EN"));
-        icsCalendar.getProperties().add(CalScale.GREGORIAN);
+        icsCalendar.add(ImmutableVersion.VERSION_2_0);
+        icsCalendar.add(new ProdId("-//Events Calendar//iCal4j 1.0//EN"));
+        icsCalendar.add(ImmutableCalScale.GREGORIAN);
 
         // Add the event and print
-        icsCalendar.getComponents().add(meeting);
+        icsCalendar.add(meeting);
         return icsCalendar;
     }
 
diff --git a/parent/pom.xml b/parent/pom.xml
index ec23ca41ca3..c6b0015e84a 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -222,7 +222,7 @@
         <httpasyncclient-version>4.1.5</httpasyncclient-version>
         <huaweicloud-obs-version>3.24.3</huaweicloud-obs-version>
         <huaweicloud-sdk-version>3.1.101</huaweicloud-sdk-version>
-        <ical4j-version>3.2.18</ical4j-version>
+        <ical4j-version>4.0.0</ical4j-version>
         <icu4j-version>75.1</icu4j-version>
         <ignite-version>2.16.0</ignite-version>
         <impsort-maven-plugin-version>1.10.0</impsort-maven-plugin-version>

Reply via email to