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

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


The following commit(s) were added to refs/heads/main by this push:
     new b543ab717d switch to eclipse.agnus for mail handling, fixes #5933 
(#5934)
b543ab717d is described below

commit b543ab717d5c101e44b8f24f2979b408c35e00e0
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Thu Oct 30 15:35:07 2025 +0100

    switch to eclipse.agnus for mail handling, fixes #5933 (#5934)
---
 .../integration-tests/integration-tests-mail.yaml  |   2 +-
 .../integration-tests/resource/mail/conf/keystore  | Bin 2242 -> 4449 bytes
 integration-tests/scripts/keystore                 | Bin 0 -> 2726 bytes
 lib/pom.xml                                        |  15 +++---
 plugins/misc/mail/pom.xml                          |   8 +--
 plugins/misc/mail/src/assembly/assembly.xml        |   8 +--
 .../hop/mail/metadata/MailServerConnection.java    |  23 ++++++--
 .../workflow/actions/getpop/MailConnection.java    |  60 +++------------------
 plugins/transforms/javascript/pom.xml              |   4 +-
 plugins/transforms/tika/pom.xml                    |  21 ++++----
 plugins/transforms/tika/src/assembly/assembly.xml  |   1 -
 11 files changed, 54 insertions(+), 88 deletions(-)

diff --git a/docker/integration-tests/integration-tests-mail.yaml 
b/docker/integration-tests/integration-tests-mail.yaml
index a02119a70f..50b5d9a227 100644
--- a/docker/integration-tests/integration-tests-mail.yaml
+++ b/docker/integration-tests/integration-tests-mail.yaml
@@ -21,7 +21,7 @@ services:
       file: integration-tests-base.yaml
       service: integration_test
     environment:
-      HOP_OPTIONS: "${HOP_OPTIONS} -Djavax.net.ssl.keyStore=/tmp/keystore 
-Djavax.net.ssl.trustStore=/tmp/keystore 
-Djavax.net.ssl.keyStorePassword=james72laBalle"
+      HOP_OPTIONS: "${HOP_OPTIONS} -Djavax.net.ssl.keyStore=/tmp/keystore 
-Djavax.net.ssl.trustStore=/tmp/keystore 
-Djavax.net.ssl.keyStorePassword=james72laBalle 
-Dmail.pop3.ssl.checkserveridentity=false 
-Dmail.imap.ssl.checkserveridentity=false 
-Dmail.smtp.ssl.checkserveridentity=false"
     depends_on:
       - james
     links:
diff --git a/docker/integration-tests/resource/mail/conf/keystore 
b/docker/integration-tests/resource/mail/conf/keystore
index b54fcc8387..a8a661935f 100644
Binary files a/docker/integration-tests/resource/mail/conf/keystore and 
b/docker/integration-tests/resource/mail/conf/keystore differ
diff --git a/integration-tests/scripts/keystore 
b/integration-tests/scripts/keystore
new file mode 100644
index 0000000000..4ca86bb3a4
Binary files /dev/null and b/integration-tests/scripts/keystore differ
diff --git a/lib/pom.xml b/lib/pom.xml
index 5e58629c65..6c17293244 100644
--- a/lib/pom.xml
+++ b/lib/pom.xml
@@ -32,6 +32,8 @@
     <properties>
         <accessors-smart.version>2.4.9</accessors-smart.version>
         <akka.version>2.5.32</akka.version>
+        <angus-activation.version>2.0.3</angus-activation.version>
+        <angus-mail.version>2.0.5</angus-mail.version>
         <apache-flink.version>1.16.3</apache-flink.version>
         <apache-spark.version>3.4.3</apache-spark.version>
         <asm.version>9.7</asm.version>
@@ -87,7 +89,6 @@
         <jackcess.version>4.0.4</jackcess.version>
         <!--check Beam BOM to find matching version 
https://repo1.maven.org/maven2/org/apache/beam/beam-runners-google-cloud-dataflow-java/xxx/beam-runners-google-cloud-dataflow-java-xxx.pom
 -->
         <jackson.version>2.15.4</jackson.version>
-        <jakarta-mail.version>2.0.1</jakarta-mail.version>
         <jakarta.version>3.1.0</jakarta.version>
         <javassist.version>3.28.0-GA</javassist.version>
         <jetty-jaas.version>11.0.26</jetty-jaas.version>
@@ -309,14 +310,14 @@
                 <version>${okio.version}</version>
             </dependency>
             <dependency>
-                <groupId>com.sun.activation</groupId>
-                <artifactId>jakarta.activation</artifactId>
-                <version>${jakarta-mail.version}</version>
+                <groupId>org.eclipse.angus</groupId>
+                <artifactId>angus-activation</artifactId>
+                <version>${angus-activation.version}</version>
             </dependency>
             <dependency>
-                <groupId>com.sun.mail</groupId>
-                <artifactId>jakarta.mail</artifactId>
-                <version>${jakarta-mail.version}</version>
+                <groupId>org.eclipse.angus</groupId>
+                <artifactId>angus-mail</artifactId>
+                <version>${angus-mail.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.tinkerpop.blueprints</groupId>
diff --git a/plugins/misc/mail/pom.xml b/plugins/misc/mail/pom.xml
index 918cbb088b..f7bcefd3f4 100644
--- a/plugins/misc/mail/pom.xml
+++ b/plugins/misc/mail/pom.xml
@@ -43,12 +43,12 @@
 
     <dependencies>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.sun.activation</groupId>
-            <artifactId>jakarta.activation</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-activation</artifactId>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git a/plugins/misc/mail/src/assembly/assembly.xml 
b/plugins/misc/mail/src/assembly/assembly.xml
index 284a32096a..ab6123de25 100644
--- a/plugins/misc/mail/src/assembly/assembly.xml
+++ b/plugins/misc/mail/src/assembly/assembly.xml
@@ -48,13 +48,7 @@
         </dependencySet>
         <dependencySet>
             <includes>
-                <include>com.sun.activation:jakarta.activation:jar</include>
-            </includes>
-            <outputDirectory>lib/core</outputDirectory>
-        </dependencySet>
-        <dependencySet>
-            <includes>
-                
<include>com.sun.activation:jakarta.activation-api:jar</include>
+                <include>org.eclipse.angus:angus-activation:jar</include>
             </includes>
             <outputDirectory>lib/core</outputDirectory>
         </dependencySet>
diff --git 
a/plugins/misc/mail/src/main/java/org/apache/hop/mail/metadata/MailServerConnection.java
 
b/plugins/misc/mail/src/main/java/org/apache/hop/mail/metadata/MailServerConnection.java
index 39606d6965..4d96c49f7e 100644
--- 
a/plugins/misc/mail/src/main/java/org/apache/hop/mail/metadata/MailServerConnection.java
+++ 
b/plugins/misc/mail/src/main/java/org/apache/hop/mail/metadata/MailServerConnection.java
@@ -18,8 +18,6 @@
 package org.apache.hop.mail.metadata;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.sun.mail.imap.IMAPSSLStore;
-import com.sun.mail.pop3.POP3SSLStore;
 import jakarta.mail.Flags;
 import jakarta.mail.Folder;
 import jakarta.mail.Message;
@@ -69,6 +67,8 @@ import org.apache.hop.metadata.api.HopMetadataBase;
 import org.apache.hop.metadata.api.HopMetadataProperty;
 import org.apache.hop.metadata.api.HopMetadataPropertyType;
 import org.apache.hop.metadata.api.IHopMetadata;
+import org.eclipse.angus.mail.imap.IMAPSSLStore;
+import org.eclipse.angus.mail.pop3.POP3SSLStore;
 
 @Getter
 @Setter
@@ -258,7 +258,8 @@ public class MailServerConnection extends HopMetadataBase 
implements IHopMetadat
           // javax.net.ssl.SSLException: Unsupported record version Unknown
           props.put("mail.smtps.quitwait", "false");
         }
-        props.put("mail.smtp.ssl.checkServerIdentity", 
isCheckServerIdentity());
+        props.setProperty(
+            "mail.smtp.ssl.checkServerIdentity", 
String.valueOf(isCheckServerIdentity()));
         if (!Utils.isEmpty(trustedHosts)) {
           props.put("mail.smtp.ssl.trust", variables.resolve(trustedHosts));
         }
@@ -307,7 +308,21 @@ public class MailServerConnection extends HopMetadataBase 
implements IHopMetadat
         }
       }
     }
