X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.simple%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fattachment%2FFileAttachmentsStorage.java;h=0e70805c061c602f10e678d9063ef176f503d060;hb=9daa55ce316d52ffd8f30dc0d1b516ccf78a8c73;hp=1f1089bb263aedb58ffed903eaaf467d0d1f1341;hpb=ad602245885ef5a89fa056d33848dc6538b56f34;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/attachment/FileAttachmentsStorage.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/attachment/FileAttachmentsStorage.java index 1f1089bb2..0e70805c0 100644 --- a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/attachment/FileAttachmentsStorage.java +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/attachment/FileAttachmentsStorage.java @@ -11,9 +11,23 @@ import org.apache.commons.io.IOUtils; import org.argeo.slc.SlcException; public class FileAttachmentsStorage implements AttachmentsStorage { - private File attachmentsDirectory = new File(System - .getProperty("java.io.tmpdir") - + File.separator + "slcAttachments"); + private File attachmentsDirectory; + + public FileAttachmentsStorage() { + String osgiInstanceArea = System.getProperty("osgi.instance.area"); + if (osgiInstanceArea != null) { + if (osgiInstanceArea.startsWith("file:")) + osgiInstanceArea = osgiInstanceArea.substring("file:".length()); + attachmentsDirectory = new File(osgiInstanceArea + File.separator + + "slcAttachments"); + } + + if (attachmentsDirectory == null) { + String tempDir = System.getProperty("java.io.tmpdir"); + attachmentsDirectory = new File(tempDir + File.separator + + "slcAttachments"); + } + } public void retrieveAttachment(Attachment attachment, OutputStream outputStream) { @@ -22,8 +36,9 @@ public class FileAttachmentsStorage implements AttachmentsStorage { try { byte[] buffer = new byte[1024 * 1024]; in = new FileInputStream(file); - while (in.read(buffer) >= 0) { - outputStream.write(buffer); + int read = -1; + while ((read = in.read(buffer)) >= 0) { + outputStream.write(buffer, 0, read); } } catch (IOException e) { throw new SlcException("Cannot write attachment " + attachment