Author: davsclaus
Date: Sun Jul 27 22:06:06 2008
New Revision: 680254
URL: http://svn.apache.org/viewvc?rev=680254&view=rev
Log:
Refactored camel-ftp so the producer and consumer share more code between the
FTP and SFTP parts in their common super class.
Modified:
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpProducer.java
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpProducer.java
Modified:
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java?rev=680254&r1=680253&r2=680254&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java
(original)
+++
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java
Sun Jul 27 22:06:06 2008
@@ -22,24 +22,14 @@
import org.apache.camel.Processor;
import org.apache.camel.component.file.FileComponent;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class FtpConsumer extends RemoteFileConsumer<RemoteFileExchange> {
- private static final transient Log LOG =
LogFactory.getLog(FtpConsumer.class);
private FtpEndpoint endpoint;
- private long lastPollTime;
private FTPClient client;
- private boolean recursive = true;
- private String regexPattern;
- private boolean setNames = true;
- private boolean exclusiveRead = true;
- private boolean deleteFile;
-
public FtpConsumer(FtpEndpoint endpoint, Processor processor, FTPClient
client) {
super(endpoint, processor);
this.endpoint = endpoint;
@@ -235,66 +225,9 @@
}
}
- private String remoteServer() {
- return endpoint.getConfiguration().remoteServerInformation();
- }
-
- protected boolean isMatched(FTPFile file) {
- boolean result = true;
- if (regexPattern != null && regexPattern.length() > 0) {
- result = file.getName().matches(regexPattern);
- }
- if (LOG.isTraceEnabled()) {
- LOG.trace("Matching file: " + file.getName() + " is " + result);
- }
- return result;
- }
-
- public boolean isRecursive() {
- return recursive;
+ protected String getFileName(Object file) {
+ FTPFile ftpFile = (FTPFile) file;
+ return ftpFile.getName();
}
- public void setRecursive(boolean recursive) {
- this.recursive = recursive;
- }
-
- public long getLastPollTime() {
- return lastPollTime;
- }
-
- public void setLastPollTime(long lastPollTime) {
- this.lastPollTime = lastPollTime;
- }
-
- public String getRegexPattern() {
- return regexPattern;
- }
-
- public void setRegexPattern(String regexPattern) {
- this.regexPattern = regexPattern;
- }
-
- public boolean isSetNames() {
- return setNames;
- }
-
- public void setSetNames(boolean setNames) {
- this.setNames = setNames;
- }
-
- public boolean isExclusiveRead() {
- return exclusiveRead;
- }
-
- public void setExclusiveRead(boolean exclusiveRead) {
- this.exclusiveRead = exclusiveRead;
- }
-
- public boolean isDeleteFile() {
- return deleteFile;
- }
-
- public void setDeleteFile(boolean deleteFile) {
- this.deleteFile = deleteFile;
- }
}
Modified:
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpProducer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpProducer.java?rev=680254&r1=680253&r2=680254&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpProducer.java
(original)
+++
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpProducer.java
Sun Jul 27 22:06:06 2008
@@ -21,12 +21,9 @@
import org.apache.camel.Exchange;
import org.apache.camel.RuntimeCamelException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.commons.net.ftp.FTPClient;
public class FtpProducer extends RemoteFileProducer<RemoteFileExchange> {
- private static final transient Log LOG =
LogFactory.getLog(FtpProducer.class);
private FtpEndpoint endpoint;
private FTPClient client;
@@ -104,29 +101,7 @@
}
}
- @Override
- protected void doStart() throws Exception {
- LOG.info("Starting");
- // do not connect when componet starts, just wait until we process as
we will
- // connect at that time if needed
- super.doStart();
- }
-
- @Override
- protected void doStop() throws Exception {
- LOG.info("Stopping");
- // disconnect when stopping
- try {
- disconnect();
- } catch (Exception e) {
- // ignore just log a warning
- LOG.warn("Exception occured during disconecting from " +
remoteServer() + ". "
- + e.getClass().getCanonicalName() + " message: " +
e.getMessage());
- }
- super.doStop();
- }
-
- protected static boolean buildDirectory(FTPClient ftpClient, String
dirName) throws IOException {
+ protected boolean buildDirectory(FTPClient ftpClient, String dirName)
throws IOException {
String originalDirectory = ftpClient.printWorkingDirectory();
boolean success = false;
@@ -138,7 +113,7 @@
LOG.debug("Trying to build remote directory: " + dirName);
}
success = ftpClient.makeDirectory(dirName);
- if (! success) {
+ if (!success) {
// we are here if the server side doesn't create
intermediate folders
// so create the folder one by one
buildDirectoryChunks(ftpClient, dirName);
@@ -152,7 +127,7 @@
return success;
}
- private static boolean buildDirectoryChunks(FTPClient ftpClient, String
dirName) throws IOException {
+ private boolean buildDirectoryChunks(FTPClient ftpClient, String dirName)
throws IOException {
final StringBuilder sb = new StringBuilder(dirName.length());
final String[] dirs = dirName.split("\\/");
@@ -170,8 +145,4 @@
return success;
}
- private String remoteServer() {
- return endpoint.getConfiguration().remoteServerInformation();
- }
-
}
Modified:
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java?rev=680254&r1=680253&r2=680254&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java
(original)
+++
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConsumer.java
Sun Jul 27 22:06:06 2008
@@ -20,9 +20,19 @@
import org.apache.camel.Processor;
import org.apache.camel.impl.ScheduledPollConsumer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
public abstract class RemoteFileConsumer<T extends RemoteFileExchange> extends
ScheduledPollConsumer<T> {
- RemoteFileEndpoint<T> endpoint;
+ protected final transient Log LOG = LogFactory.getLog(getClass());
+ protected RemoteFileEndpoint<T> endpoint;
+ protected long lastPollTime;
+
+ protected boolean recursive = true;
+ protected String regexPattern;
+ protected boolean setNames = true;
+ protected boolean exclusiveRead = true;
+ protected boolean deleteFile;
public RemoteFileConsumer(RemoteFileEndpoint<T> endpoint, Processor
processor) {
super(endpoint, processor);
@@ -32,4 +42,83 @@
public RemoteFileConsumer(RemoteFileEndpoint<T> endpoint, Processor
processor, ScheduledExecutorService executor) {
super(endpoint, processor, executor);
}
+
+ /**
+ * Gets the filename.
+ *
+ * @param file the file object for the given consumer implementation.
+ * @return the filename as String.
+ */
+ protected abstract String getFileName(Object file);
+
+ /**
+ * Is the given file matched to be consumed (will consider regexp if
provided as an option).
+ * <p/>
+ * Note: Returns true if no reg exp is used.
+ */
+ protected boolean isMatched(Object file) {
+ String fileName = getFileName(file);
+
+ boolean result = true;
+ if (regexPattern != null && regexPattern.length() > 0) {
+ result = fileName.matches(regexPattern);
+ }
+ if (LOG.isTraceEnabled()) {
+ LOG.trace("Matching file: " + fileName + " is " + result);
+ }
+ return result;
+ }
+
+ protected String remoteServer() {
+ return endpoint.getConfiguration().remoteServerInformation();
+ }
+
+ public boolean isRecursive() {
+ return recursive;
+ }
+
+ public void setRecursive(boolean recursive) {
+ this.recursive = recursive;
+ }
+
+ public long getLastPollTime() {
+ return lastPollTime;
+ }
+
+ public void setLastPollTime(long lastPollTime) {
+ this.lastPollTime = lastPollTime;
+ }
+
+ public String getRegexPattern() {
+ return regexPattern;
+ }
+
+ public void setRegexPattern(String regexPattern) {
+ this.regexPattern = regexPattern;
+ }
+
+ public boolean isSetNames() {
+ return setNames;
+ }
+
+ public void setSetNames(boolean setNames) {
+ this.setNames = setNames;
+ }
+
+ public boolean isExclusiveRead() {
+ return exclusiveRead;
+ }
+
+ public void setExclusiveRead(boolean exclusiveRead) {
+ this.exclusiveRead = exclusiveRead;
+ }
+
+ public boolean isDeleteFile() {
+ return deleteFile;
+ }
+
+ public void setDeleteFile(boolean deleteFile) {
+ this.deleteFile = deleteFile;
+ }
+
}
Modified:
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java?rev=680254&r1=680253&r2=680254&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java
(original)
+++
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java
Sun Jul 27 22:06:06 2008
@@ -19,11 +19,16 @@
import org.apache.camel.Message;
import org.apache.camel.component.file.FileComponent;
import org.apache.camel.impl.DefaultProducer;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
public abstract class RemoteFileProducer<T extends RemoteFileExchange> extends
DefaultProducer<T> {
+ protected final transient Log LOG = LogFactory.getLog(getClass());
+ protected RemoteFileEndpoint<T> endpoint;
protected RemoteFileProducer(RemoteFileEndpoint<T> endpoint) {
super(endpoint);
+ this.endpoint = endpoint;
}
protected String createFileName(Message message, RemoteFileConfiguration
fileConfig) {
@@ -44,6 +49,32 @@
return answer;
}
+ protected String remoteServer() {
+ return endpoint.getConfiguration().remoteServerInformation();
+ }
+
+ @Override
+ protected void doStart() throws Exception {
+ LOG.info("Starting");
+ // do not connect when componet starts, just wait until we process as
we will
+ // connect at that time if needed
+ super.doStart();
+ }
+
+ @Override
+ protected void doStop() throws Exception {
+ LOG.info("Stopping");
+ // disconnect when stopping
+ try {
+ disconnect();
+ } catch (Exception e) {
+ // ignore just log a warning
+ LOG.warn("Exception occured during disconecting from " +
remoteServer() + ". "
+ + e.getClass().getCanonicalName() + " message: " +
e.getMessage());
+ }
+ super.doStop();
+ }
+
protected abstract void connectIfNecessary() throws Exception;
protected abstract void disconnect() throws Exception;
Modified:
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java?rev=680254&r1=680253&r2=680254&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java
(original)
+++
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java
Sun Jul 27 22:06:06 2008
@@ -32,17 +32,10 @@
import org.apache.commons.logging.LogFactory;
public class SftpConsumer extends RemoteFileConsumer<RemoteFileExchange> {
- private static final transient Log LOG =
LogFactory.getLog(SftpConsumer.class);
private final SftpEndpoint endpoint;
- private boolean recursive = true;
- private String regexPattern = "";
- private long lastPollTime;
private ChannelSftp channel;
private Session session;
- private boolean setNames;
- private boolean exclusiveRead = true;
- private boolean deleteFile;
public SftpConsumer(SftpEndpoint endpoint, Processor processor, Session
session) {
super(endpoint, processor);
@@ -254,66 +247,9 @@
}
}
- private String remoteServer() {
- return endpoint.getConfiguration().remoteServerInformation();
+ protected String getFileName(Object file) {
+ ChannelSftp.LsEntry sftpFile = (ChannelSftp.LsEntry) file;
+ return sftpFile.getFilename();
}
- protected boolean isMatched(ChannelSftp.LsEntry sftpFile) {
- boolean result = true;
- if (regexPattern != null && regexPattern.length() > 0) {
- result = sftpFile.getFilename().matches(regexPattern);
- }
- if (LOG.isTraceEnabled()) {
- LOG.trace("Matching file: " + sftpFile.getFilename() + " is " +
result);
- }
- return result;
- }
-
- public boolean isRecursive() {
- return recursive;
- }
-
- public void setRecursive(boolean recursive) {
- this.recursive = recursive;
- }
-
- public long getLastPollTime() {
- return lastPollTime;
- }
-
- public void setLastPollTime(long lastPollTime) {
- this.lastPollTime = lastPollTime;
- }
-
- public String getRegexPattern() {
- return regexPattern;
- }
-
- public void setRegexPattern(String regexPattern) {
- this.regexPattern = regexPattern;
- }
-
- public boolean isSetNames() {
- return setNames;
- }
-
- public void setSetNames(boolean setNames) {
- this.setNames = setNames;
- }
-
- public boolean isExclusiveRead() {
- return exclusiveRead;
- }
-
- public void setExclusiveRead(boolean exclusiveRead) {
- this.exclusiveRead = exclusiveRead;
- }
-
- public boolean isDeleteFile() {
- return deleteFile;
- }
-
- public void setDeleteFile(boolean deleteFile) {
- this.deleteFile = deleteFile;
- }
}
Modified:
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpProducer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpProducer.java?rev=680254&r1=680253&r2=680254&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpProducer.java
(original)
+++
activemq/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpProducer.java
Sun Jul 27 22:06:06 2008
@@ -25,12 +25,8 @@
import com.jcraft.jsch.SftpException;
import org.apache.camel.Exchange;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
public class SftpProducer extends RemoteFileProducer<RemoteFileExchange> {
- private static final transient Log LOG =
LogFactory.getLog(SftpProducer.class);
-
private SftpEndpoint endpoint;
private ChannelSftp channel;
private Session session;
@@ -116,29 +112,7 @@
}
}
- @Override
- protected void doStart() throws Exception {
- LOG.info("Starting");
- // do not connect when componet starts, just wait until we process as
we will
- // connect at that time if needed
- super.doStart();
- }
-
- @Override
- protected void doStop() throws Exception {
- LOG.info("Stopping");
- // disconnect when stopping
- try {
- disconnect();
- } catch (Exception e) {
- // ignore just log a warning
- LOG.warn("Exception occured during disconecting from " +
remoteServer() + ". "
- + e.getClass().getCanonicalName() + " message: " +
e.getMessage());
- }
- super.doStop();
- }
-
- protected static boolean buildDirectory(ChannelSftp sftpClient, String
dirName)
+ protected boolean buildDirectory(ChannelSftp sftpClient, String dirName)
throws IOException, SftpException {
String originalDirectory = sftpClient.pwd();
@@ -174,7 +148,7 @@
return success;
}
- private static boolean buildDirectoryChunks(ChannelSftp sftpClient, String
dirName)
+ private boolean buildDirectoryChunks(ChannelSftp sftpClient, String
dirName)
throws IOException, SftpException {
final StringBuilder sb = new StringBuilder(dirName.length());
final String[] dirs = dirName.split("\\/");
@@ -198,8 +172,4 @@
return success;
}
- private String remoteServer() {
- return endpoint.getConfiguration().remoteServerInformation();
- }
-
}