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 2009/03/03 10:37:09 UTC

svn commit: r749569 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/file/ test/java/org/apache/camel/component/file/

Author: davsclaus
Date: Tue Mar  3 09:37:08 2009
New Revision: 749569

URL: http://svn.apache.org/viewvc?rev=749569&view=rev
Log:
Fix to GenericFile to handle changing name from absolute to relative.

Added:
    camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithAbsoluteMoveTest.java
      - copied, changed from r749565, camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithRelativeMoveTest.java   (with props)
Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFile.java

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=749569&r1=749568&r2=749569&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 Tue Mar  3 09:37:08 2009
@@ -99,6 +99,7 @@
             setAbsoluteFileName(newName);
             // no relative filename for absolute files
             setRelativeFileName(null);
+            setCanonicalFileName(null);
             String fileName = newName.substring(newName.lastIndexOf(getFileSeparator()) + 1);
             setFileName(fileName);
             return;
@@ -107,6 +108,7 @@
         // the rest is complex relative path computation
         setAbsolute(false);
         setAbsoluteFileName(getParent() + getFileSeparator() + newName);
+        setCanonicalFileName(null);
 
         // relative name is a bit more complex to set as newName itself can contain
         // folders we need to consider as well
@@ -116,7 +118,7 @@
             newName = newName.substring(newName.lastIndexOf(getFileSeparator()) + 1);
         }
 
-        if (relativeFileName.indexOf(getFileSeparator()) != -1) {
+        if (relativeFileName != null && relativeFileName.indexOf(getFileSeparator()) != -1) {
             String relative = relativeFileName.substring(0, relativeFileName.lastIndexOf(File.separator));
             if (baseNewName != null) {
                 setRelativeFileName(relative + getFileSeparator() + baseNewName + getFileSeparator() + newName);

Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithAbsoluteMoveTest.java (from r749565, camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithAbsoluteMoveTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithAbsoluteMoveTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathTest.java&r1=749565&r2=749569&rev=749569&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithAbsoluteMoveTest.java Tue Mar  3 09:37:08 2009
@@ -26,7 +26,7 @@
 /**
  * Unit test for consuming from an absolute path
  */
-public class FileConsumerAbsolutePathTest extends ContextTestSupport {
+public class FileConsumerAbsolutePathWithAbsoluteMoveTest extends ContextTestSupport {
 
     private String base;
 
@@ -41,6 +41,7 @@
     public void testConsumeFromAbsolutePath() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:report");
         mock.expectedBodiesReceived("Hello Paris");
+        mock.expectedFileExists(base + "/done/paris.txt");
 
         template.sendBodyAndHeader("file:target/reports", "Hello Paris", Exchange.FILE_NAME, "paris.txt");
 
@@ -50,7 +51,7 @@
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                from("file://" + base + "?delete=true").to("mock:report");
+                from("file://" + base + "?moveExpression=" + base + "/done/${file:name}").to("mock:report");
             }
         };
     }

Added: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithRelativeMoveTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithRelativeMoveTest.java?rev=749569&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithRelativeMoveTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithRelativeMoveTest.java Tue Mar  3 09:37:08 2009
@@ -0,0 +1,58 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.file;
+
+import java.io.File;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * Unit test for consuming from an absolute path
+ */
+public class FileConsumerAbsolutePathWithRelativeMoveTest extends ContextTestSupport {
+
+    private String base;
+
+    @Override
+    protected void setUp() throws Exception {
+        deleteDirectory("target/reports");
+        deleteDirectory("target/done");
+        // use current dir as base as aboslute path
+        base = new File("").getAbsolutePath() + "/target/reports";
+        super.setUp();
+    }
+
+    public void testConsumeFromAbsolutePath() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:report");
+        mock.expectedBodiesReceived("Hello Paris");
+        mock.expectedFileExists(base + "/../done/paris.txt");
+
+        template.sendBodyAndHeader("file:target/reports", "Hello Paris", Exchange.FILE_NAME, "paris.txt");
+        mock.assertIsSatisfied();
+    }
+
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() throws Exception {
+                from("file://" + base + "?moveExpression=../done/${file:name}").to("mock:report");
+            }
+        };
+    }
+}
\ No newline at end of file

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithRelativeMoveTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerAbsolutePathWithRelativeMoveTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date