]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5497: Will now create a temp file if we find a file with a name that Nuxeo...
authorRichard Millet <richard.millet@berkeley.edu>
Wed, 13 Feb 2013 08:31:16 +0000 (00:31 -0800)
committerRichard Millet <richard.millet@berkeley.edu>
Wed, 13 Feb 2013 08:31:16 +0000 (00:31 -0800)
services/blob/client/src/test/resources/blobs/silly==1,d.jpg [new file with mode: 0644]
services/common/src/main/java/org/collectionspace/services/common/FileUtils.java
services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoBlobUtils.java

diff --git a/services/blob/client/src/test/resources/blobs/silly==1,d.jpg b/services/blob/client/src/test/resources/blobs/silly==1,d.jpg
new file mode 100644 (file)
index 0000000..15b559c
Binary files /dev/null and b/services/blob/client/src/test/resources/blobs/silly==1,d.jpg differ
index 9e45b83867bdb7b4711c27a810aea2c181286a3a..7727fbc69da023521b83c977cc34908433565cda 100644 (file)
@@ -50,6 +50,7 @@ import org.apache.commons.fileupload.FileItemFactory;
 import org.apache.commons.fileupload.FileItem;\r
 import org.apache.commons.fileupload.servlet.ServletFileUpload;\r
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;\r
+\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
@@ -66,11 +67,30 @@ public class FileUtils {
        public static final String DEFAULT_BLOB_NAME = "blob";\r
        private static final String FILE_FORM_FIELD = "file";\r
        \r
+    public static String getExtension(File file) {\r
+       return getExtension(file.getName());\r
+    }\r
+    \r
+    // Call this method to get the extension by passing the file name\r
+    public static String getExtension(String fileName) {\r
+        if (fileName == null) {\r
+            return null;\r
+        }\r
\r
+        int index = fileName.lastIndexOf(".");\r
+        if (index == -1) {\r
+            return "";\r
+        }\r
\r
+        return fileName.substring(index + 1);\r
+    }\r
+    \r
        /*\r
         * Creates a copy of the srcFile to a temp file\r
         */\r
        static public File createTmpFile(File srcFile, String prefix) throws Exception {\r
-               File result = createTmpFile(new FileInputStream(srcFile), prefix);\r
+               String fileExtension = FileUtils.getExtension(srcFile);\r
+               File result = createTmpFile(new FileInputStream(srcFile), prefix, fileExtension);\r
                return result;\r
        }\r
        \r
@@ -83,11 +103,25 @@ public class FileUtils {
         */\r
        static public File createTmpFile(InputStream streamIn,\r
                        String filePrefix) {\r
+               return createTmpFile(streamIn, filePrefix, null);\r
+       }\r
+       \r
+       /**\r
+        * Creates the tmp file.\r
+        *\r
+        * @param streamIn the stream in\r
+        * @param filePrefix the file prefix\r
+        * @param fileExtension the file extension\r
+        * @return the file\r
+        */\r
+       static public File createTmpFile(InputStream streamIn,\r
+                       String filePrefix, String fileExtension) {\r
                File result = null;\r
                \r
                filePrefix = filePrefix != null ? filePrefix : "";\r
+               fileExtension = fileExtension != null ? "." + fileExtension : "";\r
                String tmpDir = System.getProperty("java.io.tmpdir");\r
-               result = new File(tmpDir, filePrefix + UUID.randomUUID().toString());\r
+               result = new File(tmpDir, filePrefix + UUID.randomUUID().toString() + fileExtension);\r
                if (logger.isDebugEnabled() == true) {\r
                        logger.debug("Creating temp file at:" + result.getAbsolutePath());\r
                }\r
index 613ff631a9d00599be8a4a06c54dfd5e29e4ed2d..c357ffe26a5da8fa5c8f57228034af21540e847d 100644 (file)
@@ -1026,7 +1026,14 @@ public class NuxeoBlobUtils {
                        logger.error("Could not create image blob.", e);\r
                        throw e;\r
                } finally {\r
-                       \r
+                       //\r
+                       // If we created a temp file then we should delete it.\r
+                       //\r
+                       if (targetFile.equals(originalFile) == false) {\r
+                               if (targetFile.delete() == false) {\r
+                                       logger.warn(String.format("Attempt to delete temporary file '%s' failed.", targetFile.getAbsolutePath()));\r
+                               }\r
+                       }\r
                }\r
 \r
                return result;\r