[jboss-svn-commits] JBL Code SVN: r8695 - labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jan 4 19:11:25 EST 2007
Author: kevin.conner at jboss.com
Date: 2007-01-04 19:11:23 -0500 (Thu, 04 Jan 2007)
New Revision: 8695
Modified:
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListener.java
Log:
Fallback to copy/delete if rename fails: JBESB-325
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListener.java 2007-01-04 22:24:07 UTC (rev 8694)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListener.java 2007-01-05 00:11:23 UTC (rev 8695)
@@ -26,6 +26,7 @@
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
import org.jboss.soa.esb.helpers.ConfigTree;
@@ -99,7 +100,17 @@
@Override
boolean renameFile(File from, File to) throws GatewayException
{
- return from.renameTo(to);
+ if (to.exists() && !to.delete())
+ {
+ throw new GatewayException("Cannot delete target file: " + to.getAbsolutePath()) ;
+ }
+
+ if (!from.renameTo(to))
+ {
+ copyFile(from, to) ;
+ from.delete() ;
+ }
+ return true ;
}
@Override
@@ -111,6 +122,68 @@
_logger.warn("No <"+ListenerTagNames.ACTION_ELEMENT_TAG+"> element found in cofiguration"
+" - Using default composer class : "+_composerName);
}
+
+ protected void copyFile(final File from, final File to)
+ throws GatewayException
+ {
+ final FileInputStream fis ;
+ try
+ {
+ fis = new FileInputStream(from) ;
+ }
+ catch (final IOException ioe)
+ {
+ throw new GatewayException("Could not open input file for reading", ioe) ;
+ }
+ try
+ {
+ final FileOutputStream fos ;
+ try
+ {
+ fos = new FileOutputStream(to) ;
+ }
+ catch (final IOException ioe)
+ {
+ throw new GatewayException("Could not open output file for writing", ioe) ;
+ }
+
+ try
+ {
+ final long filesize = from.length() ;
+ final byte[] buffer = (filesize > 256 ? new byte[256] : new byte[(int)filesize]) ;
+ while(true)
+ {
+ final int count = fis.read(buffer) ;
+ if (count < 0)
+ {
+ break ;
+ }
+ fos.write(buffer, 0, count) ;
+ }
+ }
+ catch (final IOException ioe)
+ {
+ throw new GatewayException("Error copying file", ioe) ;
+ }
+ finally
+ {
+ try
+ {
+ fos.close() ;
+ }
+ catch (final IOException ioe) {} // ignore
+ }
+ }
+ finally
+ {
+ try
+ {
+ fis.close() ;
+ }
+ catch (final IOException ioe) {} // ignore
+ }
+ }
+
//______________________________________________________________________________
/**
* Default gateway action for files
More information about the jboss-svn-commits
mailing list