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/11/12 17:58:06 UTC

svn commit: r835443 - /camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java

Author: davsclaus
Date: Thu Nov 12 16:58:06 2009
New Revision: 835443

URL: http://svn.apache.org/viewvc?rev=835443&view=rev
Log:
CAMEL-2165: Fixed throwing original exception when write fails.

Modified:
    camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java

Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java?rev=835443&r1=835442&r2=835443&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java (original)
+++ camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileProducer.java Thu Nov 12 16:58:06 2009
@@ -53,6 +53,10 @@
         ExchangeHelper.copyResults(exchange, remoteExchange);
     }
 
+    protected RemoteFileOperations getOperations() {
+        return (RemoteFileOperations) operations;
+    }
+
     /**
      * The file could not be written. We need to disconnect from the remote server.
      */
@@ -60,21 +64,28 @@
         loggedIn = false;
         if (isStopping() || isStopped()) {
             // if we are stopping then ignore any exception during a poll
-            log.debug("Exception occured during stopping: " + exception.getMessage());
+            log.debug("Exception occurred during stopping: " + exception.getMessage());
         } else {
-            log.debug("Exception occured during processing. ", exception);
-            disconnect();
-            // Rethrow to signify that we didn't poll
+            log.debug("Exception occurred during processing. ", exception);
+            try {
+                disconnect();
+            } catch (Exception e) {
+                // ignore exception
+                log.debug("Ignored exception during disconnect", e);
+            }
+            // Rethrow the original exception
             throw exception;
         }
     }
 
     public void disconnect() throws IOException {
         loggedIn = false;
-        if (log.isDebugEnabled()) {
-            log.debug("Disconnecting from: " + getEndpoint());
+        if (getOperations().isConnected()) {
+            if (log.isDebugEnabled()) {
+                log.debug("Disconnecting from: " + getEndpoint());
+            }
+            getOperations().disconnect();
         }
-        ((RemoteFileOperations) operations).disconnect();
     }
 
     @Override
@@ -100,20 +111,19 @@
         try {
             disconnect();
         } catch (Exception e) {
-            log.debug("Exception occured during disconnecting from: " + getEndpoint() + " " + e.getMessage());
+            log.debug("Exception occurred during disconnecting from: " + getEndpoint() + " " + e.getMessage());
         }
         super.doStop();
     }
 
     protected void connectIfNecessary() throws IOException {
-        if (!((RemoteFileOperations) operations).isConnected() || !loggedIn) {
+        if (!(getOperations()).isConnected() || !loggedIn) {
             if (log.isDebugEnabled()) {
                 log.debug("Not already connected/logged in. Connecting to: " + getEndpoint());
             }
-            RemoteFileOperations rfo = (RemoteFileOperations) operations;
             RemoteFileEndpoint rfe = (RemoteFileEndpoint) getEndpoint();
             RemoteFileConfiguration conf = (RemoteFileConfiguration) rfe.getConfiguration();
-            loggedIn = rfo.connect(conf);
+            loggedIn = getOperations().connect(conf);
             if (!loggedIn) {
                 return;
             }