You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2008/08/01 01:19:42 UTC
svn commit: r681542 -
/servicemix/components/bindings/servicemix-ftp/trunk/src/main/java/org/apache/servicemix/ftp/FtpPollerEndpoint.java
Author: gnodet
Date: Thu Jul 31 16:19:42 2008
New Revision: 681542
URL: http://svn.apache.org/viewvc?rev=681542&view=rev
Log:
SM-1491: Allow the ftp poller to be stateless and not maintain a map of all pending exchanges
Modified:
servicemix/components/bindings/servicemix-ftp/trunk/src/main/java/org/apache/servicemix/ftp/FtpPollerEndpoint.java
Modified: servicemix/components/bindings/servicemix-ftp/trunk/src/main/java/org/apache/servicemix/ftp/FtpPollerEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-ftp/trunk/src/main/java/org/apache/servicemix/ftp/FtpPollerEndpoint.java?rev=681542&r1=681541&r2=681542&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-ftp/trunk/src/main/java/org/apache/servicemix/ftp/FtpPollerEndpoint.java (original)
+++ servicemix/components/bindings/servicemix-ftp/trunk/src/main/java/org/apache/servicemix/ftp/FtpPollerEndpoint.java Thu Jul 31 16:19:42 2008
@@ -65,6 +65,7 @@
private ConcurrentMap<String, FtpData> openExchanges = new ConcurrentHashMap<String, FtpData>();
private QName targetOperation;
private URI uri;
+ private boolean stateless = true;
protected class FtpData {
final String file;
@@ -209,14 +210,26 @@
this.marshaler = marshaler;
}
- public QName getTargetOperation() { return targetOperation; }
+ public QName getTargetOperation() {
+ return targetOperation;
+ }
- public void setTargetOperation(QName targetOperation) { this.targetOperation = targetOperation; }
+ public void setTargetOperation(QName targetOperation) {
+ this.targetOperation = targetOperation;
+ }
public void setChangeWorkingDirectory(boolean changeWorkingDirectory) {
this.changeWorkingDirectory = changeWorkingDirectory;
}
+ public boolean isStateless() {
+ return stateless;
+ }
+
+ public void setStateless(boolean stateless) {
+ this.stateless = stateless;
+ }
+
// Implementation methods
//-------------------------------------------------------------------------
@@ -316,7 +329,11 @@
}
marshaler.readMessage(exchange, message, in, file);
- this.openExchanges.put(exchange.getExchangeId(), new FtpData(file, ftp, in));
+ if (stateless) {
+ exchange.setProperty(FtpData.class.getName(), new FtpData(file, ftp, in));
+ } else {
+ this.openExchanges.put(exchange.getExchangeId(), new FtpData(file, ftp, in));
+ }
send(exchange);
}
@@ -325,9 +342,14 @@
}
public void process(MessageExchange exchange) throws Exception {
+ FtpData data;
+ if (stateless) {
+ data = (FtpData) exchange.getProperty(FtpData.class.getName());
+ } else {
+ data = this.openExchanges.remove(exchange.getExchangeId());
+ }
// check for done or error
- if (this.openExchanges.containsKey(exchange.getExchangeId())) {
- FtpData data = this.openExchanges.get(exchange.getExchangeId());
+ if (data != null) {
logger.debug("Releasing " + data.file);
try {
// Close ftp related stuff
@@ -348,8 +370,6 @@
throw e;
}
} finally {
- // remove the open exchange
- openExchanges.remove(exchange.getExchangeId());
// unlock the file
unlockAsyncFile(data.file);
// release ftp client