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 <gdifo...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org