-    session = Session.getInstance(props, null);
+    props.setProperty("mail.imap.ssl.checkServerIdentity", 
String.valueOf(isCheckServerIdentity()));
+    props.setProperty(
+        "mail.imaps.ssl.checkServerIdentity", 
String.valueOf(isCheckServerIdentity()));
+    props.setProperty("mail.pop3.ssl.checkServerIdentity", 
String.valueOf(isCheckServerIdentity()));
+    props.setProperty(
+        "mail.pop3s.ssl.checkServerIdentity", 
String.valueOf(isCheckServerIdentity()));
+    if (!Utils.isEmpty(trustedHosts)) {
+      String resolvedTrusted = variables.resolve(trustedHosts);
+      props.setProperty("mail.imap.ssl.trust", resolvedTrusted);
+      props.setProperty("mail.imaps.ssl.trust", resolvedTrusted);
+      props.setProperty("mail.pop3.ssl.trust", resolvedTrusted);
+      props.setProperty("mail.pop3s.ssl.trust", resolvedTrusted);
+    }
+
+    session = Session.getInstance(props);
 
     return session;
   }
diff --git 
a/plugins/misc/mail/src/main/java/org/apache/hop/mail/workflow/actions/getpop/MailConnection.java
 
b/plugins/misc/mail/src/main/java/org/apache/hop/mail/workflow/actions/getpop/MailConnection.java
index 82da5e5054..7efce71357 100644
--- 
a/plugins/misc/mail/src/main/java/org/apache/hop/mail/workflow/actions/getpop/MailConnection.java
+++ 
b/plugins/misc/mail/src/main/java/org/apache/hop/mail/workflow/actions/getpop/MailConnection.java
@@ -18,8 +18,6 @@
 package org.apache.hop.mail.workflow.actions.getpop;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.sun.mail.imap.IMAPSSLStore;
