Code refactoring in DiskFileUploadReceiver#createTargetFile.
diff --git a/bundles/org.eclipse.rap.rwt.supplemental.fileupload/src/org/eclipse/rap/rwt/supplemental/fileupload/DiskFileUploadReceiver.java b/bundles/org.eclipse.rap.rwt.supplemental.fileupload/src/org/eclipse/rap/rwt/supplemental/fileupload/DiskFileUploadReceiver.java
index 1e2c5b3..424073c 100644
--- a/bundles/org.eclipse.rap.rwt.supplemental.fileupload/src/org/eclipse/rap/rwt/supplemental/fileupload/DiskFileUploadReceiver.java
+++ b/bundles/org.eclipse.rap.rwt.supplemental.fileupload/src/org/eclipse/rap/rwt/supplemental/fileupload/DiskFileUploadReceiver.java
@@ -23,6 +23,7 @@
public class DiskFileUploadReceiver extends FileUploadReceiver {
private static final String DEFAULT_TARGET_FILE_NAME = "upload.tmp";
+ private static final String TEMP_DIRECTORY_PREFIX = "fileupload_";
private File targetFile;
@@ -48,7 +49,7 @@
/**
* Creates a file to save the received data to. Subclasses may override.
- *
+ *
* @param details the details of the uploaded file like file name, content-type and size
* @return the file to store the data in
*/
@@ -57,32 +58,20 @@
if( details != null && details.getFileName() != null ) {
fileName = details.getFileName();
}
- StringBuilder parentFileName = new StringBuilder( fileName );
- parentFileName.append( "." );
- File parentDir = File.createTempFile( parentFileName.toString(), "" );
- // [ar] by default, a file is created.
- parentDir.delete();
- File targetFile = null;
- if( parentDir.mkdir() ) {
- parentDir.deleteOnExit();
- targetFile = new File( parentDir, fileName );
- targetFile.createNewFile();
+ File result = new File( createTempDirectory(), fileName );
+ result.createNewFile();
+ return result;
+ }
+
+ private static File createTempDirectory() throws IOException {
+ File result = File.createTempFile( TEMP_DIRECTORY_PREFIX, "" );
+ result.delete();
+ if( result.mkdir() ) {
+ result.deleteOnExit();
} else {
- String prefix = createPrefix( fileName );
- String suffix = createSuffix( fileName );
- targetFile = File.createTempFile( prefix, suffix );
+ throw new IOException( "Unable to create temp directory: " + result.getAbsolutePath() );
}
- return targetFile;
- }
-
- private String createPrefix( String fileName ) {
- int dotIndex = fileName.lastIndexOf( '.' );
- return dotIndex == -1 ? fileName : fileName.substring( 0, dotIndex + 1 );
- }
-
- private String createSuffix( String fileName ) {
- int dotIndex = fileName.lastIndexOf( '.' );
- return dotIndex == -1 ? null : fileName.substring( dotIndex );
+ return result;
}
private static void copy( InputStream inputStream, OutputStream outputStream )
diff --git a/tests/org.eclipse.rap.rwt.supplemental.fileupload.test/src/org/eclipse/rap/rwt/supplemental/fileupload/DiskFileUploadReceiver_Test.java b/tests/org.eclipse.rap.rwt.supplemental.fileupload.test/src/org/eclipse/rap/rwt/supplemental/fileupload/DiskFileUploadReceiver_Test.java
index 8054ab7..666df5e 100644
--- a/tests/org.eclipse.rap.rwt.supplemental.fileupload.test/src/org/eclipse/rap/rwt/supplemental/fileupload/DiskFileUploadReceiver_Test.java
+++ b/tests/org.eclipse.rap.rwt.supplemental.fileupload.test/src/org/eclipse/rap/rwt/supplemental/fileupload/DiskFileUploadReceiver_Test.java
@@ -43,8 +43,7 @@
createdFile = receiver.createTargetFile( details );
assertTrue( createdFile.exists() );
- assertTrue( createdFile.getName().startsWith( "foo." ) );
- assertTrue( createdFile.getName().endsWith( ".bar" ) );
+ assertEquals( "foo.bar", createdFile.getName() );
}
public void testCreatedTargetFilesDiffer() throws IOException {
@@ -80,8 +79,7 @@
assertNotNull( createdFile );
assertTrue( createdFile.exists() );
- assertTrue( createdFile.getName().startsWith( "upload." ) );
- assertTrue( createdFile.getName().endsWith( ".tmp" ) );
+ assertEquals( "upload.tmp", createdFile.getName() );
assertEquals( content, FileUploadTestUtil.getFileContents( createdFile ) );
}
}