JAMES-1868 Adding a metric for Local Delivered emails

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9d40cb20
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9d40cb20
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9d40cb20

Branch: refs/heads/master
Commit: 9d40cb205160d05e4caefcfb49885e262a84e3c8
Parents: 6ce3c8e
Author: Benoit Tellier <btell...@linagora.com>
Authored: Fri Nov 25 10:44:34 2016 +0700
Committer: Benoit Tellier <btell...@linagora.com>
Committed: Wed Nov 30 16:32:21 2016 +0700

----------------------------------------------------------------------
 .../james/transport/mailets/LocalDelivery.java       |  7 ++++++-
 .../james/transport/mailets/ToRecipientFolder.java   |  9 ++++++++-
 .../transport/mailets/delivery/SimpleMailStore.java  | 15 +++++++++++++--
 .../mailets/delivery/LocalDeliveryTest.java          |  7 ++++++-
 .../mailets/delivery/SieveIntegrationTest.java       |  2 +-
 .../mailets/delivery/SimpleMailStoreTest.java        |  2 ++
 .../mailets/delivery/ToRecipientFolderTest.java      |  6 +++++-
 7 files changed, 41 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
index 70a193e..130bf91 100644
--- 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
+++ 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java
@@ -28,6 +28,7 @@ import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.mailbox.MailboxManager;
 
 import org.apache.james.mailbox.model.MailboxConstants;
+import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.transport.mailets.delivery.MailDispatcher;
 import org.apache.james.transport.mailets.delivery.MailboxAppender;
 import org.apache.james.transport.mailets.delivery.SimpleMailStore;
