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 bt...@apache.org on 2018/01/05 02:56:25 UTC

[06/44] james-project git commit: JAMES-2267 Improve MimeMessageBuilder fluency: implicit build calling

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
index 1561c54..2d86d4d 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/mailets/crypto/SMIMESignIntegrationTest.java
@@ -90,40 +90,33 @@ public class SMIMESignIntegrationTest {
                     .matcher(SMTPAuthSuccessful.class)
                     .mailet(SetMimeHeader.class)
                     .addProperty("name", "X-UserIsAuth")
-                    .addProperty("value", "true")
-                    .build())
+                    .addProperty("value", "true"))
                 .addMailet(MailetConfiguration.builder()
                     .matcher(HasMailAttribute.class)
                     .matcherCondition("org.apache.james.SMIMECheckSignature")
                     .mailet(SetMimeHeader.class)
                     .addProperty("name", "X-WasSigned")
-                    .addProperty("value", "true")
-                    .build())
+                    .addProperty("value", "true"))
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
                     .mailet(RemoveMimeHeader.class)
-                    .addProperty("name", "bcc")
-                    .build())
+                    .addProperty("name", "bcc"))
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
-                    .mailet(RecipientRewriteTable.class)
-                    .build())
+                    .mailet(RecipientRewriteTable.class))
                 .addMailet(MailetConfiguration.builder()
                     .matcher(RecipientIsLocal.class)
-                    .mailet(VacationMailet.class)
-                    .build())
+                    .mailet(VacationMailet.class))
                 .addMailet(MailetConfiguration.builder()
                     .mailet(SMIMESign.class)
                     .matcher(SenderIsLocal.class)
                     .addProperty("keyStoreFileName", temporaryFolder.getRoot().getAbsoluteFile().getAbsolutePath() + "/conf/smime.p12")
                     .addProperty("keyStorePassword", "secret")
                     .addProperty("keyStoreType", "PKCS12")
-                    .addProperty("debug", "true")
-                    .build())
+                    .addProperty("debug", "true"))
                 .addMailet(MailetConfiguration.builder()
                     .matcher(RecipientIsLocal.class)
-                    .mailet(LocalDelivery.class)
-                    .build())
+                    .mailet(LocalDelivery.class))
                 .addMailet(MailetConfiguration.builder()
                     .matcher(SMTPAuthSuccessful.class)
                     .mailet(RemoteDelivery.class)
@@ -133,14 +126,11 @@ public class SMIMESignIntegrationTest {
                     .addProperty("maxDnsProblemRetries", "0")
                     .addProperty("deliveryThreads", "10")
                     .addProperty("sendpartial", "true")
-                    .addProperty("bounceProcessor", "bounces")
-                    .build())
+                    .addProperty("bounceProcessor", "bounces"))
                 .addMailet(MailetConfiguration.builder()
                     .matcher(All.class)
                     .mailet(ToProcessor.class)
-                    .addProperty("processor", "relay-denied")
-                    .build())
-                .build())
+                    .addProperty("processor", "relay-denied")))
             .addProcessor(CommonProcessors.spam())
             .addProcessor(CommonProcessors.localAddressError())
             .addProcessor(CommonProcessors.relayDenied())

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
index 294c4e8..a91ee69 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java
@@ -23,8 +23,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import java.nio.charset.StandardCharsets;
 
-import javax.mail.internet.MimeMessage;
-
 import org.apache.james.core.MailAddress;
 import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailbox.model.MailboxConstants;
