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>