diff --git a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd
index e85c59531b..97cb80aec5 100644
--- a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd
+++ b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/config/spring-integration-adapters-1.0.xsd
@@ -25,6 +25,8 @@
+
+
@@ -37,6 +39,7 @@
+
@@ -259,5 +262,13 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/AbstractFileMapper.java b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/AbstractFileMessageCreator.java
similarity index 51%
rename from org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/AbstractFileMapper.java
rename to org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/AbstractFileMessageCreator.java
index cec4654cd4..477ec22a10 100644
--- a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/AbstractFileMapper.java
+++ b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/AbstractFileMessageCreator.java
@@ -17,61 +17,24 @@
package org.springframework.integration.adapter.file;
import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.Message;
import org.springframework.integration.message.MessageCreator;
-import org.springframework.integration.message.MessageHandlingException;
-import org.springframework.integration.message.MessageMapper;
import org.springframework.integration.message.MessagingException;
-import org.springframework.util.Assert;
-import org.springframework.util.FileCopyUtils;
/**
- * Base class providing common behavior for file-based message mappers.
+ * Base class providing common behavior for file-based message creators.
*
* @author Mark Fisher
+ * @author Marius Bogoevici
*/
-public abstract class AbstractFileMapper implements MessageCreator, MessageMapper {
+public abstract class AbstractFileMessageCreator implements MessageCreator {
protected Log logger = LogFactory.getLog(this.getClass());
- private File parentDirectory;
-
- private File backupDirectory;
-
- private FileNameGenerator fileNameGenerator = new DefaultFileNameGenerator();
-
-
- public AbstractFileMapper(File parentDirectory) {
- this.parentDirectory = parentDirectory;
- }
-
- public void setBackupDirectory(File backupDirectory) {
- this.backupDirectory = backupDirectory;
- }
-
- public void setFileNameGenerator(FileNameGenerator fileNameGenerator) {
- Assert.notNull(fileNameGenerator, "'fileNameGenerator' must not be null");
- this.fileNameGenerator = fileNameGenerator;
- }
-
- public File mapMessage(Message message) {
- try {
- File file = new File(parentDirectory, this.fileNameGenerator.generateFileName(message));
- this.writeToFile(file, message.getPayload());
- return file;
- }
- catch (Exception e) {
- throw new MessageHandlingException(message, "failure occurred mapping file to message", e);
- }
- }
-
public Message createMessage(File file) {
try {
T payload = this.readMessagePayload(file);
@@ -80,12 +43,6 @@ public abstract class AbstractFileMapper implements MessageCreator,
}
Message message = new GenericMessage(payload);
message.getHeader().setProperty(FileNameGenerator.FILENAME_PROPERTY_KEY, file.getName());
- if (this.backupDirectory != null) {
- FileWriter writer = new FileWriter(this.backupDirectory.getAbsolutePath() +
- File.separator + file.getName());
- FileCopyUtils.copy(new FileReader(file), writer);
- }
- file.delete();
return message;
}
catch (Exception e) {
@@ -99,6 +56,4 @@ public abstract class AbstractFileMapper implements MessageCreator,
protected abstract T readMessagePayload(File file) throws Exception;
- protected abstract void writeToFile(File file, T payload) throws Exception;
-
}
diff --git a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/ByteArrayFileMapper.java b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/ByteArrayFileMessageCreator.java
similarity index 73%
rename from org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/ByteArrayFileMapper.java
rename to org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/ByteArrayFileMessageCreator.java
index a8aef0b75b..85593fafbf 100644
--- a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/ByteArrayFileMapper.java
+++ b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/ByteArrayFileMessageCreator.java
@@ -21,26 +21,17 @@ import java.io.File;
import org.springframework.util.FileCopyUtils;
/**
- * A {@link org.springframework.integration.message.MessageMapper}
+ * A {@link org.springframework.integration.message.MessageCreator}
* implementation for messages with a byte array payload.
*
* @author Mark Fisher
+ * @author Marius Bogoevici
*/
-public class ByteArrayFileMapper extends AbstractFileMapper {
-
- public ByteArrayFileMapper(File parentDirectory) {
- super(parentDirectory);
- }
-
+public class ByteArrayFileMessageCreator extends AbstractFileMessageCreator {
@Override
protected byte[] readMessagePayload(File file) throws Exception {
return FileCopyUtils.copyToByteArray(file);
}
- @Override
- protected void writeToFile(File file, byte[] payload) throws Exception {
- FileCopyUtils.copy(payload, file);
- }
-
}
diff --git a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/FileMessageCreator.java b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/FileMessageCreator.java
new file mode 100755
index 0000000000..5a31753952
--- /dev/null
+++ b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/FileMessageCreator.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2002-2007 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.integration.adapter.file;
+
+import java.io.File;
+
+import org.springframework.integration.message.Message;
+import org.springframework.integration.message.MessageCreator;
+
+/**
+ * A {@link MessageCreator} that creates {@link Message} instances with the
+ * absolute path to the {@link File} as payload.
+ *
+ * @author Marius Bogoevici
+ */
+public class FileMessageCreator extends AbstractFileMessageCreator {
+
+ @Override
+ protected File readMessagePayload(File file) throws Exception {
+ return file;
+ }
+
+}
diff --git a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/FileSource.java b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/FileSource.java
index c1dcf6a565..9414027eb5 100644
--- a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/FileSource.java
+++ b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/file/FileSource.java
@@ -18,46 +18,61 @@ package org.springframework.integration.adapter.file;
import java.io.File;
import java.io.FileFilter;
+import java.io.FileOutputStream;
import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.net.ftp.FTPFile;
import org.springframework.beans.factory.InitializingBean;
+import org.springframework.integration.adapter.ftp.DirectoryContentManager;
+import org.springframework.integration.adapter.ftp.FileInfo;
import org.springframework.integration.message.Message;
+import org.springframework.integration.message.MessageCreator;
+import org.springframework.integration.message.MessageDeliveryAware;
import org.springframework.integration.message.MessagingException;
import org.springframework.integration.message.Source;
import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
/**
* A messaging source that polls a directory to retrieve files.
*
* @author Mark Fisher
+ * @author Marius Bogoevici
*/
-public class FileSource implements Source