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

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git


The following commit(s) were added to refs/heads/master by this push:
     new 2567adc365 Upgrade Cal4j to 4.1.0 (#2621)
2567adc365 is described below

commit 2567adc365cc4123b62bf1661099de2d51fe438b
Author: Houssem Nasri <houssemnasri2...@gmail.com>
AuthorDate: Mon Feb 3 20:57:13 2025 +0100

    Upgrade Cal4j to 4.1.0 (#2621)
---
 mailet/icalendar/pom.xml                           |  1 -
 .../james/transport/mailets/ICALToHeader.java      | 22 ++++++++++++++--------
 .../transport/mailets/model/ICALAttributeDTO.java  | 13 ++++++++-----
 pom.xml                                            |  6 ++++++
 4 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/mailet/icalendar/pom.xml b/mailet/icalendar/pom.xml
index 0ac4dd410d..9c586b2e32 100644
--- a/mailet/icalendar/pom.xml
+++ b/mailet/icalendar/pom.xml
@@ -76,7 +76,6 @@
         <dependency>
             <groupId>org.mnode.ical4j</groupId>
             <artifactId>ical4j</artifactId>
-            <version>3.2.9</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git 
a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToHeader.java
 
b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToHeader.java
index 5d57f639b9..eb1437cb6e 100644
--- 
a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToHeader.java
+++ 
b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToHeader.java
@@ -20,6 +20,7 @@
 package org.apache.james.transport.mailets;
 
 import java.util.Map;
+import java.util.Optional;
 
 import jakarta.mail.MessagingException;
 import jakarta.mail.internet.MimeMessage;
@@ -125,20 +126,25 @@ public class ICALToHeader extends GenericMailet {
 
     private void writeToHeaders(Calendar calendar, Mail mail) throws 
MessagingException {
         MimeMessage mimeMessage = mail.getMessage();
-        VEvent vevent = (VEvent) calendar.getComponent("VEVENT");
-        addIfPresent(mimeMessage, X_MEETING_METHOD_HEADER, 
calendar.getMethod());
+        VEvent vevent = (VEvent) calendar.getComponent("VEVENT")
+            .orElseThrow(() -> new MessagingException("Failed to get VEVENT 
component"));
+        addIfPresent(mimeMessage, X_MEETING_METHOD_HEADER, 
optionalOf(calendar.getMethod()));
         addIfPresent(mimeMessage, X_MEETING_UID_HEADER, vevent.getUid());
-        addIfPresent(mimeMessage, X_MEETING_RECURRENCE_ID_HEADER, 
vevent.getRecurrenceId());
-        addIfPresent(mimeMessage, X_MEETING_SEQUENCE_HEADER, 
vevent.getSequence());
+        addIfPresent(mimeMessage, X_MEETING_RECURRENCE_ID_HEADER, 
optionalOf(vevent.getRecurrenceId()));
+        addIfPresent(mimeMessage, X_MEETING_SEQUENCE_HEADER, 
optionalOf(vevent.getSequence()));
         addIfPresent(mimeMessage, X_MEETING_DTSTAMP_HEADER, 
vevent.getDateStamp());
     }
 
-    private void addIfPresent(MimeMessage mimeMessage, String headerName, 
Property property) {
-        if (property != null) {
+    public static Optional<? extends Property> optionalOf(Property property) {
+        return Optional.ofNullable(property);
+    }
+
+    private void addIfPresent(MimeMessage mimeMessage, String headerName, 
Optional<? extends Property> property) {
+        if (property.isPresent()) {
             try {
-                mimeMessage.addHeader(headerName, property.getValue());
+                mimeMessage.addHeader(headerName, property.get().getValue());
             } catch (MessagingException e) {
-                LOGGER.error("Could not add header {} with value {}", 
headerName, property.getValue(), e);
+                LOGGER.error("Could not add header {} with value {}", 
headerName, property.get().getValue(), e);
             }
         }
     }
diff --git 
a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/model/ICALAttributeDTO.java
 
b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/model/ICALAttributeDTO.java
index 37cb232a5f..ce648c3dc5 100644
--- 
a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/model/ICALAttributeDTO.java
+++ 
b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/model/ICALAttributeDTO.java
@@ -31,6 +31,8 @@ import com.google.common.base.Preconditions;
 import net.fortuna.ical4j.model.Calendar;
 import net.fortuna.ical4j.model.Property;
 import net.fortuna.ical4j.model.component.VEvent;
+import net.fortuna.ical4j.model.property.DtStamp;
+import net.fortuna.ical4j.model.property.Uid;
 
 public class ICALAttributeDTO {
 
@@ -39,22 +41,23 @@ public class ICALAttributeDTO {
     public static class Builder {
         public RequiresSender from(Calendar calendar, byte[] originalEvent) {
             String ical = new String(originalEvent, StandardCharsets.UTF_8);
-            VEvent vevent = (VEvent) calendar.getComponent("VEVENT");
-            Optional<String> uid = optionalOf(vevent.getUid());
+            VEvent vevent = (VEvent) calendar.getComponent("VEVENT")
+                .orElseThrow(() -> new RuntimeException("Failed to get VEVENT 
component"));
+            Optional<Uid> uid = vevent.getUid();
             Optional<String> method = optionalOf(calendar.getMethod());
             Optional<String> recurrenceId = 
optionalOf(vevent.getRecurrenceId());
             Optional<String> sequence = optionalOf(vevent.getSequence());
-            Optional<String> dtstamp = optionalOf(vevent.getDateStamp());
+            Optional<DtStamp> dtstamp = vevent.getDateStamp();
 
             Preconditions.checkNotNull(ical);
 
             return sender -> recipient -> replyTo ->
                     new ICALAttributeDTO(
                             ical,
-                            uid, sender.asString(),
+                            uid.map(Uid::getValue), sender.asString(),
                             recipient.asString(),
                             replyTo.asString(),
-                            dtstamp, method, sequence,
+                            dtstamp.map(DtStamp::getValue), method, sequence,
                             recurrenceId);
         }
 
diff --git a/pom.xml b/pom.xml
index 7045ddd5d9..251abe1908 100644
--- a/pom.xml
+++ b/pom.xml
@@ -675,6 +675,7 @@
         <scala.version>${scala.base}.14</scala.version>
         <doclint>none</doclint>
         <mockito.version>5.10.0</mockito.version>
+        <ical4j.version>4.1.0</ical4j.version>
         <jacoco-maven-plugin.version>0.8.12</jacoco-maven-plugin.version>
         <javacrumbs.json-unit.version>3.2.7</javacrumbs.json-unit.version>
     </properties>
@@ -2811,6 +2812,11 @@
                 <artifactId>junit-vintage-engine</artifactId>
                 <version>${junit.vintage.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.mnode.ical4j</groupId>
+                <artifactId>ical4j</artifactId>
+                <version>${ical4j.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.mock-server</groupId>
                 <artifactId>mockserver-netty</artifactId>


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to