Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Nick2013-10-25 12:30:21 +0000
committerJeremie Bresson2013-10-28 08:31:31 +0000
commit8a7e4c3ad934b552dd28ad5e000ef196b01bb588 (patch)
tree1564dc61d09f15689efb9da9dfdc5cdf962ee0b4
parent397777c9f105b6019369394438626bd8a96639b5 (diff)
downloadorg.eclipse.scout.rt-8a7e4c3ad934b552dd28ad5e000ef196b01bb588.tar.gz
org.eclipse.scout.rt-8a7e4c3ad934b552dd28ad5e000ef196b01bb588.tar.xz
org.eclipse.scout.rt-8a7e4c3ad934b552dd28ad5e000ef196b01bb588.zip
bug 420373: IOUtility.createTempFile erroneous
https://bugs.eclipse.org/bugs/show_bug.cgi?id=420373 appended '.' for correct file extension Change-Id: Ic45d4561cd107d1f6f615bb5dd29407ad04e3758 Signed-off-by: Matthias Nick <Matthias.Nick@bsiag.com> Reviewed-on: https://git.eclipse.org/r/17760 Tested-by: Hudson CI Reviewed-by: Jeremie Bresson <jbr@bsiag.com> IP-Clean: Jeremie Bresson <jbr@bsiag.com>
-rw-r--r--org.eclipse.scout.commons.test/src/org/eclipse/scout/commons/IOUtilityTest.java70
-rw-r--r--org.eclipse.scout.commons/src/org/eclipse/scout/commons/IOUtility.java26
2 files changed, 95 insertions, 1 deletions
diff --git a/org.eclipse.scout.commons.test/src/org/eclipse/scout/commons/IOUtilityTest.java b/org.eclipse.scout.commons.test/src/org/eclipse/scout/commons/IOUtilityTest.java
index 09e710c39f..ba921a6c52 100644
--- a/org.eclipse.scout.commons.test/src/org/eclipse/scout/commons/IOUtilityTest.java
+++ b/org.eclipse.scout.commons.test/src/org/eclipse/scout/commons/IOUtilityTest.java
@@ -10,10 +10,14 @@
******************************************************************************/
package org.eclipse.scout.commons;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
+import java.io.RandomAccessFile;
import org.eclipse.scout.commons.exception.ProcessingException;
import org.eclipse.scout.commons.utility.TestUtility;
@@ -25,6 +29,9 @@ import org.junit.Test;
* @since 3.9.1
*/
public class IOUtilityTest {
+ private static final byte[] content = new byte[]{1, 2, 3, 4};
+ private static String filename = "myTempFile";
+ private static String extension = ".tmp";
@Test
public void testGetContentInEncoding() throws ProcessingException {
@@ -45,4 +52,67 @@ public class IOUtilityTest {
TestUtility.deleteTempFile(ansiFile);
}
}
+
+ private byte[] readFile(File file) throws Throwable {
+ RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r");
+ byte[] fileContent = new byte[(int) randomAccessFile.length()];
+ randomAccessFile.read(fileContent);
+ randomAccessFile.close();
+ return fileContent;
+ }
+
+ @Test
+ public void testCreateNewTempFile() throws ProcessingException, Throwable {
+ File tempFile = IOUtility.createTempFile(filename + extension, content);
+ assertTrue(tempFile.getName().endsWith(filename + extension));
+ assertArrayEquals(content, readFile(tempFile));
+ tempFile.delete();
+
+ tempFile = IOUtility.createTempFile(filename, extension, content);
+ assertTrue(tempFile.getName().startsWith(filename));
+ assertTrue(tempFile.getName().endsWith(extension));
+ assertArrayEquals(content, readFile(tempFile));
+ tempFile.delete();
+ }
+
+ @Test
+ public void testCreateNewTempFileNoContent() throws ProcessingException, Throwable {
+ File tempFile = IOUtility.createTempFile(filename + extension, null);
+ assertTrue(tempFile.getName().endsWith(filename + extension));
+ assertArrayEquals(new byte[]{}, readFile(tempFile));
+ tempFile.delete();
+
+ tempFile = IOUtility.createTempFile(filename, extension, null);
+ assertTrue(tempFile.getName().startsWith(filename));
+ assertTrue(tempFile.getName().endsWith(extension));
+ assertArrayEquals(new byte[]{}, readFile(tempFile));
+ tempFile.delete();
+ }
+
+ @Test
+ public void testCreateNewTempFileEmptyFilename() throws ProcessingException, Throwable {
+ File tempFile = IOUtility.createTempFile("", content);
+ assertTrue(tempFile.getName().endsWith(".tmp"));
+ assertArrayEquals(content, readFile(tempFile));
+ tempFile.delete();
+ }
+
+ @Test
+ public void testCreateNewTempFileNullParameter() throws ProcessingException, Throwable {
+ File tempFile = IOUtility.createTempFile(null, content);
+ assertTrue(tempFile.getName().endsWith(".tmp"));
+ assertArrayEquals(content, readFile(tempFile));
+ tempFile.delete();
+ }
+
+ @Test
+ public void testFileExtension() {
+ assertEquals("temp", IOUtility.getFileExtension("Test.temp"));
+ assertEquals("temp", IOUtility.getFileExtension("Test.xy.temp"));
+ assertEquals("temp", IOUtility.getFileExtension(".temp"));
+ assertEquals("", IOUtility.getFileExtension("Test."));
+ assertEquals("", IOUtility.getFileExtension("."));
+ assertNull(IOUtility.getFileExtension(""));
+ assertNull(IOUtility.getFileExtension(null));
+ }
}
diff --git a/org.eclipse.scout.commons/src/org/eclipse/scout/commons/IOUtility.java b/org.eclipse.scout.commons/src/org/eclipse/scout/commons/IOUtility.java
index aab03f9eea..3ce41eaca2 100644
--- a/org.eclipse.scout.commons/src/org/eclipse/scout/commons/IOUtility.java
+++ b/org.eclipse.scout.commons/src/org/eclipse/scout/commons/IOUtility.java
@@ -276,13 +276,24 @@ public final class IOUtility {
}
}
+ /**
+ * Convenience method for creating temporary files with content. Note, the temporary file will be automatically
+ * deleted when the virtual machine terminates.
+ *
+ * @param fileName
+ * If no or an empty filename is given, a random fileName will be created.
+ * @param content
+ * If no content is given, an empty file will be created
+ * @return A new temporary file with specified content
+ * @throws ProcessingException
+ */
public static File createTempFile(String fileName, byte[] content) throws ProcessingException {
try {
if (fileName != null) {
fileName = fileName.replaceAll("[\\\\/:*?\\\"<>|]*", "");
}
if (fileName == null || fileName.length() == 0) {
- fileName = getTempFileName("tmp");
+ fileName = getTempFileName(".tmp");
}
File f = File.createTempFile("tmp", ".tmp");
File f2 = new File(f.getParentFile(), new File(fileName).getName());
@@ -307,6 +318,19 @@ public final class IOUtility {
}
}
+ /**
+ * Convenience method for creating temporary files with content. Note, the temporary file will be automatically
+ * deleted when the virtual machine terminates. The temporary file will look like this:
+ * <i>prefix</i>2093483323922923<i>.suffix</i>
+ *
+ * @param prefix
+ * The prefix of the temporary file
+ * @param suffix
+ * The suffix of the temporary file. Don't forget the colon, for example <b>.tmp</b>
+ * @param content
+ * @return A new temporary file with the specified content
+ * @throws ProcessingException
+ */
public static File createTempFile(String prefix, String suffix, byte[] content) throws ProcessingException {
File f = null;
try {

Back to the top