@@ -155,18 +153,15 @@ public class AmqpForwardAttachmentTest {
 
     @Test
     public void stripAttachmentShouldPutAttachmentsInMailAttributeWhenConfiguredForIt() throws Exception {
-        MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+        MimeMessageBuilder message = MimeMessageBuilder.mimeMessageBuilder()
             .setMultipartWithBodyParts(
                 MimeMessageBuilder.bodyPartBuilder()
-                    .data("simple text")
-                    .build(),
+                    .data("simple text"),
                 MimeMessageBuilder.bodyPartBuilder()
                     .data(TEST_ATTACHMENT_CONTENT)
                     .disposition("attachment")
-                    .filename("test.txt")
-                    .build())
-            .setSubject("test")
-            .build();
+                    .filename("test.txt"))
+            .setSubject("test");
 
         Mail mail = FakeMail.builder()
               .mimeMessage(message)

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
index 560d633..d258675 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ContactExtractorTest.java
@@ -23,8 +23,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.Optional;
 
-import javax.mail.internet.MimeMessage;
-
 import org.apache.james.core.MailAddress;
 import org.apache.james.jmap.mailet.VacationMailet;
 import org.apache.james.mailets.TemporaryJamesServer;
@@ -134,14 +132,13 @@ public class ContactExtractorTest {
 
     @Test
     public void recipientsShouldBePublishedToAmqpWhenSendingEmail() throws Exception {
-        MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
+        MimeMessageBuilder message = MimeMessageBuilder.mimeMessageBuilder()
             .setSender(SENDER)
             .addToRecipient(TO, "John To2 <" + TO2 + ">")
             .addCcRecipient(CC, "John Cc2 <" + CC2 + ">")
             .addBccRecipient(BCC, "John Bcc2 <" + BCC2 + ">")
             .setSubject("Contact collection Rocks")
-            .setText("This is my email")
-            .build();
+            .setText("This is my email");
         FakeMail mail = FakeMail.builder()
             .mimeMessage(message)
             .sender(new MailAddress(SENDER))

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
index cc9c98d..217a721 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ICSAttachmentWorkflowTest.java
@@ -531,26 +531,22 @@ public class ICSAttachmentWorkflowTest {
         messageWithoutICSAttached = MimeMessageBuilder.mimeMessageBuilder()
             .setMultipartWithBodyParts(
                 MimeMessageBuilder.bodyPartBuilder()
-                    .data("simple text")
-                    .build(),
+                    .data("simple text"),
                 MimeMessageBuilder.bodyPartBuilder()
                     .data("My attachment")
                     .filename("test.txt")
-                    .disposition("attachment")
-                    .build())
+                    .disposition("attachment"))
             .setSubject("test")
             .build();
 
         messageWithICSAttached = MimeMessageBuilder.mimeMessageBuilder()
             .setMultipartWithBodyParts(
                 MimeMessageBuilder.bodyPartBuilder()
-                    .data("simple text")
-                    .build(),
+                    .data("simple text"),
                 MimeMessageBuilder.bodyPartBuilder()
                     .data(ICS_1.getBytes(StandardCharsets.UTF_8))
                     .filename("meeting.ics")
-                    .disposition("attachment")
-                    .build())
+                    .disposition("attachment"))
             .setSubject("test")
             .build();
 
@@ -568,23 +564,19 @@ public class ICSAttachmentWorkflowTest {
         messageWithThreeICSAttached = MimeMessageBuilder.mimeMessageBuilder()
             .setMultipartWithBodyParts(
                 MimeMessageBuilder.bodyPartBuilder()
-                    .data("simple text")
-                    .build(),
+                    .data("simple text"),
                 MimeMessageBuilder.bodyPartBuilder()
                     .data(ICS_1.getBytes(StandardCharsets.UTF_8))
                     .filename("test1.txt")
-                    .disposition("attachment")
-                    .build(),
+                    .disposition("attachment"),
                 MimeMessageBuilder.bodyPartBuilder()
                     .data(ICS_2.getBytes(StandardCharsets.UTF_8))
                     .filename("test2.txt")
-                    .disposition("attachment")
-                    .build(),
+                    .disposition("attachment"),
                 MimeMessageBuilder.bodyPartBuilder()
                     .data(ICS_3.getBytes(StandardCharsets.UTF_8))
                     .filename("test3.txt")
-                    .disposition("attachment")
-                    .build())
+                    .disposition("attachment"))
             .setSubject("test")
             .build();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index f32fb0c..8ad3299 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -138,18 +138,15 @@ public class StripAttachmentTest {
         MimeMessage message = MimeMessageBuilder.mimeMessageBuilder()
             .setMultipartWithBodyParts(
                 MimeMessageBuilder.bodyPartBuilder()
-                    .data("simple text")
-                    .build(),
+                    .data("simple text"),
                 MimeMessageBuilder.bodyPartBuilder()
                     .data("Not matching attachment")
                     .filename("not_matching.tmp")
-                    .disposition("attachment")
-                    .build(),
+                    .disposition("attachment"),
                 MimeMessageBuilder.bodyPartBuilder()
                     .data("Matching attachment")
                     .filename("temp.zip")
-                    .disposition("attachment")
-                    .build())
+                    .disposition("attachment"))
             .setSubject("test")
             .build();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
index b9ac01d..dde9d3f 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
@@ -135,9 +135,7 @@ public class LocalDeliveryTest {
                             .data("toto")
                             .disposition(MimeBodyPart.ATTACHMENT)
                             .filename("file.txt")
-                            .addHeader("Content-Type", "application/sieve; charset=UTF-8")
-                            .build())
-                    .build())
+                            .addHeader("Content-Type", "application/sieve; charset=UTF-8")))
                 .state(Mail.DEFAULT)
                 .recipient(new MailAddress("receiver@domain.com"))
                 .build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java
index 547ae9b..fb7bb57 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailDispatcherTest.java
@@ -31,11 +31,10 @@ import java.util.Collection;
 import java.util.List;
 
 import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.mailet.Mail;
 import org.apache.james.core.MailAddress;
+import org.apache.mailet.Mail;
 import org.apache.mailet.PerRecipientHeaders.Header;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.RFC2822Headers;
