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 no...@apache.org on 2010/12/21 13:05:58 UTC
svn commit: r1051470 [2/2] - in /james/server/trunk:
container-spring/src/main/config/examples/
container-spring/src/main/config/james/context/
mailetcontainer-api/src/main/java/org/apache/james/mailetcontainer/api/
mailetcontainer-api/src/main/java/or...
Copied: james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MailetManagement.java (from r1051383, james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MailetManagement.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MailetManagement.java?p2=james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MailetManagement.java&p1=james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MailetManagement.java&r1=1051383&r2=1051470&rev=1051470&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MailetManagement.java (original)
+++ james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MailetManagement.java Tue Dec 21 12:05:57 2010
@@ -16,111 +16,56 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.mailetcontainer.lib;
+package org.apache.james.mailetcontainer.lib.jmx;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.concurrent.atomic.AtomicLong;
-import javax.mail.MessagingException;
import javax.management.NotCompliantMBeanException;
import javax.management.StandardMBean;
-import org.apache.james.mailetcontainer.api.MailetManagementMBean;
-import org.apache.mailet.Mail;
-import org.apache.mailet.Mailet;
+import org.apache.james.mailetcontainer.api.jmx.MailetManagementMBean;
import org.apache.mailet.MailetConfig;
-/**
- * Class which wraps a {@link Mailet} and expose statistics via JMX
- *
- *
- *
- *
- */
-public final class MailetManagement extends StandardMBean implements Mailet, MailetManagementMBean{
-
- private final Mailet mailet;
- private long errorCount = 0;
- private long successCount = 0;
- private long fastestProcessing = -1;
- private long slowestProcessing = -1;
+public final class MailetManagement extends StandardMBean implements MailetManagementMBean{
+
+ private AtomicLong errorCount = new AtomicLong(0);
+ private AtomicLong successCount = new AtomicLong(0);
+ private AtomicLong fastestProcessing = new AtomicLong(-1);
+ private AtomicLong slowestProcessing = new AtomicLong(-1);
+ private final MailetConfig config;
- public MailetManagement(Mailet mailet) throws NotCompliantMBeanException {
+ public MailetManagement(MailetConfig config) throws NotCompliantMBeanException {
super(MailetManagementMBean.class);
- this.mailet = mailet;
+ this.config = config;
}
-
- /*
- * (non-Javadoc)
- * @see org.apache.mailet.Mailet#destroy()
- */
- public void destroy() {
- mailet.destroy();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.mailet.Mailet#getMailetConfig()
- */
- public MailetConfig getMailetConfig() {
- return mailet.getMailetConfig();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.mailet.Mailet#getMailetInfo()
- */
- public String getMailetInfo() {
- return mailet.getMailetInfo();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.mailet.Mailet#init(org.apache.mailet.MailetConfig)
- */
- public void init(MailetConfig config) throws MessagingException {
- mailet.init(config);
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.mailet.Mailet#service(org.apache.mailet.Mail)
- */
- public void service(Mail mail) throws MessagingException {
- long startProcessing = System.currentTimeMillis();
- try {
- mailet.service(mail);
- long processTime = System.currentTimeMillis() - startProcessing;
- if (processTime > slowestProcessing) {
- slowestProcessing = processTime;
- }
- if (fastestProcessing == -1 || fastestProcessing > processTime) {
- fastestProcessing = processTime;
- }
- successCount++;
- } catch (MessagingException e) {
- errorCount++;
- throw e;
+
+
+ public void update(long processTime, boolean success) {
+ long fastest = fastestProcessing.get();
+
+ if ( fastest > processTime || fastest == -1) {
+ fastestProcessing.set(processTime);
}
- }
-
- /**
- * Return the wrapped {@link Mailet}
- *
- * @return mailet
- */
- public Mailet getMailet() {
- return mailet;
- }
-
+
+ if (slowestProcessing.get() < processTime) {
+ slowestProcessing.set(processTime);
+ }
+ if (success) {
+ successCount.incrementAndGet();
+ } else {
+ errorCount.incrementAndGet();
+ }
+ }
/*
* (non-Javadoc)
* @see org.apache.james.mailetcontainer.MailetManagementMBean#getMailetName()
*/
public String getMailetName() {
- return mailet.getMailetConfig().getMailetName();
+ return config.getMailetName();
}
/*
@@ -129,11 +74,10 @@ public final class MailetManagement exte
@SuppressWarnings("unchecked")
public String[] getMailetParameters() {
List<String> parameterList = new ArrayList<String>();
- MailetConfig mailetConfig = getMailet().getMailetConfig();
- Iterator<String> iterator = mailetConfig.getInitParameterNames();
+ Iterator<String> iterator = config.getInitParameterNames();
while (iterator.hasNext()) {
String name = (String) iterator.next();
- String value = mailetConfig.getInitParameter(name);
+ String value = config.getInitParameter(name);
parameterList.add(name + "=" + value);
}
String[] result = (String[]) parameterList.toArray(new String[] {});
@@ -145,7 +89,7 @@ public final class MailetManagement exte
* @see org.apache.james.mailetcontainer.MailetManagementMBean#getErrorCount()
*/
public long getErrorCount() {
- return errorCount;
+ return errorCount.get();
}
/*
@@ -153,7 +97,7 @@ public final class MailetManagement exte
* @see org.apache.james.mailetcontainer.MailetManagementMBean#getFastestProcessing()
*/
public long getFastestProcessing() {
- return fastestProcessing;
+ return fastestProcessing.get();
}
/*
@@ -169,7 +113,7 @@ public final class MailetManagement exte
* @see org.apache.james.mailetcontainer.MailetManagementMBean#getSlowestProcessing()
*/
public long getSlowestProcessing() {
- return slowestProcessing;
+ return slowestProcessing.get();
}
/*
@@ -177,7 +121,7 @@ public final class MailetManagement exte
* @see org.apache.james.mailetcontainer.MailetManagementMBean#getSuccessCount()
*/
public long getSuccessCount() {
- return successCount;
+ return successCount.get();
}
}
Copied: james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MatcherManagement.java (from r1051383, james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MatcherManagement.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MatcherManagement.java?p2=james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MatcherManagement.java&p1=james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MatcherManagement.java&r1=1051383&r2=1051470&rev=1051470&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MatcherManagement.java (original)
+++ james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MatcherManagement.java Tue Dec 21 12:05:57 2010
@@ -16,47 +16,56 @@
* specific language governing permissions and limitations *
* under the License. *
****************************************************************/
-package org.apache.james.mailetcontainer.lib;
+package org.apache.james.mailetcontainer.lib.jmx;
-import java.util.Collection;
+import java.util.concurrent.atomic.AtomicLong;
-import javax.mail.MessagingException;
import javax.management.NotCompliantMBeanException;
import javax.management.StandardMBean;
-import org.apache.james.mailetcontainer.api.MatcherManagementMBean;
-import org.apache.mailet.Mail;
-import org.apache.mailet.Matcher;
+import org.apache.james.mailetcontainer.api.jmx.MatcherManagementMBean;
import org.apache.mailet.MatcherConfig;
-/**
- * JMX MBean which will collection statistics for the wrapped {@link Matcher}
- *
- *
- */
-public final class MatcherManagement extends StandardMBean implements MatcherManagementMBean, Matcher{
- private Matcher matcher;
- private long slowestProcessing = -1;
- private long fastestProcessing = -1;
- private long successCount = 0;
- private long errorCount = 0;
- private long matched = 0;
- private long notMatched = 0;
+
+public final class MatcherManagement extends StandardMBean implements MatcherManagementMBean{
+ private MatcherConfig matcherConfig;
+ private AtomicLong errorCount = new AtomicLong(0);
+ private AtomicLong successCount = new AtomicLong(0);
+ private AtomicLong fastestProcessing = new AtomicLong(-1);
+ private AtomicLong slowestProcessing = new AtomicLong(-1);
+ private AtomicLong matchedCount = new AtomicLong(0);
+ private AtomicLong notMatchedCount = new AtomicLong(0);
- public MatcherManagement(Matcher matcher) throws NotCompliantMBeanException {
+ public MatcherManagement(MatcherConfig matcherConfig) throws NotCompliantMBeanException {
super(MatcherManagementMBean.class);
- this.matcher = matcher;
+ this.matcherConfig = matcherConfig;
}
- /**
- * Return the wrapped {@link Matcher}
- *
- * @return wrappedMatcher
- */
- public Matcher getMatcher() {
- return matcher;
- }
+
+ public void update(long processTime, boolean success, boolean matched) {
+ long fastest = fastestProcessing.get();
+
+ if ( fastest > processTime || fastest == -1) {
+ fastestProcessing.set(processTime);
+ }
+
+ if (slowestProcessing.get() < processTime) {
+ slowestProcessing.set(processTime);
+ }
+ if (success) {
+ successCount.incrementAndGet();
+ } else {
+ errorCount.incrementAndGet();
+ }
+ if (matched) {
+ matchedCount.incrementAndGet();
+ } else {
+ notMatchedCount.incrementAndGet();
+ }
+
+ }
+
/*
@@ -64,7 +73,7 @@ public final class MatcherManagement ext
* @see org.apache.james.mailetcontainer.MatcherManagementMBean#getMatcherName()
*/
public String getMatcherName() {
- return matcher.getMatcherConfig().getMatcherName();
+ return matcherConfig.getMatcherName();
}
@@ -73,7 +82,7 @@ public final class MatcherManagement ext
* @see org.apache.james.mailetcontainer.MatcherManagementMBean#getMatcherCondition()
*/
public String getMatcherCondition() {
- return matcher.getMatcherConfig().getCondition();
+ return matcherConfig.getCondition();
}
/*
@@ -81,7 +90,7 @@ public final class MatcherManagement ext
* @see org.apache.james.mailetcontainer.MailProcessingMBean#getErrorCount()
*/
public long getErrorCount() {
- return errorCount;
+ return errorCount.get();
}
/*
@@ -89,7 +98,7 @@ public final class MatcherManagement ext
* @see org.apache.james.mailetcontainer.MailProcessingMBean#getFastestProcessing()
*/
public long getFastestProcessing() {
- return fastestProcessing;
+ return fastestProcessing.get();
}
/*
@@ -106,7 +115,7 @@ public final class MatcherManagement ext
* @see org.apache.james.mailetcontainer.MailProcessingMBean#getSlowestProcessing()
*/
public long getSlowestProcessing() {
- return slowestProcessing;
+ return slowestProcessing.get();
}
/*
@@ -114,79 +123,16 @@ public final class MatcherManagement ext
* @see org.apache.james.mailetcontainer.MailProcessingMBean#getSuccessCount()
*/
public long getSuccessCount() {
- return successCount;
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.mailet.Matcher#destroy()
- */
- public void destroy() {
- matcher.destroy();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.mailet.Matcher#getMatcherConfig()
- */
- public MatcherConfig getMatcherConfig() {
- return matcher.getMatcherConfig();
- }
-
- /*
- * (non-Javadoc)
- * @see org.apache.mailet.Matcher#getMatcherInfo()
- */
- public String getMatcherInfo() {
- return matcher.getMatcherInfo();
+ return successCount.get();
}
- /*
- * (non-Javadoc)
- * @see org.apache.mailet.Matcher#init(org.apache.mailet.MatcherConfig)
- */
- public void init(MatcherConfig config) throws MessagingException {
- matcher.init(config);
- }
-
- @SuppressWarnings("unchecked")
- public Collection match(Mail mail) throws MessagingException {
- try {
- long startProcessing = System.currentTimeMillis();
- Collection origRcpts = mail.getRecipients();
- Collection rcpts = matcher.match(mail);
-
- long processTime = System.currentTimeMillis() - startProcessing;
- if (processTime > slowestProcessing) {
- slowestProcessing = processTime;
- }
- if (fastestProcessing == -1 || fastestProcessing > processTime) {
- fastestProcessing = processTime;
- }
- successCount++;
-
- long match = 0;
- if (rcpts != null) {
- match = rcpts.size();
- matched =+ match;
- }
-
- if (origRcpts != null) {
- notMatched =+ origRcpts.size() - match;
- }
- return rcpts;
- } catch (MessagingException ex) {
- errorCount++;
- throw ex;
- }
- }
/*
* (non-Javadoc)
* @see org.apache.james.mailetcontainer.MatcherManagementMBean#getMatchedRecipientCount()
*/
public long getMatchedRecipientCount() {
- return matched;
+ return matchedCount.get();
}
/*
@@ -194,7 +140,7 @@ public final class MatcherManagement ext
* @see org.apache.james.mailetcontainer.MatcherManagementMBean#getNotMatchedRecipientCount()
*/
public long getNotMatchedRecipientCount() {
- return notMatched;
+ return notMatchedCount.get();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org