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>