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 2015/03/14 08:16:03 UTC
[8/8] camel git commit: CAMEL-8484: File language - Should support
file extensions with multiple dots such as tar.gz
CAMEL-8484: File language - Should support file extensions with multiple dots such as tar.gz
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/cfe8fb54
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/cfe8fb54
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/cfe8fb54
Branch: refs/heads/camel-2.15.x
Commit: cfe8fb54998d5be08e74c298f454e2e75f72deac
Parents: 20ae653
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Mar 14 07:41:16 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Mar 14 08:17:30 2015 +0100
----------------------------------------------------------------------
.../apache/camel/builder/ExpressionBuilder.java | 6 +-----
.../java/org/apache/camel/util/FileUtil.java | 19 ++++++++++++++++++-
.../apache/camel/language/FileLanguageTest.java | 16 ++++++++++++++++
.../java/org/apache/camel/util/FileUtilTest.java | 9 +++++++++
4 files changed, 44 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/cfe8fb54/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
index a5539e2..a31e895 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
@@ -1724,11 +1724,7 @@ public final class ExpressionBuilder {
return new ExpressionAdapter() {
public Object evaluate(Exchange exchange) {
String name = exchange.getIn().getHeader(Exchange.FILE_NAME, String.class);
- if (name != null) {
- return name.substring(name.lastIndexOf('.') + 1);
- } else {
- return null;
- }
+ return FileUtil.onlyExt(name);
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/cfe8fb54/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/util/FileUtil.java b/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
index e59b575..d3db672 100644
--- a/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
+++ b/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
@@ -194,13 +194,30 @@ public final class FileUtil {
if (name == null) {
return null;
}
- int pos = name.lastIndexOf('.');
+ name = stripPath(name);
+
+ // extension is the first dot, as a file may have double extension such as .tar.gz
+ int pos = name.indexOf('.');
if (pos != -1) {
return name.substring(0, pos);
}
return name;
}
+ public static String onlyExt(String name) {
+ if (name == null) {
+ return null;
+ }
+ name = stripPath(name);
+
+ // extension is the first dot, as a file may have double extension such as .tar.gz
+ int pos = name.indexOf('.');
+ if (pos != -1) {
+ return name.substring(pos + 1);
+ }
+ return null;
+ }
+
/**
* Returns only the leading path (returns <tt>null</tt> if no path)
*/
http://git-wip-us.apache.org/repos/asf/camel/blob/cfe8fb54/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java b/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
index 3208835..407b737 100644
--- a/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
+++ b/camel-core/src/test/java/org/apache/camel/language/FileLanguageTest.java
@@ -162,6 +162,22 @@ public class FileLanguageTest extends LanguageTestSupport {
assertExpression("target\\newdir\\onwindows\\${file:name}", "target\\newdir\\onwindows\\hello.txt");
}
+ public void testFileNameDoubleExtension() throws Exception {
+ file = new File("target/filelanguage/test/bigfile.tar.gz");
+
+ String uri = "file://target/filelanguage?fileExist=Override";
+ GenericFile<File> gf = FileConsumer.asGenericFile("target/filelanguage", file, null);
+
+ FileEndpoint endpoint = getMandatoryEndpoint(uri, FileEndpoint.class);
+
+ Exchange answer = endpoint.createExchange(gf);
+ endpoint.configureMessage(gf, answer.getIn());
+
+ assertEquals("bigfile.tar.gz", file.getName());
+ assertExpression(answer, "${file:onlyname}", "bigfile.tar.gz");
+ assertExpression(answer, "${file:ext}", "tar.gz");
+ }
+
public Exchange createExchange() {
// create the file
String uri = "file://target/filelanguage?fileExist=Override";
http://git-wip-us.apache.org/repos/asf/camel/blob/cfe8fb54/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java b/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java
index 1f84aad..d386bbc 100644
--- a/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java
+++ b/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java
@@ -110,6 +110,15 @@ public class FileUtilTest extends TestCase {
assertEquals("/foo/bar", FileUtil.stripExt("/foo/bar.xml"));
}
+ public void testOnlyExt() {
+ assertEquals(null, FileUtil.onlyExt(null));
+ assertEquals(null, FileUtil.onlyExt("foo"));
+ assertEquals("xml", FileUtil.onlyExt("foo.xml"));
+ assertEquals("xml", FileUtil.onlyExt("/foo/bar.xml"));
+ assertEquals("tar.gz", FileUtil.onlyExt("/foo/bigfile.tar.gz"));
+ assertEquals("tar.gz", FileUtil.onlyExt("/foo.bar/bigfile.tar.gz"));
+ }
+
public void testOnlyPath() {
assertEquals(null, FileUtil.onlyPath(null));
assertEquals(null, FileUtil.onlyPath("foo"));