You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by as...@apache.org on 2009/03/27 12:48:47 UTC
svn commit: r759111 - in
/webservices/commons/trunk/modules/transport/modules:
base/src/main/java/org/apache/axis2/transport/base/ mail/
mail/src/main/java/org/apache/axis2/transport/mail/
Author: asankha
Date: Fri Mar 27 11:48:46 2009
New Revision: 759111
URL: http://svn.apache.org/viewvc?rev=759111&view=rev
Log:
Fix WSCOMMONS-454 (part of SYNAPSE-434 - for Mail transport)
Modified:
webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java
webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java
webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/BaseConstants.java
webservices/commons/trunk/modules/transport/modules/mail/pom.xml
webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailConstants.java
webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java
Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java?rev=759111&r1=759110&r2=759111&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java (original)
+++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java Fri Mar 27 11:48:46 2009
@@ -41,6 +41,8 @@
private long pollInterval;
/** state of the last poll */
private int lastPollState;
+ /** can polling occur in parallel? */
+ private boolean concurrentPollingAllowed = false;
/** The timer task that will trigger the next poll */
TimerTask timerTask;
/** Flag indicating whether polling has been canceled. */
@@ -87,4 +89,12 @@
public void setLastPollState(int lastPollState) {
this.lastPollState = lastPollState;
}
+
+ public boolean isConcurrentPollingAllowed() {
+ return concurrentPollingAllowed;
+ }
+
+ public void setConcurrentPollingAllowed(boolean concurrentPollingAllowed) {
+ this.concurrentPollingAllowed = concurrentPollingAllowed;
+ }
}
Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java?rev=759111&r1=759110&r2=759111&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java (original)
+++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java Fri Mar 27 11:48:46 2009
@@ -42,7 +42,7 @@
@Override
public void init(ConfigurationContext cfgCtx,
TransportInDescription transportIn) throws AxisFault {
-
+
timer = new Timer("PollTimer");
super.init(cfgCtx, transportIn);
T entry = createPollTableEntry(transportIn);
@@ -96,9 +96,12 @@
} else {
poll(entry);
}
- synchronized (entry) {
- if (!entry.canceled) {
- schedulePoll(entry, pollInterval);
+
+ if (!entry.isConcurrentPollingAllowed()) {
+ synchronized (entry) {
+ if (!entry.canceled) {
+ schedulePoll(entry, pollInterval);
+ }
}
}
}
@@ -106,7 +109,11 @@
}
};
entry.timerTask = timerTask;
- timer.schedule(timerTask, pollInterval);
+ if (entry.isConcurrentPollingAllowed()) {
+ timer.scheduleAtFixedRate(timerTask, pollInterval, pollInterval);
+ } else {
+ timer.schedule(timerTask, pollInterval);
+ }
}
private void cancelPoll(T entry) {
Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/BaseConstants.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/BaseConstants.java?rev=759111&r1=759110&r2=759111&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/BaseConstants.java (original)
+++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/BaseConstants.java Fri Mar 27 11:48:46 2009
@@ -91,6 +91,10 @@
*/
public static final String TRANSPORT_POLL_INTERVAL = "transport.PollInterval";
/**
+ * Could polling take place in parallel, i.e. starting at fixed intervals?
+ */
+ public static final String TRANSPORT_POLL_IN_PARALLEL = "transport.ConcurrentPollingAllowed";
+ /**
* The default poll interval in milliseconds.
*/
public static final int DEFAULT_POLL_INTERVAL = 5 * 60 * 1000; // 5 mins by default
Modified: webservices/commons/trunk/modules/transport/modules/mail/pom.xml
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/mail/pom.xml?rev=759111&r1=759110&r2=759111&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/mail/pom.xml (original)
+++ webservices/commons/trunk/modules/transport/modules/mail/pom.xml Fri Mar 27 11:48:46 2009
@@ -106,8 +106,22 @@
</plugins>
</build>
+ <repositories>
+ <repository>
+ <id>java.net</id>
+ <name>Java.net Maven 2 Repository</name>
+ <url>http://download.java.net/maven/2</url>
+ </repository>
+ </repositories>
+
<dependencies>
<dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4.2</version>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-base</artifactId>
<version>${version}</version>
Modified: webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailConstants.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailConstants.java?rev=759111&r1=759110&r2=759111&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailConstants.java (original)
+++ webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailConstants.java Fri Mar 27 11:48:46 2009
@@ -39,6 +39,8 @@
public static final String TRANSPORT_MAIL_MOVE_AFTER_PROCESS = "transport.mail.MoveAfterProcess";
public static final String TRANSPORT_MAIL_MOVE_AFTER_FAILURE = "transport.mail.MoveAfterFailure";
+ public static final String TRANSPORT_MAIL_PROCESS_IN_PARALLEL = "transport.mail.ProcessInParallel";
+
public static final String MAX_RETRY_COUNT = "transport.mail.MaxRetryCount";
public static final String RECONNECT_TIMEOUT = "transport.mail.ReconnectTimeout";
Modified: webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java?rev=759111&r1=759110&r2=759111&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java (original)
+++ webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java Fri Mar 27 11:48:46 2009
@@ -22,6 +22,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
+import java.util.Collections;
import javax.mail.Session;
import javax.mail.internet.AddressException;
@@ -76,6 +77,10 @@
private String moveAfterProcess;
/** folder to move the email after failure */
private String moveAfterFailure;
+ /** Should mail be processed in parallel? e.g. with IMAP */
+ private boolean processingMailInParallel = false;
+ /** UIDs of messages currently being processed */
+ private List<String> uidList = Collections.synchronizedList(new ArrayList<String>());
private int maxRetryCount;
private long reconnectTimeout;
@@ -252,4 +257,24 @@
return true;
}
}
+
+ public boolean isProcessingMailInParallel() {
+ return processingMailInParallel;
+ }
+
+ public void setProcessingMailInParallel(boolean processingMailInParallel) {
+ this.processingMailInParallel = processingMailInParallel;
+ }
+
+ public synchronized void processingUID(String uid) {
+ this.uidList.add(uid);
+ }
+
+ public synchronized boolean isProcessingUID(String uid) {
+ return this.uidList.contains(uid);
+ }
+
+ public synchronized void removeUID(String uid) {
+ this.uidList.remove(uid);
+ }
}