]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-3245: More changes to deal with remote streaming issues related to large files.
authorRichard Millet <richard.millet@berkeley.edu>
Mon, 6 Dec 2010 06:09:57 +0000 (06:09 +0000)
committerRichard Millet <richard.millet@berkeley.edu>
Mon, 6 Dec 2010 06:09:57 +0000 (06:09 +0000)
services/authorization/service/.classpath
services/common/src/main/java/org/collectionspace/services/common/FileUtils.java
services/common/src/main/java/org/collectionspace/services/common/imaging/nuxeo/NuxeoImageUtils.java

index 505c7192a516c57aff1e56ee8f44ccc0f9f7b4fd..425cd1620f3d44a6c3d1d8c43488a67552f09765 100644 (file)
@@ -4,7 +4,7 @@
        <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>\r
        <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>\r
        <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>\r
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>\r
        <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>\r
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
        <classpathentry kind="output" path="target/classes"/>\r
 </classpath>\r
index 832ef645e650b30b5c799094e6ddc55128e4c6b1..2e93722a210994278b45f28938e7787cb9e421cb 100644 (file)
@@ -6,9 +6,12 @@ import javax.servlet.http.HttpServletRequest;
 import java.util.Iterator;\r
 import java.util.List;\r
 import java.util.Map;\r
+import java.util.UUID;\r
 \r
 //import java.io.IOException;\r
 import java.io.File;\r
+import java.io.InputStream;\r
+import java.io.FileOutputStream;\r
 \r
 //import javax.servlet.ServletException;\r
 //import javax.servlet.http.HttpServlet;\r
@@ -24,6 +27,30 @@ public class FileUtils {
        /** The Constant logger. */\r
        private static final Logger logger = LoggerFactory.getLogger(FileUtils.class);\r
        \r
+       private static final String TMP_FILE_PREFIX = "cspace_blob_";\r
+       \r
+       static public File createTmpFile(InputStream streamIn) {\r
+               File tmpFile = null;            \r
+               String tmpDir = System.getProperty("java.io.tmpdir");\r
+               tmpFile = new File(tmpDir, UUID.randomUUID().toString());\r
+               \r
+               try {\r
+               FileOutputStream streamOut = new FileOutputStream(tmpFile);\r
+                       int c;\r
+               while ((c = streamIn.read()) != -1) \r
+               {\r
+                  streamOut.write(c);\r
+               }\r
+       \r
+               streamIn.close();\r
+               streamOut.close();\r
+               } catch (Exception e) {\r
+                       logger.error(e.getMessage(), e);\r
+               }\r
+               \r
+               return tmpFile;\r
+       }\r
+       \r
        static public File createTmpFile(HttpServletRequest request) {\r
                File result = null;\r
                \r
index d7296600524cf299287cd7e3e5c303372c47b846..21bf709f1521b7656e7f162e4bb12f03884624e4 100644 (file)
@@ -40,8 +40,9 @@ import java.util.Map;
 import org.nuxeo.runtime.api.Framework;\r
 import org.nuxeo.runtime.api.ServiceManager;\r
 import org.nuxeo.runtime.api.ServiceDescriptor;\r
+import org.nuxeo.runtime.services.streaming.RemoteInputStream;\r
 \r
-import org.nuxeo.common.utils.FileUtils;\r
+//import org.nuxeo.common.utils.FileUtils;\r
 \r
 import org.nuxeo.ecm.platform.picture.api.adapters.PictureResourceAdapter;\r
 import org.nuxeo.ecm.platform.mimetype.MimetypeDetectionException;\r
@@ -103,6 +104,7 @@ import org.slf4j.LoggerFactory;
 import org.collectionspace.services.common.ServiceMain;\r
 import org.collectionspace.services.common.context.ServiceContext;\r
 import org.collectionspace.services.common.document.DocumentUtils;\r
+import org.collectionspace.services.common.FileUtils;\r
 \r
 // TODO: Auto-generated Javadoc\r
 /**\r
@@ -527,7 +529,9 @@ public class NuxeoImageUtils {
                                pictureBlob = pictureBlobHolder.getBlob();\r
                        }\r
                        \r
-                       result = pictureBlob.getStream();                       \r
+                       InputStream remoteStream = pictureBlob.getStream();\r
+                       File tmpFile = FileUtils.createTmpFile(remoteStream);\r
+                       result = new FileInputStream(tmpFile);\r
                } catch (Exception e) {\r
                        logger.error(e.getMessage(), e);\r
                }\r