Author: hadrian
Date: Sun Jun 28 03:20:58 2009
New Revision: 789039

URL: http://svn.apache.org/viewvc?rev=789039&view=rev
Log:
CAMEL-1078.  Reducing entropy around GenericFileExchange.

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExchange.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerExpressionTest.java
    
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java
    
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerWithNoFileOptionTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java?rev=789039&r1=789038&r2=789039&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileComponent.java
 Sun Jun 28 03:20:58 2009
@@ -25,6 +25,11 @@
 public class FileComponent extends GenericFileComponent<File> {
 
     /**
+     * GenericFile property on Camel Exchanges.
+     */
+    public static final String FILE_EXCHANGE_FILE = "CamelFileExchangeFile";
+    
+    /**
      * Default camel lock filename postfix
      */
     public static final String DEFAULT_LOCK_FILE_POSTFIX = ".camelLock";

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExchange.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExchange.java?rev=789039&r1=789038&r2=789039&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExchange.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileExchange.java
 Sun Jun 28 03:20:58 2009
@@ -16,21 +16,16 @@
  */
 package org.apache.camel.component.file;
 
-import java.io.File;
 import java.io.IOException;
-import java.util.Date;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
-import org.apache.camel.Message;
 import org.apache.camel.PollingConsumerAware;
 import org.apache.camel.RuntimeExchangeException;
 import org.apache.camel.impl.DefaultExchange;
 
 public class GenericFileExchange<T> extends DefaultExchange implements 
PollingConsumerAware {
 
-    private GenericFile<T> file;
-
     public GenericFileExchange(Endpoint fromEndpoint) {
         super(fromEndpoint);
     }
@@ -40,33 +35,34 @@
         setGenericFile(file);
     }
 
-    protected void populateHeaders(GenericFile<T> file) {
-        Message message = getIn();
-        if (file != null && message instanceof GenericFileMessage) {
-            file.populateHeaders((GenericFileMessage<T>)message);
-        }
-    }
-
     public GenericFile<T> getGenericFile() {
-        return file;
+        return (GenericFile<T>) getProperty(FileComponent.FILE_EXCHANGE_FILE);
     }
 
     public void setGenericFile(GenericFile<T> file) {
-        this.file = file;
-        setIn(new GenericFileMessage<T>(file));
-        populateHeaders(file);
+        setProperty(FileComponent.FILE_EXCHANGE_FILE, file);
+        GenericFileMessage<T> in = new GenericFileMessage<T>(file);
+        setIn(in);
+        if (file != null) {
+            file.populateHeaders(in);
+        }
     }
 
     public Exchange newInstance() {
-        return new GenericFileExchange<T>(this, file);
+        return new GenericFileExchange<T>(this, getGenericFile());
     }
 
     public void exchangePolled(Exchange exchange) {
-        try {
-            // load content into memory
-            file.getBinding().loadContent(exchange, file);
-        } catch (IOException e) {
-            throw new RuntimeExchangeException("Cannot load content of file: " 
+ file.getAbsoluteFilePath(), exchange, e);
+        GenericFile<T> file = getGenericFile();
+        if (file != null)
+        {
+            try {
+                // load content into memory
+                file.getBinding().loadContent(exchange, file);
+            } catch (IOException e) {
+                throw new RuntimeExchangeException("Cannot load content of 
file: " 
+                    + file.getAbsoluteFilePath(), exchange, e);
+            }
         }
     }
 }

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerExpressionTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerExpressionTest.java?rev=789039&r1=789038&r2=789039&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerExpressionTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/FileProducerExpressionTest.java
 Sun Jun 28 03:20:58 2009
@@ -109,5 +109,4 @@
             return "123";
         }
     }
-
 }

Modified: 
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java?rev=789039&r1=789038&r2=789039&view=diff
==============================================================================
--- 
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java
 (original)
+++ 
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java
 Sun Jun 28 03:20:58 2009
@@ -16,8 +16,9 @@
  */
 package org.apache.camel.component.file.remote;
 
+import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.file.GenericFileExchange;
+import org.apache.camel.component.file.FileComponent;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.Before;
 import org.junit.Test;
@@ -52,20 +53,23 @@
 
         assertMockEndpointsSatisfied();
 
-        GenericFileExchange exchange = (GenericFileExchange) 
mock.getExchanges().get(0);
-        RemoteFile file = (RemoteFile) exchange.getGenericFile();
+        Exchange exchange = mock.getExchanges().get(0);
+        RemoteFile file = (RemoteFile) 
exchange.getProperty(FileComponent.FILE_EXCHANGE_FILE);
+        assertNotNull(file);
         assertDirectoryEquals("multidir/bye.txt", file.getAbsoluteFilePath());
         assertDirectoryEquals("bye.txt", file.getRelativeFilePath());
         assertEquals("bye.txt", file.getFileName());
 
-        exchange = (GenericFileExchange) mock.getExchanges().get(1);
-        file = (RemoteFile) exchange.getGenericFile();
+        exchange = mock.getExchanges().get(1);
+        file = (RemoteFile) 
exchange.getProperty(FileComponent.FILE_EXCHANGE_FILE);
+        assertNotNull(file);
         assertDirectoryEquals("multidir/sub/hello.txt", 
file.getAbsoluteFilePath());
         assertDirectoryEquals("sub/hello.txt", file.getRelativeFilePath());
         assertEquals("hello.txt", file.getFileName());
 
-        exchange = (GenericFileExchange) mock.getExchanges().get(2);
-        file = (RemoteFile) exchange.getGenericFile();
+        exchange = mock.getExchanges().get(2);
+        file = (RemoteFile) 
exchange.getProperty(FileComponent.FILE_EXCHANGE_FILE);
+        assertNotNull(file);
         assertDirectoryEquals("multidir/sub/sub2/godday.txt", 
file.getAbsoluteFilePath());
         assertDirectoryEquals("sub/sub2/godday.txt", 
file.getRelativeFilePath());
         assertEquals("godday.txt", file.getFileName());

Modified: 
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerWithNoFileOptionTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerWithNoFileOptionTest.java?rev=789039&r1=789038&r2=789039&view=diff
==============================================================================
--- 
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerWithNoFileOptionTest.java
 (original)
+++ 
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerWithNoFileOptionTest.java
 Sun Jun 28 03:20:58 2009
@@ -16,8 +16,9 @@
  */
 package org.apache.camel.component.file.remote;
 
+import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.file.GenericFileExchange;
+import org.apache.camel.component.file.FileComponent;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.junit.Before;
 import org.junit.Test;
@@ -53,8 +54,9 @@
 
         assertMockEndpointsSatisfied();
 
-        GenericFileExchange exchange = (GenericFileExchange) 
mock.getExchanges().get(0);
-        RemoteFile file = (RemoteFile) exchange.getGenericFile();
+        Exchange exchange = mock.getExchanges().get(0);
+        RemoteFile file = (RemoteFile) 
exchange.getProperty(FileComponent.FILE_EXCHANGE_FILE);
+        assertNotNull(file);
         assertEquals("hello.txt", file.getAbsoluteFilePath());
         assertEquals("hello.txt", file.getRelativeFilePath());
         assertEquals("hello.txt", file.getFileName());


Reply via email to