You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Andrzej Gdula (JIRA)" <ji...@apache.org> on 2013/11/15 15:33:20 UTC
[jira] [Created] (CAMEL-6968) from(GenericFileConsumer with
recursion).to(GenericFileProduced with temp file) = unwanted directories in
output directory strucure
Andrzej Gdula created CAMEL-6968:
------------------------------------
Summary: from(GenericFileConsumer with recursion).to(GenericFileProduced with temp file) = unwanted directories in output directory strucure
Key: CAMEL-6968
URL: https://issues.apache.org/jira/browse/CAMEL-6968
Project: Camel
Issue Type: Bug
Components: camel-core
Affects Versions: 2.12.1
Environment: windows 7
Reporter: Andrzej Gdula
Copying files from one directory to another with recursive=true option and tempFileName=${file:name}.tmp option results in creation of unwanted directory structure.
The problem is in part of code that evaluates temp file name in {code} org.apache.camel.component.file.GenericFileProducer#createTempFileName {code}
The code below is a test that fails but shouldn't.
{code}
import org.apache.camel.EndpointInject;
import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.spring.javaconfig.SingleRouteCamelConfiguration;
import org.apache.camel.test.junit4.CamelSpringJUnit4ClassRunner;
import org.apache.camel.test.spring.CamelSpringDelegatingTestContextLoader;
import org.apache.camel.test.spring.MockEndpoints;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import java.io.File;
import java.util.Date;
/**
* @author: Andrzej Gdula
* @created: 11/15/2013 15:08
* @version: 1.0
*/
@RunWith(CamelSpringJUnit4ClassRunner.class)
@ContextConfiguration(
classes = {CamelSpringDelegatingTestContextLoaderTest.TestConfig.class},
// Since Camel 2.11.0
loader = CamelSpringDelegatingTestContextLoader.class
)
@MockEndpoints
public class CamelSpringDelegatingTestContextLoaderTest {
@EndpointInject(uri = "mock:direct:testSize")
protected MockEndpoint endEndpoint;
@EndpointInject(uri = "mock:direct:error")
protected MockEndpoint errorEndpoint;
@Produce(uri = "direct:test")
protected ProducerTemplate testProducer;
static final int FILESINIMPORT = 5;
@Configuration
public static class TestConfig extends SingleRouteCamelConfiguration {
@Bean
@Override
public RouteBuilder route() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file:./TempData/in/?recursive=true")
.to("mock:direct:testSize")
.to("file:./TempData/out/?tempFileName=${file:name}.tmp");
}
};
}
}
@Test
public void testRoute() throws InterruptedException {
// Given
endEndpoint.expectedMessageCount(FILESINIMPORT*3);
// Then
endEndpoint.assertIsSatisfied();
org.junit.Assert.assertFalse(new File("./TempData/out/DC01/ARCHIVE/DC01/ARCHIVE").exists());
}
public static final String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
@BeforeClass
static public void setup() throws Exception {
int fileCounter = 0;
String[] importDirs = {"DC01", "DC02", "DC03"};
Date date = DateUtils.parseDate("2012-01-01 12:30", YYYY_MM_DD_HH_MM);
Date[] dates = new Date[FILESINIMPORT * importDirs.length];
for (int i = 0; i < FILESINIMPORT * importDirs.length; i++) {
dates[i] = DateUtils.addMinutes(date, i);
}
int dateCounter = 0;
for (int i = 0; i < FILESINIMPORT; i++) {
for (String dc : importDirs) {
File archiveDir = new File("./TempData/in/" + dc + "/ARCHIVE");
Date fileDate = dates[dateCounter++];
archiveDir.mkdirs();
File mrdfArch = new File(archiveDir.getPath() + "/" + String.format("%010d_%03d", ++fileCounter, i).replace("_", "."));
FileUtils.write(mrdfArch, DateFormatUtils.format(fileDate, TestUtilBean.YYYY_MM_DD_HH_MM) + " => " + mrdfArch.getAbsolutePath());
mrdfArch.setLastModified(fileDate.getTime());
}
}
}
}
{code}
--
This message was sent by Atlassian JIRA
(v6.1#6144)