You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/02/01 17:40:32 UTC
svn commit: r1441518 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/builder/
camel-core/src/main/java/org/apache/camel/component/file/
camel-core/src/test/java/org/apache/camel/component/file/ ca...
Author: davsclaus
Date: Fri Feb 1 16:40:31 2013
New Revision: 1441518
URL: http://svn.apache.org/viewvc?rev=1441518&view=rev
Log:
CAMEL-6025: Use long for file last modified header. Allows to transfer over JMS etc.
Added:
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/FileRouteJmsKeepLastModifiedTest.java
- copied, changed from r1441428, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/FileRouteToJmsTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileKeepLastModifiedTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpKeepLastModifiedTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java?rev=1441518&r1=1441517&r2=1441518&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java Fri Feb 1 16:40:31 2013
@@ -120,6 +120,7 @@ public interface Exchange {
String FILE_PATH = "CamelFilePath";
String FILE_PARENT = "CamelFileParent";
String FILE_LAST_MODIFIED = "CamelFileLastModified";
+ String FILE_LENGTH = "CamelFileLength";
String FILTER_MATCHED = "CamelFilterMatched";
String FILE_LOCK_FILE_ACQUIRED = "CamelFileLockFileAcquired";
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=1441518&r1=1441517&r2=1441518&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Fri Feb 1 16:40:31 2013
@@ -1350,9 +1350,14 @@ public final class ExpressionBuilder {
throw new IllegalArgumentException("Cannot find java.util.Date object at command: " + command);
}
} else if ("file".equals(command)) {
- date = exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class);
- if (date == null) {
- throw new IllegalArgumentException("Cannot find " + Exchange.FILE_LAST_MODIFIED + " header at command: " + command);
+ Long num = exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Long.class);
+ if (num != null && num > 0) {
+ date = new Date(num.longValue());
+ } else {
+ date = exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class);
+ if (date == null) {
+ throw new IllegalArgumentException("Cannot find " + Exchange.FILE_LAST_MODIFIED + " header at command: " + command);
+ }
}
} else {
throw new IllegalArgumentException("Command not supported for dateExpression: " + command);
@@ -1587,7 +1592,7 @@ public final class ExpressionBuilder {
public static Expression fileSizeExpression() {
return new ExpressionAdapter() {
public Object evaluate(Exchange exchange) {
- return exchange.getIn().getHeader("CamelFileLength", Long.class);
+ return exchange.getIn().getHeader(Exchange.FILE_LENGTH, Long.class);
}
@Override
@@ -1600,7 +1605,7 @@ public final class ExpressionBuilder {
public static Expression fileLastModifiedExpression() {
return new ExpressionAdapter() {
public Object evaluate(Exchange exchange) {
- return exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class);
+ return exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Long.class);
}
@Override
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java?rev=1441518&r1=1441517&r2=1441518&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java Fri Feb 1 16:40:31 2013
@@ -144,10 +144,10 @@ public class GenericFile<T> implements W
message.setHeader(Exchange.FILE_PARENT, getParent());
if (getFileLength() >= 0) {
- message.setHeader("CamelFileLength", getFileLength());
+ message.setHeader(Exchange.FILE_LENGTH, getFileLength());
}
if (getLastModified() > 0) {
- message.setHeader(Exchange.FILE_LAST_MODIFIED, new Date(getLastModified()));
+ message.setHeader(Exchange.FILE_LAST_MODIFIED, getLastModified());
}
}
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileKeepLastModifiedTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileKeepLastModifiedTest.java?rev=1441518&r1=1441517&r2=1441518&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileKeepLastModifiedTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileKeepLastModifiedTest.java Fri Feb 1 16:40:31 2013
@@ -53,7 +53,7 @@ public class FileKeepLastModifiedTest ex
assertMockEndpointsSatisfied();
- long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class).getTime();
+ long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, long.class);
long t2 = new File("target/keep/out/hello.txt").lastModified();
assertEquals("Timestamp should have been kept", t1, t2);
@@ -76,7 +76,7 @@ public class FileKeepLastModifiedTest ex
assertMockEndpointsSatisfied();
- long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class).getTime();
+ long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, long.class);
long t2 = new File("target/keep/out/hello.txt").lastModified();
assertNotSame("Timestamp should NOT have been kept", t1, t2);
@@ -99,7 +99,7 @@ public class FileKeepLastModifiedTest ex
assertMockEndpointsSatisfied();
- long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class).getTime();
+ long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, long.class);
long t2 = new File("target/keep/out/hello.txt").lastModified();
assertNotSame("Timestamp should NOT have been kept", t1, t2);
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java?rev=1441518&r1=1441517&r2=1441518&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java Fri Feb 1 16:40:31 2013
@@ -83,9 +83,9 @@ public class FileLanguageTest extends La
assertExpression("${file:length}", file.length());
assertExpression("${file:size}", file.length());
- // modified is a Date object
- Date modified = SimpleLanguage.simple("${file:modified}").evaluate(exchange, Date.class);
- assertEquals(new Date(file.lastModified()), modified);
+ // modified is a long object
+ Long modified = SimpleLanguage.simple("${file:modified}").evaluate(exchange, Long.class);
+ assertEquals(file.lastModified(), modified.longValue());
}
public void testFileUsingAlternativeStartToken() throws Exception {
@@ -102,9 +102,9 @@ public class FileLanguageTest extends La
assertExpression("$simple{file:length}", file.length());
assertExpression("$simple{file:size}", file.length());
- // modified is a Date object
- Date modified = SimpleLanguage.simple("${file:modified}").evaluate(exchange, Date.class);
- assertEquals(new Date(file.lastModified()), modified);
+ // modified is a long object
+ long modified = SimpleLanguage.simple("${file:modified}").evaluate(exchange, long.class);
+ assertEquals(file.lastModified(), modified);
}
public void testDate() throws Exception {
Modified: camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpKeepLastModifiedTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpKeepLastModifiedTest.java?rev=1441518&r1=1441517&r2=1441518&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpKeepLastModifiedTest.java (original)
+++ camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpKeepLastModifiedTest.java Fri Feb 1 16:40:31 2013
@@ -59,7 +59,7 @@ public class FromFtpKeepLastModifiedTest
assertMockEndpointsSatisfied();
- long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class).getTime();
+ long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, long.class);
long t2 = new File("target/keep/out/hello.txt").lastModified();
assertEquals("Timestamp should have been kept", t1, t2);
@@ -83,7 +83,7 @@ public class FromFtpKeepLastModifiedTest
assertMockEndpointsSatisfied();
- long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class).getTime();
+ long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, long.class);
long t2 = new File("target/keep/out/hello.txt").lastModified();
assertNotSame("Timestamp should NOT have been kept", t1, t2);
@@ -107,7 +107,7 @@ public class FromFtpKeepLastModifiedTest
assertMockEndpointsSatisfied();
- long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class).getTime();
+ long t1 = mock.getReceivedExchanges().get(0).getIn().getHeader(Exchange.FILE_LAST_MODIFIED, long.class);
long t2 = new File("target/keep/out/hello.txt").lastModified();
assertNotSame("Timestamp should NOT have been kept", t1, t2);
Copied: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/FileRouteJmsKeepLastModifiedTest.java (from r1441428, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/FileRouteToJmsTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/FileRouteJmsKeepLastModifiedTest.java?p2=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/FileRouteJmsKeepLastModifiedTest.java&p1=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/FileRouteToJmsTest.java&r1=1441428&r2=1441518&rev=1441518&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/FileRouteToJmsTest.java (original)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/FileRouteJmsKeepLastModifiedTest.java Fri Feb 1 16:40:31 2013
@@ -16,12 +16,12 @@
*/
package org.apache.camel.component.jms;
+import java.io.File;
import javax.jms.ConnectionFactory;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
@@ -30,21 +30,22 @@ import static org.apache.camel.component
/**
* Unit test that we can produce JMS message from files
*/
-public class FileRouteToJmsTest extends CamelTestSupport {
+public class FileRouteJmsKeepLastModifiedTest extends CamelTestSupport {
protected String componentName = "activemq";
@Test
- public void testRouteToFile() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(1);
- mock.message(0).body().isInstanceOf(byte[].class);
- mock.message(0).body(String.class).isEqualTo("Hello World");
+ public void testKeepLastModified() throws Exception {
+ getMockEndpoint("mock:result").expectedMessageCount(1);
- deleteDirectory("target/routefromfile");
- template.sendBodyAndHeader("file://target/routefromfile", "Hello World", Exchange.FILE_NAME, "hello.txt");
+ template.sendBodyAndHeader("file://target/inbox", "Hello World", Exchange.FILE_NAME, "hello.txt");
assertMockEndpointsSatisfied();
+
+ File inbox = new File("trarget/inbox/hello.txt");
+ File outbox = new File("trarget/outbox/hello.txt");
+
+ assertEquals("Should keep last modified", inbox.lastModified(), outbox.lastModified());
}
protected CamelContext createCamelContext() throws Exception {
@@ -59,9 +60,13 @@ public class FileRouteToJmsTest extends
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() throws Exception {
- from("file://target/routefromfile").to("activemq:queue:hello");
+ from("file://target/inbox?noop=true").to("activemq:queue:hello");
- from("activemq:queue:hello").to("mock:result");
+ from("activemq:queue:hello")
+ // just a little delay so the write of the file happens later
+ .delayer(100)
+ .to("file://target/outbox?keepLastModified=true")
+ .to("mock:result");
}
};
}