Author: davsclaus
Date: Fri Oct 30 09:48:48 2009
New Revision: 831242
URL: http://svn.apache.org/viewvc?rev=831242&view=rev
Log:
CAMEL-2121: Added tempFileName as option to file component for fine grained
control when writing using a temporary filename as opposed to using tempPrefix
option.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FileExpressionBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProduceTempPrefixTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FileExpressionBuilder.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FileExpressionBuilder.java?rev=831242&r1=831241&r2=831242&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FileExpressionBuilder.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/FileExpressionBuilder.java
Fri Oct 30 09:48:48 2009
@@ -24,6 +24,7 @@
import org.apache.camel.Expression;
import org.apache.camel.impl.ExpressionAdapter;
import org.apache.camel.spi.Language;
+import org.apache.camel.util.FileUtil;
/**
* A helper class for working with <a
href="http://camel.apache.org/expression.html">expressions</a> based
@@ -55,7 +56,12 @@
public static Expression fileOnlyNameExpression() {
return new ExpressionAdapter() {
public Object evaluate(Exchange exchange) {
- return exchange.getIn().getHeader(Exchange.FILE_NAME_ONLY,
String.class);
+ String answer =
exchange.getIn().getHeader(Exchange.FILE_NAME_ONLY, String.class);
+ if (answer == null) {
+ answer = exchange.getIn().getHeader(Exchange.FILE_NAME,
String.class);
+ answer = FileUtil.stripPath(answer);
+ }
+ return answer;
}
@Override
@@ -69,17 +75,7 @@
return new ExpressionAdapter() {
public Object evaluate(Exchange exchange) {
String name = exchange.getIn().getHeader(Exchange.FILE_NAME,
String.class);
- if (name != null) {
- int pos = name.lastIndexOf('.');
- if (pos != -1) {
- return name.substring(0, pos);
- } else {
- // name does not have extension
- return name;
- }
- } else {
- return null;
- }
+ return FileUtil.stripExt(name);
}
@Override
@@ -92,18 +88,8 @@
public static Expression fileOnlyNameNoExtensionExpression() {
return new ExpressionAdapter() {
public Object evaluate(Exchange exchange) {
- String name =
exchange.getIn().getHeader(Exchange.FILE_NAME_ONLY, String.class);
- if (name != null) {
- int pos = name.lastIndexOf('.');
- if (pos != -1) {
- return name.substring(0, pos);
- } else {
- // name does not have extension
- return name;
- }
- } else {
- return null;
- }
+ String name = fileOnlyNameExpression().evaluate(exchange,
String.class);
+ return FileUtil.stripExt(name);
}
@Override
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java?rev=831242&r1=831241&r2=831242&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
Fri Oct 30 09:48:48 2009
@@ -329,7 +329,8 @@
*/
public void setTempPrefix(String tempPrefix) {
this.tempPrefix = tempPrefix;
- setTempFileName(tempPrefix + "${file:name}");
+ // use only name as we set a prefix in from on the name
+ setTempFileName(tempPrefix + "${file:onlyname}");
}
public Expression getTempFileName() {
Modified:
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProduceTempPrefixTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProduceTempPrefixTest.java?rev=831242&r1=831241&r2=831242&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProduceTempPrefixTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProduceTempPrefixTest.java
Fri Oct 30 09:48:48 2009
@@ -40,6 +40,16 @@
assertDirectoryEquals("target/tempandrename/inprogress.claus.txt",
tempFileName);
}
+ public void testCreateTempFileNameUsingComplexName() throws Exception {
+ Endpoint endpoint = context.getEndpoint(fileUrl);
+ GenericFileProducer producer = (GenericFileProducer)
endpoint.createProducer();
+ Exchange exchange = endpoint.createExchange();
+ exchange.getIn().setHeader(Exchange.FILE_NAME, "foo/claus.txt");
+
+ String tempFileName = producer.createTempFileName(exchange,
"target/tempandrename/foo/claus.txt");
+ assertDirectoryEquals("target/tempandrename/foo/inprogress.claus.txt",
tempFileName);
+ }
+
public void testNoPathCreateTempFileName() throws Exception {
Endpoint endpoint = context.getEndpoint(fileUrl);
GenericFileProducer producer = (GenericFileProducer)
endpoint.createProducer();