@@ -133,12 +132,10 @@ public class MailDispatcherTest {
             .when(mailStore)
             .storeMail(any(MailAddress.class), any(Mail.class));
 
-        MimeMessage mimeMessage = MimeMessageBuilder.mimeMessageBuilder()
+        MimeMessageBuilder mimeMessage = MimeMessageBuilder.mimeMessageBuilder()
             .setMultipartWithBodyParts(
                 MimeMessageBuilder.bodyPartBuilder()
-                    .data("toto")
-                    .build())
-            .build();
+                    .data("toto"));
 
         FakeMail mail = FakeMail.builder()
             .sender(MailAddressFixture.OTHER_AT_JAMES)
@@ -311,8 +308,7 @@ public class MailDispatcherTest {
             .sender(MailAddressFixture.OTHER_AT_JAMES)
             .recipients(MailAddressFixture.ANY_AT_JAMES, MailAddressFixture.ANY_AT_JAMES2)
             .mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
-                    .addHeader(TEST_HEADER_NAME, headerValue)
-                    .build())
+                    .addHeader(TEST_HEADER_NAME, headerValue))
             .state("state")
             .build();
         mail.addSpecificHeaderForRecipient(TEST_HEADER_USER1, MailAddressFixture.ANY_AT_JAMES);

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
index 166ab55..363721c 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
@@ -33,7 +33,6 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MessageResultIterator;
-import org.apache.james.mailbox.store.StoreMailboxManager;
 import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.After;
 import org.junit.Before;
@@ -60,13 +59,12 @@ public class MailboxAppenderTest {
         mimeMessage = MimeMessageBuilder.mimeMessageBuilder()
             .setMultipartWithBodyParts(
                 MimeMessageBuilder.bodyPartBuilder()
-                    .data("toto")
-                    .build())
+                    .data("toto"))
             .build();
 
         integrationResources = new InMemoryIntegrationResources();
         integrationResources.init();
-        mailboxManager = new ManagerTestResources<StoreMailboxManager>(integrationResources).getMailboxManager();
+        mailboxManager = new ManagerTestResources<>(integrationResources).getMailboxManager();
         testee = new MailboxAppender(mailboxManager);
 
         session = mailboxManager.createSystemSession("TEST");

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
index 1d8736d..8ead6a7 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
@@ -961,9 +961,7 @@ public class SieveIntegrationTest {
                             .data("A text to match")
                             .addHeader("Content-Type", "text/plain; charset=UTF-8")
                             .filename("file.txt")
-                            .disposition(MimeBodyPart.ATTACHMENT)
-                            .build())
-                    .build())
+                            .disposition(MimeBodyPart.ATTACHMENT)))
             .state(Mail.DEFAULT)
             .recipient(new MailAddress(RECEIVER_DOMAIN_COM))
             .sender(new MailAddress("sender@any.com"))

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
index 32a3844..ae2972c 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java
@@ -27,10 +27,10 @@ import static org.mockito.Mockito.when;
 
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.core.MailAddress;
 import org.apache.james.metrics.api.Metric;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.MimeMessageBuilder;
@@ -59,8 +59,7 @@ public class SimpleMailStoreTest {
         mimeMessage = MimeMessageBuilder.mimeMessageBuilder()
             .setMultipartWithBodyParts(
                 MimeMessageBuilder.bodyPartBuilder()
-                    .data("toto")
-                    .build())
+                    .data("toto"))
             .build();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
index 6222bdf..3ee7c81 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
@@ -197,9 +197,7 @@ public class ToRecipientFolderTest {
                         .data("toto")
                         .disposition(MimeBodyPart.ATTACHMENT)
                         .filename("file.txt")
-                        .addHeader("Content-Type", "application/sieve; charset=UTF-8")
-                        .build())
-                .build())
+                        .addHeader("Content-Type", "application/sieve; charset=UTF-8")))
             .state(Mail.DEFAULT)
             .recipient(new MailAddress("receiver@domain.com"))
             .build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/0df7c31b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
index 516be1c..c4afffa 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailetTestCase.java
@@ -37,6 +37,7 @@ import javax.mail.internet.MimeMessage.RecipientType;
 import javax.mail.internet.MimeMultipart;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.james.core.MailAddress;
 import org.apache.james.managesieve.api.SieveParser;
 import org.apache.james.managesieve.api.SyntaxException;
 import org.apache.james.sieverepository.api.ScriptSummary;
@@ -44,7 +45,6 @@ import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.Mail;
-import org.apache.james.core.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMailetConfig;
@@ -505,8 +505,7 @@ public class ManageSieveMailetTestCase {
                     .data(scriptContent)
                     .disposition(MimeBodyPart.ATTACHMENT)
                     .filename(SCRIPT_NAME)
-                    .addHeader("Content-Type", "application/sieve; charset=UTF-8")
-                    .build())
+                    .addHeader("Content-Type", "application/sieve; charset=UTF-8"))
             .build();
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org