You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2019/03/04 15:03:37 UTC
[james-project] 01/02: JAMES-2578 Fix warning using Mailet new API
This is an automated email from the ASF dual-hosted git repository.
rouazana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 802e9c1e9764e7472eff870a3a38fb2a48b7ac74
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Tue Feb 26 16:30:20 2019 +0100
JAMES-2578 Fix warning using Mailet new API
---
.../apache/james/ai/classic/BayesianAnalysis.java | 7 ++++--
.../james/transport/SMIMEAttributeNames.java | 15 +++++-------
.../james/transport/mailets/AbstractSign.java | 8 ++++---
.../transport/mailets/SMIMECheckSignature.java | 17 +++++++------
.../james/transport/mailets/SMIMEDecrypt.java | 9 ++++---
.../james/transport/mailets/ContactExtractor.java | 12 +++++++---
.../james/transport/mailets/SetMailAttribute.java | 25 +++++++------------
.../james/transport/mailets/BayesianAnalysis.java | 7 ++++--
.../james/transport/mailets/FromRepository.java | 3 ++-
.../org/apache/james/transport/mailets/SPF.java | 11 +++++----
.../transport/mailets/WithStorageDirective.java | 20 +++++++++-------
.../mailets/jsieve/delivery/SievePoster.java | 3 ++-
.../transport/mailets/remote/delivery/Bouncer.java | 7 ++++--
.../apache/james/transport/matchers/dlp/Dlp.java | 7 ++++--
.../mailets/remote/delivery/BouncerTest.java | 6 +++--
.../apache/james/fetchmail/MessageProcessor.java | 28 +++++++++++++---------
.../james/jmap/mailet/filter/ActionApplier.java | 3 ++-
.../james/smtpserver/fastfail/SPFHandler.java | 15 +++++++-----
.../james/queue/activemq/ActiveMQMailQueue.java | 5 ++--
.../james/queue/activemq/ActiveMQSupport.java | 4 ++--
.../org/apache/james/queue/jms/JMSMailQueue.java | 3 ++-
21 files changed, 126 insertions(+), 89 deletions(-)
diff --git a/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysis.java b/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysis.java
index a91d178..e05ff98 100644
--- a/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysis.java
+++ b/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysis.java
@@ -33,6 +33,9 @@ import javax.mail.internet.MimeMessage;
import javax.sql.DataSource;
import org.apache.james.core.MailAddress;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Experimental;
import org.apache.mailet.Mail;
import org.apache.mailet.base.GenericMailet;
@@ -137,7 +140,7 @@ public class BayesianAnalysis extends GenericMailet {
DataSource datasource;
- private static final String MAIL_ATTRIBUTE_NAME = "org.apache.james.spam.probability";
+ private static final AttributeName MAIL_ATTRIBUTE_NAME = AttributeName.of("org.apache.james.spam.probability");
private static final String HEADER_NAME = "X-MessageIsSpamProbability";
static final long CORPUS_RELOAD_INTERVAL = 600000;
private String headerName;
@@ -309,7 +312,7 @@ public class BayesianAnalysis extends GenericMailet {
probability = 0.0;
}
- mail.setAttribute(MAIL_ATTRIBUTE_NAME, probability);
+ mail.setAttribute(new Attribute(MAIL_ATTRIBUTE_NAME, AttributeValue.of(probability)));
message.setHeader(headerName, Double.toString(probability));
DecimalFormat probabilityForm = (DecimalFormat) DecimalFormat.getInstance();
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/SMIMEAttributeNames.java b/mailet/crypto/src/main/java/org/apache/james/transport/SMIMEAttributeNames.java
index b403ccd..7d2b231 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/SMIMEAttributeNames.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/SMIMEAttributeNames.java
@@ -21,6 +21,8 @@
package org.apache.james.transport;
+import org.apache.mailet.AttributeName;
+
/**
* Contains some SMIME related mail attribute names of general use.
*
@@ -32,23 +34,18 @@ public interface SMIMEAttributeNames {
/**
* The attribute contains the server-side signing mailet name as a String.
*/
- String SMIME_SIGNING_MAILET = "org.apache.james.smime.signing.mailetname";
+ AttributeName SMIME_SIGNING_MAILET = AttributeName.of("org.apache.james.smime.signing.mailetname");
/**
* The attribute contains the string "valid" or the reason of non-validity of the signature.
* The status could be non valid either because the signature does not verify
* or because the certificate could be not valid when the signature was done.
*/
- String SMIME_SIGNATURE_VALIDITY = "org.apache.james.smime.signature.validity";
+ AttributeName SMIME_SIGNATURE_VALIDITY = AttributeName.of("org.apache.james.smime.signature.validity");
/**
* The attribute contains the signer's mail address as a String.
*/
- String SMIME_SIGNER_ADDRESS = "org.apache.james.smime.signer.address";
-
- /**
- * The attribute contains the signature timestamp as a Date object.
- */
- String SMIME_SIGNING_TIME = "org.apache.james.smime.signing.time";
-
+ AttributeName SMIME_SIGNER_ADDRESS = AttributeName.of("org.apache.james.smime.signer.address");
+
}
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
index 42bd5f2..1cff04c 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
@@ -40,7 +40,9 @@ import org.apache.james.transport.KeyHolder;
import org.apache.james.transport.SMIMEAttributeNames;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
+import org.apache.mailet.Attribute;
import org.apache.mailet.AttributeUtils;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.base.GenericMailet;
import org.apache.mailet.base.RFC2822Headers;
@@ -514,13 +516,13 @@ public abstract class AbstractSign extends GenericMailet {
mail.setMessage(newMessage);
// marks this mail as server-signed
- mail.setAttribute(SMIMEAttributeNames.SMIME_SIGNING_MAILET, this.getClass().getName());
+ mail.setAttribute(new Attribute(SMIMEAttributeNames.SMIME_SIGNING_MAILET, AttributeValue.of(this.getClass().getName())));
// it is valid for us by definition (signed here by us)
- mail.setAttribute(SMIMEAttributeNames.SMIME_SIGNATURE_VALIDITY, "valid");
+ mail.setAttribute(new Attribute(SMIMEAttributeNames.SMIME_SIGNATURE_VALIDITY, AttributeValue.of("valid")));
// saves the trusted server signer address
// warning: should be same as the mail address in the certificate, but it is not guaranteed
- mail.setAttribute(SMIMEAttributeNames.SMIME_SIGNER_ADDRESS, getKeyHolder().getSignerAddress());
+ mail.setAttribute(new Attribute(SMIMEAttributeNames.SMIME_SIGNER_ADDRESS, AttributeValue.of(getKeyHolder().getSignerAddress())));
if (isDebug()) {
LOGGER.debug("Message signed, reverse-path: {}, Id: {}", mail.getMaybeSender().asString(), messageId);
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMECheckSignature.java b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMECheckSignature.java
index 6fd176e..4f109b6 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMECheckSignature.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMECheckSignature.java
@@ -34,6 +34,9 @@ import javax.mail.internet.MimeMultipart;
import org.apache.james.transport.KeyStoreHolder;
import org.apache.james.transport.SMIMESignerInfo;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.MailetConfig;
import org.apache.mailet.base.GenericMailet;
@@ -103,13 +106,13 @@ import org.slf4j.LoggerFactory;
*/
public class SMIMECheckSignature extends GenericMailet {
private static final Logger LOGGER = LoggerFactory.getLogger(SMIMECheckSignature.class);
+
+ private KeyStoreHolder trustedCertificateStore;
- protected KeyStoreHolder trustedCertificateStore;
-
- protected boolean stripSignature = false;
- protected boolean onlyTrusted = true;
+ private boolean stripSignature = false;
+ private boolean onlyTrusted = true;
- protected String mailAttribute = "org.apache.james.SMIMECheckSignature";
+ private AttributeName mailAttribute = AttributeName.of("org.apache.james.SMIMECheckSignature");
public SMIMECheckSignature() {
super();
@@ -132,7 +135,7 @@ public class SMIMECheckSignature extends GenericMailet {
String mailAttributeConf = config.getInitParameter("mailAttribute");
if (mailAttributeConf != null) {
- mailAttribute = mailAttributeConf;
+ mailAttribute = AttributeName.of(mailAttributeConf);
}
@@ -213,7 +216,7 @@ public class SMIMECheckSignature extends GenericMailet {
}
if (signerinfolist.size() > 0) {
- mail.setAttribute(mailAttribute, signerinfolist);
+ mail.setAttribute(new Attribute(mailAttribute, AttributeValue.ofAny(signerinfolist)));
} else {
// if no valid signers are found the message is not modified.
strippedMessage = null;
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMEDecrypt.java b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMEDecrypt.java
index 2e2019b..df1d0fb 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMEDecrypt.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMEDecrypt.java
@@ -35,6 +35,9 @@ import javax.mail.internet.MimeMessage;
import org.apache.commons.io.IOUtils;
import org.apache.james.transport.SMIMEKeyHolder;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.MailetConfig;
import org.apache.mailet.base.GenericMailet;
@@ -79,7 +82,7 @@ public class SMIMEDecrypt extends GenericMailet {
private SMIMEKeyHolder keyHolder;
private X509CertificateHolder certificateHolder;
- protected String mailAttribute = "org.apache.james.SMIMEDecrypt";
+ private AttributeName mailAttribute = AttributeName.of("org.apache.james.SMIMEDecrypt");
@Override
public void init() throws MessagingException {
@@ -101,7 +104,7 @@ public class SMIMEDecrypt extends GenericMailet {
String mailAttributeConf = config.getInitParameter("mailAttribute");
if (mailAttributeConf != null) {
- mailAttribute = mailAttributeConf;
+ mailAttribute = AttributeName.of(mailAttributeConf);
}
try {
@@ -161,7 +164,7 @@ public class SMIMEDecrypt extends GenericMailet {
// the result of the operation.
ArrayList<X509Certificate> list = new ArrayList<>(1);
list.add(keyHolder.getCertificate());
- mail.setAttribute(mailAttribute, list);
+ mail.setAttribute(new Attribute(mailAttribute, AttributeValue.ofAny(list)));
// I start the message stripping.
try {
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContactExtractor.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContactExtractor.java
index 64e0524..02f0b9c 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContactExtractor.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContactExtractor.java
@@ -32,6 +32,9 @@ import javax.mail.internet.MimeMessage;
import org.apache.james.core.MailAddress;
import org.apache.james.mime4j.util.MimeUtil;
import org.apache.james.util.StreamUtils;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.Mailet;
import org.apache.mailet.MailetException;
@@ -73,12 +76,13 @@ public class ContactExtractor extends GenericMailet implements Mailet {
private static final Logger LOGGER = LoggerFactory.getLogger(ContactExtractor.class);
@VisibleForTesting ObjectMapper objectMapper;
- private String extractAttributeTo;
+ private AttributeName extractAttributeTo;
@Override
public void init() throws MessagingException {
extractAttributeTo = getInitParameterAsOptional(Configuration.ATTRIBUTE)
- .orElseThrow(() -> new MailetException("No value for " + Configuration.ATTRIBUTE + " parameter was provided."));
+ .map(AttributeName::of)
+ .orElseThrow(() -> new MailetException("No value for " + Configuration.ATTRIBUTE + " parameter was provided."));
objectMapper = new ObjectMapper().registerModule(new Jdk8Module());
}
@@ -93,7 +97,9 @@ public class ContactExtractor extends GenericMailet implements Mailet {
try {
Optional<String> payload = extractContacts(mail);
LOGGER.debug("payload : {}", payload);
- payload.ifPresent(x -> mail.setAttribute(extractAttributeTo, x));
+ payload
+ .map(AttributeValue::of)
+ .ifPresent(x -> mail.setAttribute(new Attribute(extractAttributeTo, x)));
} catch (Exception e) {
LOGGER.error("Error while extracting contacts", e);
}
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/SetMailAttribute.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/SetMailAttribute.java
index ea91948..3536650 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/SetMailAttribute.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/SetMailAttribute.java
@@ -21,16 +21,16 @@
package org.apache.james.transport.mailets;
-import java.util.Iterator;
-import java.util.Map;
-
import javax.mail.MessagingException;
+import org.apache.mailet.Attribute;
import org.apache.mailet.Mail;
import org.apache.mailet.MailetException;
import org.apache.mailet.base.GenericMailet;
-import com.google.common.collect.ImmutableMap;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Streams;
/**
* <p>This mailet sets attributes on the Mail.</p>
@@ -47,7 +47,7 @@ import com.google.common.collect.ImmutableMap;
*/
public class SetMailAttribute extends GenericMailet {
- private ImmutableMap<String, String> entries;
+ private ImmutableList<Attribute> entries;
@Override
public String getMailetInfo() {
@@ -56,21 +56,14 @@ public class SetMailAttribute extends GenericMailet {
@Override
public void init() throws MailetException {
- ImmutableMap.Builder<String, String> attributes = ImmutableMap.builder();
- Iterator<String> iter = getInitParameterNames();
- while (iter.hasNext()) {
- String name = iter.next();
- String value = getInitParameter(name);
- attributes.put(name, value);
- }
- entries = attributes.build();
+ entries = Streams.stream(getInitParameterNames())
+ .map(name -> Attribute.convertToAttribute(name, getInitParameter(name)))
+ .collect(Guavate.toImmutableList());
}
@Override
public void service(Mail mail) throws MessagingException {
- for (Map.Entry<String, String> entry : entries.entrySet()) {
- mail.setAttribute(entry.getKey(), entry.getValue());
- }
+ entries.forEach(mail::setAttribute);
}
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
index bd84484..32af9f5 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
@@ -35,6 +35,9 @@ import org.apache.james.core.MailAddress;
import org.apache.james.filesystem.api.FileSystem;
import org.apache.james.util.bayesian.JDBCBayesianAnalyzer;
import org.apache.james.util.sql.JDBCUtil;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Experimental;
import org.apache.mailet.Mail;
import org.apache.mailet.base.GenericMailet;
@@ -142,7 +145,7 @@ public class BayesianAnalysis extends GenericMailet {
private DataSource datasource;
- private static final String MAIL_ATTRIBUTE_NAME = "org.apache.james.spam.probability";
+ private static final AttributeName MAIL_ATTRIBUTE_NAME = AttributeName.of("org.apache.james.spam.probability");
private static final String HEADER_NAME = "X-MessageIsSpamProbability";
private static final long CORPUS_RELOAD_INTERVAL = 600000;
private String headerName;
@@ -316,7 +319,7 @@ public class BayesianAnalysis extends GenericMailet {
probability = 0.0;
}
- mail.setAttribute(MAIL_ATTRIBUTE_NAME, probability);
+ mail.setAttribute(new Attribute(MAIL_ATTRIBUTE_NAME, AttributeValue.of(probability)));
message.setHeader(headerName, Double.toString(probability));
DecimalFormat probabilityForm = (DecimalFormat) DecimalFormat.getInstance();
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/FromRepository.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/FromRepository.java
index 5a3d58e..f99d231 100755
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/FromRepository.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/FromRepository.java
@@ -32,6 +32,7 @@ import org.apache.james.mailrepository.api.MailRepository;
import org.apache.james.mailrepository.api.MailRepositoryStore;
import org.apache.james.mailrepository.api.MailRepositoryUrl;
import org.apache.james.transport.mailets.managesieve.ManageSieveMailet;
+import org.apache.mailet.Attribute;
import org.apache.mailet.Experimental;
import org.apache.mailet.Mail;
import org.apache.mailet.base.GenericMailet;
@@ -109,7 +110,7 @@ public class FromRepository extends GenericMailet {
if (mail != null && mail.getRecipients() != null) {
LOGGER.debug("Spooling mail {} from {}", mail.getName(), repositoryPath);
- mail.setAttribute("FromRepository", Boolean.TRUE);
+ mail.setAttribute(Attribute.convertToAttribute("FromRepository", Boolean.TRUE));
mail.setState(processor);
getMailetContext().sendMail(mail);
if (delete) {
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SPF.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SPF.java
index 3c71efd..9cc4eae 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SPF.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SPF.java
@@ -26,6 +26,9 @@ import org.apache.james.jspf.core.Logger;
import org.apache.james.jspf.executor.SPFResult;
import org.apache.james.jspf.impl.DefaultSPF;
import org.apache.james.transport.mailets.managesieve.ManageSieveMailet;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Experimental;
import org.apache.mailet.Mail;
import org.apache.mailet.base.GenericMailet;
@@ -57,8 +60,8 @@ public class SPF extends GenericMailet {
private boolean addHeader = false;
private org.apache.james.jspf.impl.SPF spf;
- public static final String EXPLANATION_ATTRIBUTE = "org.apache.james.transport.mailets.spf.explanation";
- public static final String RESULT_ATTRIBUTE = "org.apache.james.transport.mailets.spf.result";
+ private static final AttributeName EXPLANATION_ATTRIBUTE = AttributeName.of("org.apache.james.transport.mailets.spf.explanation");
+ private static final AttributeName RESULT_ATTRIBUTE = AttributeName.of("org.apache.james.transport.mailets.spf.result");
@Override
public void init() {
@@ -76,8 +79,8 @@ public class SPF extends GenericMailet {
if (!remoteAddr.equals("127.0.0.1")) {
String sender = mail.getMaybeSender().asString("");
SPFResult result = spf.checkSPF(remoteAddr, sender, helo);
- mail.setAttribute(EXPLANATION_ATTRIBUTE, result.getExplanation());
- mail.setAttribute(RESULT_ATTRIBUTE, result.getResult());
+ mail.setAttribute(new Attribute(EXPLANATION_ATTRIBUTE, AttributeValue.of(result.getExplanation())));
+ mail.setAttribute(new Attribute(RESULT_ATTRIBUTE, AttributeValue.of(result.getResult())));
LOGGER.debug("ip:{} from:{} helo:{} = {}", remoteAddr, sender, helo, result.getResult());
if (addHeader) {
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithStorageDirective.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithStorageDirective.java
index 4070050..f6f1bbd 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithStorageDirective.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WithStorageDirective.java
@@ -25,6 +25,9 @@ import javax.mail.MessagingException;
import org.apache.james.core.MailAddress;
import org.apache.james.transport.mailets.delivery.MailStore;
import org.apache.james.user.api.UsersRepository;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.base.GenericMailet;
@@ -52,7 +55,7 @@ public class WithStorageDirective extends GenericMailet {
private final UsersRepository usersRepository;
- private String targetFolderName;
+ private AttributeValue<String> targetFolderName;
@Inject
public WithStorageDirective(UsersRepository usersRepository) {
@@ -61,12 +64,13 @@ public class WithStorageDirective extends GenericMailet {
@Override
public void init() throws MessagingException {
- targetFolderName = getInitParameter(TARGET_FOLDER_NAME);
- validateMailetConfiguration();
+ targetFolderName = AttributeValue.of(validateMailetConfiguration(TARGET_FOLDER_NAME));
}
- public void validateMailetConfiguration() {
- Preconditions.checkState(!Strings.isNullOrEmpty(targetFolderName), "You need to specify " + TARGET_FOLDER_NAME);
+ private String validateMailetConfiguration(String initParameterName) {
+ String initParameterValue = getInitParameter(initParameterName);
+ Preconditions.checkState(!Strings.isNullOrEmpty(initParameterValue), "You need to specify " + initParameterName);
+ return initParameterValue;
}
@Override
@@ -77,10 +81,8 @@ public class WithStorageDirective extends GenericMailet {
public ThrowingConsumer<MailAddress> addStorageDirective(Mail mail) {
return recipient -> {
- String attributeNameForUser = MailStore.DELIVERY_PATH_PREFIX + usersRepository.getUser(recipient);
- mail.setAttribute(
- attributeNameForUser,
- targetFolderName);
+ AttributeName attributeNameForUser = AttributeName.of(MailStore.DELIVERY_PATH_PREFIX + usersRepository.getUser(recipient));
+ mail.setAttribute(new Attribute(attributeNameForUser, targetFolderName));
};
}
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
index f7099b8..8a3b486 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
@@ -28,6 +28,7 @@ import org.apache.james.transport.mailets.delivery.MailStore;
import org.apache.james.transport.mailets.jsieve.Poster;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
+import org.apache.mailet.Attribute;
import org.apache.mailet.Mail;
public class SievePoster implements Poster {
@@ -49,7 +50,7 @@ public class SievePoster implements Poster {
if (scheme.equals("mailbox")) {
UserAndPath userAndPath = retrieveUserAndPath(url, endOfScheme);
- mail.setAttribute(MailStore.DELIVERY_PATH_PREFIX + userAndPath.user, userAndPath.path);
+ mail.setAttribute(Attribute.convertToAttribute(MailStore.DELIVERY_PATH_PREFIX + userAndPath.user, userAndPath.path));
} else {
throw new MessagingException("Unsupported protocol");
}
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/Bouncer.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/Bouncer.java
index 43cfce3..f2d1d3f 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/Bouncer.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/Bouncer.java
@@ -29,6 +29,9 @@ import javax.mail.MessagingException;
import javax.mail.SendFailedException;
import org.apache.james.core.MailAddress;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.MailetContext;
import org.slf4j.Logger;
@@ -37,7 +40,7 @@ import org.slf4j.LoggerFactory;
public class Bouncer {
private static final Logger LOGGER = LoggerFactory.getLogger(Bouncer.class);
- public static final String DELIVERY_ERROR = "delivery-error";
+ public static final AttributeName DELIVERY_ERROR = AttributeName.of("delivery-error");
private final RemoteDeliveryConfiguration configuration;
private final MailetContext mailetContext;
@@ -51,7 +54,7 @@ public class Bouncer {
LOGGER.debug("Null Sender: no bounce will be generated for {}", mail.getName());
} else {
if (configuration.getBounceProcessor() != null) {
- mail.setAttribute(DELIVERY_ERROR, getErrorMsg(ex));
+ mail.setAttribute(new Attribute(DELIVERY_ERROR, AttributeValue.of(getErrorMsg(ex))));
try {
mailetContext.sendMail(mail, configuration.getBounceProcessor());
} catch (MessagingException e) {
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/dlp/Dlp.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/dlp/Dlp.java
index 4257c3b..945b170 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/dlp/Dlp.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/dlp/Dlp.java
@@ -27,6 +27,9 @@ import javax.inject.Inject;
import org.apache.james.core.MailAddress;
import org.apache.james.dlp.api.DLPConfigurationItem;
import org.apache.james.dlp.api.DLPConfigurationStore;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.base.GenericMatcher;
@@ -35,7 +38,7 @@ import com.google.common.collect.ImmutableList;
public class Dlp extends GenericMatcher {
- public static final String DLP_MATCHED_RULE = "DlpMatchedRule";
+ private static final AttributeName DLP_MATCHED_RULE = AttributeName.of("DlpMatchedRule");
private final DlpRulesLoader rulesLoader;
@@ -62,7 +65,7 @@ public class Dlp extends GenericMatcher {
}
private void setRuleIdAsMailAttribute(Mail mail, DLPConfigurationItem.Id ruleId) {
- mail.setAttribute(DLP_MATCHED_RULE, ruleId.asString());
+ mail.setAttribute(new Attribute(DLP_MATCHED_RULE, AttributeValue.of(ruleId.asString())));
}
private Optional<DLPConfigurationItem.Id> findFirstMatchingRule(Mail mail) {
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/BouncerTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/BouncerTest.java
index 9c1b289..723adfb 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/BouncerTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remote/delivery/BouncerTest.java
@@ -34,6 +34,8 @@ import javax.mail.SendFailedException;
import org.apache.james.domainlist.api.DomainList;
import org.apache.james.transport.mailets.remote.delivery.Bouncer;
import org.apache.james.transport.mailets.remote.delivery.RemoteDeliveryConfiguration;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.base.MailAddressFixture;
import org.apache.mailet.base.test.FakeMail;
@@ -344,7 +346,7 @@ public class BouncerTest {
FakeMailContext.SentMail expected = FakeMailContext.sentMailBuilder()
.sender(MailAddressFixture.ANY_AT_JAMES)
- .attribute(DELIVERY_ERROR, errorMessage)
+ .attribute(new Attribute(DELIVERY_ERROR, AttributeValue.of(errorMessage)))
.state(BOUNCE_PROCESSOR)
.fromMailet()
.build();
@@ -446,7 +448,7 @@ public class BouncerTest {
FakeMailContext.SentMail expected = FakeMailContext.sentMailBuilder()
.sender(MailAddressFixture.ANY_AT_JAMES)
- .attribute(DELIVERY_ERROR, "null")
+ .attribute(new Attribute(DELIVERY_ERROR, AttributeValue.of("null")))
.state(BOUNCE_PROCESSOR)
.fromMailet()
.build();
diff --git a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
index 1adb19b..49c374b 100644
--- a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
+++ b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
@@ -34,6 +34,9 @@ import org.apache.james.core.MailAddress;
import org.apache.james.domainlist.api.DomainListException;
import org.apache.james.server.core.MailImpl;
import org.apache.james.user.api.UsersRepositoryException;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.base.RFC2822Headers;
import org.slf4j.Logger;
@@ -1230,44 +1233,44 @@ public class MessageProcessor extends ProcessorAbstract {
* @param aMail a Mail instance
*/
protected void addMailAttributes(Mail aMail) throws MessagingException {
- aMail.setAttribute(getAttributePrefix() + "taskName", getFetchTaskName());
+ aMail.setAttribute(new Attribute(makeAttributeName("taskName"), AttributeValue.of(getFetchTaskName())));
- aMail.setAttribute(getAttributePrefix() + "folderName", getMessageIn().getFolder().getFullName());
+ aMail.setAttribute(new Attribute(makeAttributeName("folderName"), AttributeValue.of(getMessageIn().getFolder().getFullName())));
if (isRemoteRecipient()) {
- aMail.setAttribute(getAttributePrefix() + "isRemoteRecipient", null);
+ aMail.setAttribute(new Attribute(makeAttributeName("isRemoteRecipient"), AttributeValue.of(true)));
}
if (isUserUndefined()) {
- aMail.setAttribute(getAttributePrefix() + "isUserUndefined", true);
+ aMail.setAttribute(new Attribute(makeAttributeName("isUserUndefined"), AttributeValue.of(true)));
}
if (isBlacklistedRecipient()) {
- aMail.setAttribute(getAttributePrefix() + "isBlacklistedRecipient", true);
+ aMail.setAttribute(new Attribute(makeAttributeName("isBlacklistedRecipient"), AttributeValue.of(true)));
}
if (isRecipientNotFound()) {
- aMail.setAttribute(getAttributePrefix() + "isRecipientNotFound", true);
+ aMail.setAttribute(new Attribute(makeAttributeName("isRecipientNotFound"), AttributeValue.of(true)));
}
if (isMaxMessageSizeExceeded()) {
- aMail.setAttribute(getAttributePrefix() + "isMaxMessageSizeExceeded", Integer.toString(getMessageIn().getSize()));
+ aMail.setAttribute(new Attribute(makeAttributeName("isMaxMessageSizeExceeded"), AttributeValue.of(Integer.toString(getMessageIn().getSize()))));
}
if (isRemoteReceivedHeaderInvalid()) {
- aMail.setAttribute(getAttributePrefix() + "isRemoteReceivedHeaderInvalid", true);
+ aMail.setAttribute(new Attribute(makeAttributeName("isRemoteReceivedHeaderInvalid"), AttributeValue.of(true)));
}
if (isDefaultSenderLocalPart()) {
- aMail.setAttribute(getAttributePrefix() + "isDefaultSenderLocalPart", true);
+ aMail.setAttribute(new Attribute(makeAttributeName("isDefaultSenderLocalPart"), AttributeValue.of(true)));
}
if (isDefaultSenderDomainPart()) {
- aMail.setAttribute(getAttributePrefix() + "isDefaultSenderDomainPart", true);
+ aMail.setAttribute(new Attribute(makeAttributeName("isDefaultSenderDomainPart"), AttributeValue.of(true)));
}
if (isDefaultRemoteAddress()) {
- aMail.setAttribute(getAttributePrefix() + "isDefaultRemoteAddress", true);
+ aMail.setAttribute(new Attribute(makeAttributeName("isDefaultRemoteAddress"), AttributeValue.of(true)));
}
}
@@ -1650,4 +1653,7 @@ public class MessageProcessor extends ProcessorAbstract {
fieldDefaultRemoteAddress = defaultRemoteAddress;
}
+ private AttributeName makeAttributeName(String suffix) {
+ return AttributeName.of(getAttributePrefix() + suffix);
+ }
}
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/filter/ActionApplier.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/filter/ActionApplier.java
index 72376ab..8c2e63e 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/filter/ActionApplier.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/filter/ActionApplier.java
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.MailboxId;
+import org.apache.mailet.Attribute;
import org.apache.mailet.Mail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -98,7 +99,7 @@ public class ActionApplier {
String mailboxName = messageManager.getMailboxPath().getName();
String attributeNameForUser = DELIVERY_PATH_PREFIX + user.asString();
- mail.setAttribute(attributeNameForUser, mailboxName);
+ mail.setAttribute(Attribute.convertToAttribute(attributeNameForUser, mailboxName));
} catch (MailboxNotFoundException e) {
LOGGER.info("Mailbox {} does not exist, but it was mentioned in a JMAP filtering rule", mailboxId, e);
} catch (Exception e) {
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
index 1d136ab..0bb898b 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
@@ -39,6 +39,9 @@ import org.apache.james.protocols.smtp.hook.HookReturnCode;
import org.apache.james.protocols.smtp.hook.MailHook;
import org.apache.james.protocols.smtp.hook.RcptHook;
import org.apache.james.smtpserver.JamesMessageHook;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeName;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,15 +59,15 @@ public class SPFHandler implements JamesMessageHook, MailHook, RcptHook, Protoco
*/
private final Logger serviceLog = FALLBACK_LOG;
- public static final String SPF_BLOCKLISTED = "SPF_BLOCKLISTED";
+ private static final String SPF_BLOCKLISTED = "SPF_BLOCKLISTED";
- public static final String SPF_DETAIL = "SPF_DETAIL";
+ private static final String SPF_DETAIL = "SPF_DETAIL";
- public static final String SPF_TEMPBLOCKLISTED = "SPF_TEMPBLOCKLISTED";
+ private static final String SPF_TEMPBLOCKLISTED = "SPF_TEMPBLOCKLISTED";
- public static final String SPF_HEADER = "SPF_HEADER";
+ private static final String SPF_HEADER = "SPF_HEADER";
- public static final String SPF_HEADER_MAIL_ATTRIBUTE_NAME = "org.apache.james.spf.header";
+ private static final AttributeName SPF_HEADER_MAIL_ATTRIBUTE_NAME = AttributeName.of("org.apache.james.spf.header");
/** If set to true the mail will also be rejected on a softfail */
private boolean blockSoftFail = false;
@@ -274,7 +277,7 @@ public class SPFHandler implements JamesMessageHook, MailHook, RcptHook, Protoco
@Override
public HookResult onMessage(SMTPSession session, Mail mail) {
// Store the spf header as attribute for later using
- mail.setAttribute(SPF_HEADER_MAIL_ATTRIBUTE_NAME, (String) session.getAttachment(SPF_HEADER, State.Transaction));
+ mail.setAttribute(new Attribute(SPF_HEADER_MAIL_ATTRIBUTE_NAME, AttributeValue.of((String) session.getAttachment(SPF_HEADER, State.Transaction))));
return null;
}
diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
index d072828..c6e094b 100644
--- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
+++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
@@ -50,6 +50,7 @@ import org.apache.james.server.core.MimeMessageCopyOnWriteProxy;
import org.apache.james.server.core.MimeMessageInputStream;
import org.apache.james.server.core.MimeMessageSource;
import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -122,8 +123,8 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport {
BlobMessage blobMessage = (BlobMessage) message;
try {
// store URL and queueName for later usage
- builder.addAttribute(Attribute.convertToAttribute(JAMES_BLOB_URL, blobMessage.getURL()));
- builder.addAttribute(Attribute.convertToAttribute(JAMES_QUEUE_NAME, queueName));
+ builder.addAttribute(new Attribute(JAMES_BLOB_URL, AttributeValue.of(blobMessage.getURL())));
+ builder.addAttribute(new Attribute(JAMES_QUEUE_NAME, AttributeValue.of(queueName)));
} catch (MalformedURLException e) {
// Ignore on error
LOGGER.debug("Unable to get url from blobmessage for mail");
diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQSupport.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQSupport.java
index 56841fa..a2c4da1 100644
--- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQSupport.java
+++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQSupport.java
@@ -29,12 +29,12 @@ public interface ActiveMQSupport extends JMSSupport {
/**
* The name of the Queue the mail is stored in
*/
- String JAMES_QUEUE_NAME = "JAMES_QUEUE_NAME";
+ AttributeName JAMES_QUEUE_NAME = AttributeName.of("JAMES_QUEUE_NAME");
/**
* The URL of the Blobmessage content
*/
- String JAMES_BLOB_URL = "JAMES_BLOB_URL";
+ AttributeName JAMES_BLOB_URL = AttributeName.of("JAMES_BLOB_URL");
/**
* Indicate that the Blobmessage content is reused for a new message
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index eb57b38..aea5ef4 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -70,6 +70,7 @@ import org.apache.james.util.SerializationUtil;
import org.apache.mailet.Attribute;
import org.apache.mailet.AttributeName;
import org.apache.mailet.AttributeUtils;
+import org.apache.mailet.AttributeValue;
import org.apache.mailet.Mail;
import org.apache.mailet.PerRecipientHeaders;
import org.slf4j.Logger;
@@ -438,7 +439,7 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
Object attrValue = Throwing.function(message::getObjectProperty).apply(name);
if (attrValue instanceof String) {
- return Stream.of(Attribute.convertToAttribute(name, SerializationUtil.deserialize((String) attrValue)));
+ return Stream.of(new Attribute(AttributeName.of(name), AttributeValue.ofAny(SerializationUtil.deserialize((String) attrValue))));
} else {
LOGGER.error("Not supported mail attribute {} of type {} for mail {}", name, attrValue, name);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org