@@ -46,14 +47,17 @@ import org.apache.mailet.base.GenericMailet;
  */
 public class LocalDelivery extends GenericMailet {
 
+    public static final String LOCAL_DELIVERED_MAILS_METRIC_NAME = 
"localDeliveredMails";
     private final UsersRepository usersRepository;
     private final MailboxManager mailboxManager;
     private final RecipientRewriteTable recipientRewriteTable;
+    private final MetricFactory metricFactory;
     private MailDispatcher mailDispatcher;
 
     @Inject
     public LocalDelivery(org.apache.james.rrt.api.RecipientRewriteTable rrt, 
UsersRepository usersRepository,
-                         @Named("mailboxmanager") MailboxManager 
mailboxManager, DomainList domainList) {
+                         @Named("mailboxmanager") MailboxManager 
mailboxManager, DomainList domainList, MetricFactory metricFactory) {
+        this.metricFactory = metricFactory;
         this.usersRepository = usersRepository;
         this.mailboxManager = mailboxManager;
         this.recipientRewriteTable = new RecipientRewriteTable(rrt, 
domainList);
@@ -82,6 +86,7 @@ public class LocalDelivery extends GenericMailet {
                 .mailboxAppender(new MailboxAppender(mailboxManager, 
getMailetContext().getLogger()))
                 .usersRepository(usersRepository)
                 .folder(MailboxConstants.INBOX)
+                
.metric(metricFactory.generate(LOCAL_DELIVERED_MAILS_METRIC_NAME))
                 .log(log)
                 .build())
             .consume(getInitParameter("consume", true))

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java
 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java
index 9cebeb1..bba8ed2 100644
--- 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java
+++ 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.james.transport.mailets;
 
+import static 
org.apache.james.transport.mailets.LocalDelivery.LOCAL_DELIVERED_MAILS_METRIC_NAME;
+
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.mail.MessagingException;
@@ -25,6 +27,7 @@ import javax.mail.MessagingException;
 import org.apache.commons.logging.Log;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.model.MailboxConstants;
+import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.transport.mailets.delivery.MailDispatcher;
 import org.apache.james.transport.mailets.delivery.MailboxAppender;
 import org.apache.james.transport.mailets.delivery.SimpleMailStore;
@@ -56,10 +59,13 @@ public class ToRecipientFolder extends GenericMailet {
 
     private final MailboxManager mailboxManager;
     private final UsersRepository usersRepository;
+    private final MetricFactory metricFactory;
     private MailDispatcher mailDispatcher;
 
     @Inject
-    public ToRecipientFolder(@Named("mailboxmanager")MailboxManager 
mailboxManager, UsersRepository usersRepository) {
+    public ToRecipientFolder(@Named("mailboxmanager")MailboxManager 
mailboxManager, UsersRepository usersRepository,
+                             MetricFactory metricFactory) {
+        this.metricFactory = metricFactory;
         this.mailboxManager = mailboxManager;
         this.usersRepository = usersRepository;
     }
@@ -81,6 +87,7 @@ public class ToRecipientFolder extends GenericMailet {
                 .mailboxAppender(new MailboxAppender(mailboxManager, 
getMailetContext().getLogger()))
                 .usersRepository(usersRepository)
                 .folder(getInitParameter(FOLDER_PARAMETER, 
MailboxConstants.INBOX))
+                
.metric(metricFactory.generate(LOCAL_DELIVERED_MAILS_METRIC_NAME))
                 .log(log)
                 .build())
             .consume(getInitParameter(CONSUME_PARAMETER, false))

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
index d693065..7f2783e 100644
--- 
a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
+++ 
b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java
@@ -22,6 +22,7 @@ package org.apache.james.transport.mailets.delivery;
 import javax.mail.MessagingException;
 
 import org.apache.commons.logging.Log;
+import org.apache.james.metrics.api.Metric;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.mailet.Mail;
@@ -39,6 +40,7 @@ public class SimpleMailStore implements MailStore {
         private UsersRepository usersRepos;
         private MailboxAppender mailboxAppender;
         private String folder;
+        private Metric metric;
         private Log log;
 
         public Builder folder(String folder) {
@@ -61,23 +63,31 @@ public class SimpleMailStore implements MailStore {
             return this;
         }
 
+        public Builder metric(Metric metric) {
+            this.metric = metric;
+            return this;
+        }
+
         public SimpleMailStore build() throws MessagingException {
             Preconditions.checkNotNull(usersRepos);
             Preconditions.checkNotNull(folder);
             Preconditions.checkNotNull(log);
             Preconditions.checkNotNull(mailboxAppender);
-            return new SimpleMailStore(mailboxAppender, usersRepos, log, 
folder);
+            Preconditions.checkNotNull(metric);
+            return new SimpleMailStore(mailboxAppender, usersRepos, metric, 
log, folder);
         }
     }
 
     private final MailboxAppender mailboxAppender;
     private final UsersRepository usersRepository;
+    private final Metric metric;
     private final Log log;
     private final String folder;
 
-    private SimpleMailStore(MailboxAppender mailboxAppender, UsersRepository 
usersRepository, Log log, String folder) {
+    private SimpleMailStore(MailboxAppender mailboxAppender, UsersRepository 
usersRepository, Metric metric, Log log, String folder) {
         this.mailboxAppender = mailboxAppender;
         this.usersRepository = usersRepository;
+        this.metric = metric;
         this.log = log;
         this.folder = folder;
     }
@@ -89,6 +99,7 @@ public class SimpleMailStore implements MailStore {
         String locatedFolder = locateFolder(username, mail);
         mailboxAppender.append(mail.getMessage(), username, locatedFolder);
 
+        metric.increment();
         log.info("Local delivered mail " + mail.getName() + " successfully 
from " + DeliveryUtils.prettyPrint(mail.getSender())
             + " to " + DeliveryUtils.prettyPrint(recipient) + " in folder " + 
locatedFolder);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/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 61d842b..84d2e50 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
@@ -20,6 +20,7 @@
 package org.apache.james.transport.mailets.delivery;
 
 import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
@@ -46,6 +47,8 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.metrics.api.Metric;
+import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.rrt.api.RecipientRewriteTable;
 import org.apache.james.transport.mailets.LocalDelivery;
 import org.apache.james.user.api.UsersRepository;
@@ -77,7 +80,9 @@ public class LocalDeliveryTest {
         DomainList domainList = mock(DomainList.class);
 
 
-        testee = new LocalDelivery(recipientRewriteTable, usersRepository, 
mailboxManager, domainList);
+        MetricFactory metricFactory = mock(MetricFactory.class);
+        
when(metricFactory.generate(anyString())).thenReturn(mock(Metric.class));
+        testee = new LocalDelivery(recipientRewriteTable, usersRepository, 
mailboxManager, domainList, metricFactory);
 
         user = mock(MailboxSession.User.class);
         MailboxSession session = mock(MailboxSession.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/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 0e669e9..97556de 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
@@ -88,7 +88,7 @@ public class SieveIntegrationTest {
         fakeMailContext = 
FakeMailContext.builder().logger(mock(Logger.class)).build();
 
         testee = new Sieve(usersRepository, resourceLocator);
-        testee.init(new FakeMailetConfig("Sieve", fakeMailContext));
+        
testee.init(FakeMailetConfig.builder().mailetName("Sieve").mailetContext(fakeMailContext).build());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/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 42d09f2..15cac3f 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
@@ -36,6 +36,7 @@ import javax.mail.internet.MimeMultipart;
 import javax.mail.util.ByteArrayDataSource;
 
 import org.apache.commons.logging.Log;
+import org.apache.james.metrics.api.Metric;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.mailet.MailAddress;
@@ -60,6 +61,7 @@ public class SimpleMailStoreTest {
             .usersRepository(usersRepository)
             .mailboxAppender(mailboxAppender)
             .folder(FOLDER)
+            .metric(mock(Metric.class))
             .log(mock(Log.class))
             .build();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/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 48306f3..f166c09 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
@@ -21,6 +21,7 @@ package org.apache.james.transport.mailets.delivery;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
@@ -46,6 +47,7 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.metrics.api.Metric;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.transport.mailets.ToRecipientFolder;
 import org.apache.james.user.api.UsersRepository;
@@ -86,7 +88,9 @@ public class ToRecipientFolderTest {
         user = mock(MailboxSession.User.class);
 
 
-        testee = new ToRecipientFolder(mailboxManager, usersRepository, 
mock(MetricFactory.class));
+        MetricFactory metricFactory = mock(MetricFactory.class);
+        
when(metricFactory.generate(anyString())).thenReturn(mock(Metric.class));
+        testee = new ToRecipientFolder(mailboxManager, usersRepository, 
metricFactory);
 
         MailboxSession session = mock(MailboxSession.class);
         when(session.getPathDelimiter()).thenReturn('.');


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

Reply via email to