-import com.sun.mail.pop3.POP3SSLStore;
 import jakarta.mail.Flags;
 import jakarta.mail.Flags.Flag;
 import jakarta.mail.Folder;
@@ -52,6 +50,8 @@ import java.util.HashSet;
 import java.util.Properties;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.hop.core.Const;
@@ -60,8 +60,12 @@ import org.apache.hop.core.logging.ILogChannel;
 import org.apache.hop.core.util.Utils;
 import org.apache.hop.core.vfs.HopVfs;
 import org.apache.hop.i18n.BaseMessages;
+import org.eclipse.angus.mail.imap.IMAPSSLStore;
+import org.eclipse.angus.mail.pop3.POP3SSLStore;
 
 /** MailConnection handles the process of connecting to, reading from 
POP3/IMAP. */
+@Getter
+@Setter
 public class MailConnection {
   private static final Class<?> PKG = ActionGetPOP.class;
   private static final String CONST_POP3_UNSUPPORTED =
@@ -200,7 +204,7 @@ public class MailConnection {
         }
 
         // Create session object
-        this.session = Session.getInstance(this.prop, null);
+        this.session = Session.getInstance(this.prop);
         this.session.setDebug(log.isDebug());
         if (this.port == -1) {
           this.port =
@@ -270,20 +274,6 @@ public class MailConnection {
     return this.proxyusername;
   }
 
-  /**
-   * @return Returns the store
-   */
-  public Store getStore() {
-    return this.store;
-  }
-
-  /**
-   * @return Returns the folder
-   */
-  public Folder getFolder() {
-    return this.folder;
-  }
-
   /**
    * Open the connection.
    *
@@ -994,33 +984,6 @@ public class MailConnection {
     return this.folder.getName();
   }
 
-  /**
-   * Returns the server name/Ip.
-   *
-   * @return server
-   */
-  public String getServer() {
-    return server;
-  }
-
-  /**
-   * Returns the protocol.
-   *
-   * @return protocol
-   */
-  public int getProtocol() {
-    return protocol;
-  }
-
-  /**
-   * Returns all messages.
-   *
-   * @return all messages
-   */
-  public Message[] getMessages() {
-    return messages;
-  }
-
   private void updateMessageNr() {
     this.messagenr++;
   }
@@ -1044,15 +1007,6 @@ public class MailConnection {
     }
   }
 
-  /**
-   * Returns the current message.
-   *
-   * @return current message
-   */
-  public Message getMessage() {
-    return this.message;
-  }
-
   /**
    * Returns the number of messages.
    *
diff --git a/plugins/transforms/javascript/pom.xml 
b/plugins/transforms/javascript/pom.xml
index 200b9c6e25..b69a78a330 100644
--- a/plugins/transforms/javascript/pom.xml
+++ b/plugins/transforms/javascript/pom.xml
@@ -42,8 +42,8 @@
 
     <dependencies>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.hop</groupId>
diff --git a/plugins/transforms/tika/pom.xml b/plugins/transforms/tika/pom.xml
index 42ef1911d1..96d38364e8 100644
--- a/plugins/transforms/tika/pom.xml
+++ b/plugins/transforms/tika/pom.xml
@@ -62,6 +62,10 @@
                     <groupId>commons-logging</groupId>
                     <artifactId>*</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>org.eclipse.angus</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
                 <exclusion>
                     <groupId>org.ow2.asm</groupId>
                     <artifactId>*</artifactId>
@@ -97,10 +101,6 @@
                     <groupId>com.healthmarketscience.jackcess</groupId>
                     <artifactId>jackcess</artifactId>
                 </exclusion>
-                <exclusion>
-                    <groupId>com.sun.activation</groupId>
-                    <artifactId>jakarta.activation</artifactId>
-                </exclusion>
                 <exclusion>
                     <groupId>commons-codec</groupId>
                     <artifactId>commons-codec</artifactId>
@@ -117,6 +117,10 @@
                     <groupId>commons-logging</groupId>
                     <artifactId>commons-logging</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>jakarta.activation</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
                 <exclusion>
                     <groupId>jakarta.xml.bind</groupId>
                     <artifactId>jakarta.xml.bind-api</artifactId>
@@ -169,6 +173,10 @@
                     <groupId>org.bouncycastle</groupId>
                     <artifactId>bcutil-jdk18on</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>org.eclipse.angus</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
                 <exclusion>
                     <groupId>org.ow2.asm</groupId>
                     <artifactId>*</artifactId>
@@ -198,11 +206,6 @@
             <artifactId>jackcess</artifactId>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>com.sun.activation</groupId>
-            <artifactId>jakarta.activation</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>commons-codec</groupId>
             <artifactId>commons-codec</artifactId>
diff --git a/plugins/transforms/tika/src/assembly/assembly.xml 
b/plugins/transforms/tika/src/assembly/assembly.xml
index e601fb8c44..38c7337553 100644
--- a/plugins/transforms/tika/src/assembly/assembly.xml
+++ b/plugins/transforms/tika/src/assembly/assembly.xml
@@ -62,7 +62,6 @@
                 <include>com.zaxxer:*</include>
                 <include>org.apache.xmlbeans:*</include>
                 <include>com.github.virtuald:*</include>
-                
<include>jakarta.activation:jakarta.activation-api:jar</include>
                 <include>commons-codec:commons-codec:jar</include>
                 <include>commons-lang:commons-lang:jar</include>
                 <include>commons-logging:commons-logging:jar</include>

Reply via email to