Refactored FtpSource and FileSource so that they inherit from the same base class AbstractDirectorySource. FtpSource namespace support is modified, so that it supports the type/message-creator pair, with the same semantic as FileSource. Implemented a distinct behaviour with respect to deleting files via MessageCreator: FtpSource will delete the local copies after creating the files, whereas FileSource will not.
This commit is contained in:
@@ -40,9 +40,11 @@ public class FileTargetParserTests {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("fileTargetParserTests.xml", this.getClass());
|
||||
FileTarget target = (FileTarget) context.getBean("target");
|
||||
DirectFieldAccessor targetFieldAccessor = new DirectFieldAccessor(target);
|
||||
SimpleFileMessageMapper messageMapper = (SimpleFileMessageMapper) targetFieldAccessor.getPropertyValue("messageMapper");
|
||||
SimpleFileMessageMapper messageMapper = (SimpleFileMessageMapper) targetFieldAccessor
|
||||
.getPropertyValue("messageMapper");
|
||||
DirectFieldAccessor mapperAccessor = new DirectFieldAccessor(messageMapper);
|
||||
assertEquals(System.getProperty("java.io.tmpdir"), ((File) mapperAccessor.getPropertyValue("parentDirectory")).getAbsolutePath());
|
||||
assertEquals(System.getProperty("java.io.tmpdir"), ((File) mapperAccessor.getPropertyValue("parentDirectory"))
|
||||
.getAbsolutePath());
|
||||
assertTrue(mapperAccessor.getPropertyValue("fileNameGenerator") instanceof DefaultFileNameGenerator);
|
||||
}
|
||||
|
||||
@@ -51,10 +53,12 @@ public class FileTargetParserTests {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("fileTargetParserTests.xml", this.getClass());
|
||||
FileTarget target = (FileTarget) context.getBean("targetWithCustomNameGenerator");
|
||||
DirectFieldAccessor targetFieldAccessor = new DirectFieldAccessor(target);
|
||||
SimpleFileMessageMapper messageMapper = (SimpleFileMessageMapper) targetFieldAccessor.getPropertyValue("messageMapper");
|
||||
SimpleFileMessageMapper messageMapper = (SimpleFileMessageMapper) targetFieldAccessor
|
||||
.getPropertyValue("messageMapper");
|
||||
DirectFieldAccessor mapperAccessor = new DirectFieldAccessor(messageMapper);
|
||||
assertEquals(System.getProperty("java.io.tmpdir"), ((File) mapperAccessor.getPropertyValue("parentDirectory")).getAbsolutePath());
|
||||
assertEquals(System.getProperty("java.io.tmpdir"), ((File) mapperAccessor.getPropertyValue("parentDirectory"))
|
||||
.getAbsolutePath());
|
||||
assertTrue(mapperAccessor.getPropertyValue("fileNameGenerator") instanceof CustomNameGenerator);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,9 +10,11 @@
|
||||
http://www.springframework.org/schema/integration
|
||||
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
|
||||
|
||||
<si:file-source id="fileSourceCustom" type="text" message-creator="customMessageCreator" directory="${java.io.tmpdir}"/>
|
||||
<si:file-source id="fileSourceCustom" type="text"
|
||||
message-creator="customMessageCreator" directory="${java.io.tmpdir}"/>
|
||||
|
||||
<bean id="customMessageCreator" class="org.springframework.integration.adapter.file.config.CustomMessageCreator"/>
|
||||
<bean id="customMessageCreator"
|
||||
class="org.springframework.integration.adapter.file.config.CustomMessageCreator"/>
|
||||
|
||||
<context:property-placeholder/>
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ import java.util.Map;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.integration.adapter.file.DirectoryContentManager;
|
||||
import org.springframework.integration.adapter.file.FileInfo;
|
||||
|
||||
/**
|
||||
* @author Marius Bogoevici
|
||||
|
||||
@@ -17,25 +17,33 @@
|
||||
package org.springframework.integration.adapter.ftp.config;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.factory.BeanDefinitionStoreException;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.integration.ConfigurationException;
|
||||
import org.springframework.integration.adapter.file.ByteArrayFileMessageCreator;
|
||||
import org.springframework.integration.adapter.file.FileMessageCreator;
|
||||
import org.springframework.integration.adapter.file.TextFileMessageCreator;
|
||||
import org.springframework.integration.adapter.file.config.CustomMessageCreator;
|
||||
import org.springframework.integration.adapter.ftp.FtpSource;
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
* @author Marius Bogoevici
|
||||
*/
|
||||
public class FtpSourceParserTests {
|
||||
|
||||
@Test
|
||||
public void testFtpSourceAdapterParser() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("ftpSourceParserTests.xml", this.getClass());
|
||||
FtpSource ftpSource = (FtpSource) context.getBean("ftpSource");
|
||||
FtpSource ftpSource = (FtpSource) context.getBean("ftpSourceDefault");
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(ftpSource);
|
||||
assertEquals("testHost", accessor.getPropertyValue("host"));
|
||||
assertEquals(2121, accessor.getPropertyValue("port"));
|
||||
@@ -43,6 +51,90 @@ public class FtpSourceParserTests {
|
||||
assertEquals("/remote", accessor.getPropertyValue("remoteWorkingDirectory"));
|
||||
assertEquals("testUser", accessor.getPropertyValue("username"));
|
||||
assertEquals("testPassword", accessor.getPropertyValue("password"));
|
||||
Object messageCreator = accessor.getPropertyValue("messageCreator");
|
||||
assertTrue(messageCreator instanceof FileMessageCreator);
|
||||
DirectFieldAccessor messageCreatorAccessor = new DirectFieldAccessor(messageCreator);
|
||||
assertEquals(messageCreatorAccessor.getPropertyValue("deleteFileAfterCreation"), false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFtpSourceTextType() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("ftpSourceParserTests.xml", this.getClass());
|
||||
FtpSource ftpSource = (FtpSource) context.getBean("ftpSourceText");
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(ftpSource);
|
||||
assertEquals("testHost", accessor.getPropertyValue("host"));
|
||||
assertEquals(2121, accessor.getPropertyValue("port"));
|
||||
assertEquals(new File("/local"), accessor.getPropertyValue("localWorkingDirectory"));
|
||||
assertEquals("/remote", accessor.getPropertyValue("remoteWorkingDirectory"));
|
||||
assertEquals("testUser", accessor.getPropertyValue("username"));
|
||||
assertEquals("testPassword", accessor.getPropertyValue("password"));
|
||||
Object messageCreator = accessor.getPropertyValue("messageCreator");
|
||||
assertTrue(messageCreator instanceof TextFileMessageCreator);
|
||||
DirectFieldAccessor messageCreatorAccessor = new DirectFieldAccessor(messageCreator);
|
||||
assertEquals(messageCreatorAccessor.getPropertyValue("deleteFileAfterCreation"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFtpSourceBinaryType() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("ftpSourceParserTests.xml", this.getClass());
|
||||
FtpSource ftpSource = (FtpSource) context.getBean("ftpSourceBinary");
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(ftpSource);
|
||||
assertEquals("testHost", accessor.getPropertyValue("host"));
|
||||
assertEquals(2121, accessor.getPropertyValue("port"));
|
||||
assertEquals(new File("/local"), accessor.getPropertyValue("localWorkingDirectory"));
|
||||
assertEquals("/remote", accessor.getPropertyValue("remoteWorkingDirectory"));
|
||||
assertEquals("testUser", accessor.getPropertyValue("username"));
|
||||
assertEquals("testPassword", accessor.getPropertyValue("password"));
|
||||
Object messageCreator = accessor.getPropertyValue("messageCreator");
|
||||
assertTrue(messageCreator instanceof ByteArrayFileMessageCreator);
|
||||
DirectFieldAccessor messageCreatorAccessor = new DirectFieldAccessor(messageCreator);
|
||||
assertEquals(messageCreatorAccessor.getPropertyValue("deleteFileAfterCreation"), true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFtpSourceFileType() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("ftpSourceParserTests.xml", this.getClass());
|
||||
FtpSource ftpSource = (FtpSource) context.getBean("ftpSourceFile");
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(ftpSource);
|
||||
assertEquals("testHost", accessor.getPropertyValue("host"));
|
||||
assertEquals(2121, accessor.getPropertyValue("port"));
|
||||
assertEquals(new File("/local"), accessor.getPropertyValue("localWorkingDirectory"));
|
||||
assertEquals("/remote", accessor.getPropertyValue("remoteWorkingDirectory"));
|
||||
assertEquals("testUser", accessor.getPropertyValue("username"));
|
||||
assertEquals("testPassword", accessor.getPropertyValue("password"));
|
||||
Object messageCreator = accessor.getPropertyValue("messageCreator");
|
||||
assertTrue(messageCreator instanceof FileMessageCreator);
|
||||
DirectFieldAccessor messageCreatorAccessor = new DirectFieldAccessor(messageCreator);
|
||||
assertEquals(messageCreatorAccessor.getPropertyValue("deleteFileAfterCreation"), false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFtpSourceCustomType() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("ftpSourceParserTests.xml", this.getClass());
|
||||
FtpSource ftpSource = (FtpSource) context.getBean("ftpSourceCustom");
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(ftpSource);
|
||||
assertEquals("testHost", accessor.getPropertyValue("host"));
|
||||
assertEquals(2121, accessor.getPropertyValue("port"));
|
||||
assertEquals(new File("/local"), accessor.getPropertyValue("localWorkingDirectory"));
|
||||
assertEquals("/remote", accessor.getPropertyValue("remoteWorkingDirectory"));
|
||||
assertEquals("testUser", accessor.getPropertyValue("username"));
|
||||
assertEquals("testPassword", accessor.getPropertyValue("password"));
|
||||
Object messageCreator = accessor.getPropertyValue("messageCreator");
|
||||
assertTrue(messageCreator instanceof CustomMessageCreator);
|
||||
// not testing for deleteFileAfterCreation - this is completely left up
|
||||
// to the implementation
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalidFtpSource() {
|
||||
try {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext("invalidFtpSourceTests.xml", this
|
||||
.getClass());
|
||||
fail();
|
||||
}
|
||||
catch (BeanDefinitionStoreException e) {
|
||||
assertTrue(e.getCause() instanceof ConfigurationException);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,12 +7,51 @@
|
||||
http://www.springframework.org/schema/integration
|
||||
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
|
||||
|
||||
<si:ftp-source id="ftpSource"
|
||||
<si:ftp-source id="ftpSourceDefault"
|
||||
host="testHost"
|
||||
port="2121"
|
||||
local-working-directory="/local"
|
||||
remote-working-directory="/remote"
|
||||
username="testUser"
|
||||
password="testPassword"/>
|
||||
|
||||
<si:ftp-source id="ftpSourceText"
|
||||
host="testHost"
|
||||
port="2121"
|
||||
local-working-directory="/local"
|
||||
remote-working-directory="/remote"
|
||||
username="testUser"
|
||||
password="testPassword"
|
||||
type="text"/>
|
||||
|
||||
<si:ftp-source id="ftpSourceBinary"
|
||||
host="testHost"
|
||||
port="2121"
|
||||
local-working-directory="/local"
|
||||
remote-working-directory="/remote"
|
||||
username="testUser"
|
||||
password="testPassword"
|
||||
type="binary"/>
|
||||
|
||||
<si:ftp-source id="ftpSourceFile"
|
||||
host="testHost"
|
||||
port="2121"
|
||||
local-working-directory="/local"
|
||||
remote-working-directory="/remote"
|
||||
username="testUser"
|
||||
password="testPassword"
|
||||
type="file"/>
|
||||
|
||||
<si:ftp-source id="ftpSourceCustom"
|
||||
host="testHost"
|
||||
port="2121"
|
||||
local-working-directory="/local"
|
||||
remote-working-directory="/remote"
|
||||
username="testUser"
|
||||
password="testPassword"
|
||||
message-creator="customMessageCreator"/>
|
||||
|
||||
<bean id="customMessageCreator"
|
||||
class="org.springframework.integration.adapter.file.config.CustomMessageCreator"/>
|
||||
|
||||
</beans>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:si="http://www.springframework.org/schema/integration"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
|
||||
http://www.springframework.org/schema/context
|
||||
http://www.springframework.org/schema/context/spring-context-2.5.xsd
|
||||
http://www.springframework.org/schema/integration
|
||||
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
|
||||
|
||||
<si:ftp-source id="ftpSourceCustom"
|
||||
host="testHost"
|
||||
port="2121"
|
||||
local-working-directory="/local"
|
||||
remote-working-directory="/remote"
|
||||
username="testUser"
|
||||
password="testPassword"
|
||||
message-creator="customMessageCreator"
|
||||
type="text"/>
|
||||
|
||||
<bean id="customMessageCreator"
|
||||
class="org.springframework.integration.adapter.file.config.CustomMessageCreator"/>
|
||||
|
||||
<context:property-placeholder/>
|
||||
|
||||
</beans>
|
||||
Reference in New Issue
Block a user