diff options
author | Matthias Nick | 2013-10-25 12:30:21 +0000 |
---|---|---|
committer | Jeremie Bresson | 2013-10-28 08:31:31 +0000 |
commit | 8a7e4c3ad934b552dd28ad5e000ef196b01bb588 (patch) | |
tree | 1564dc61d09f15689efb9da9dfdc5cdf962ee0b4 | |
parent | 397777c9f105b6019369394438626bd8a96639b5 (diff) | |
download | org.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.java | 70 | ||||
-rw-r--r-- | org.eclipse.scout.commons/src/org/eclipse/scout/commons/IOUtility.java | 26 |
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 { |