fixed: closing of input streams
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@75305 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
bb99f16cf7
commit
d8e502b3e6
|
@ -6,7 +6,9 @@ package org.gcube.portlets.user.workspace.server;
|
|||
import java.io.BufferedInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.StringReader;
|
||||
|
||||
|
@ -15,8 +17,11 @@ import javax.servlet.http.HttpServlet;
|
|||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.antlr.stringtemplate.language.Cat;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.gcube.common.core.scope.GCUBEScope;
|
||||
import org.gcube.common.core.utils.logging.GCUBELog;
|
||||
import org.gcube.portlets.user.homelibrary.home.HomeLibrary;
|
||||
import org.gcube.portlets.user.homelibrary.home.exceptions.InternalErrorException;
|
||||
import org.gcube.portlets.user.homelibrary.home.workspace.Workspace;
|
||||
import org.gcube.portlets.user.homelibrary.home.workspace.WorkspaceFolder;
|
||||
|
@ -36,6 +41,7 @@ import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ReportTem
|
|||
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.gcube.Document;
|
||||
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.gcube.Metadata;
|
||||
import org.gcube.portlets.user.homelibrary.home.workspace.folder.items.ts.TimeSeries;
|
||||
import org.gcube.portlets.user.homelibrary.jcr.repository.external.GCUBEStorage;
|
||||
import org.gcube.portlets.user.homelibrary.util.Extensions;
|
||||
import org.gcube.portlets.user.homelibrary.util.MimeTypeUtil;
|
||||
import org.gcube.portlets.user.homelibrary.util.zip.ZipUtil;
|
||||
|
@ -89,6 +95,16 @@ public class DownloadServlet extends HttpServlet{
|
|||
WorkspaceItem item;
|
||||
try {
|
||||
item = wa.getItem(itemId);
|
||||
|
||||
|
||||
try{
|
||||
//ACCOUNTING
|
||||
item.markAsRead(true);
|
||||
|
||||
} catch (InternalErrorException e) {
|
||||
logger.error("Requested item "+itemId+" has trow an internal error exception",e);
|
||||
}
|
||||
|
||||
} catch (ItemNotFoundException e) {
|
||||
logger.error("Requested item "+itemId+" not found",e);
|
||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error, no items found");
|
||||
|
@ -96,6 +112,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
}
|
||||
|
||||
switch (item.getType()) {
|
||||
|
||||
case FOLDER:{
|
||||
try {
|
||||
File tmpZip = ZipUtil.zipFolder((WorkspaceFolder) item);
|
||||
|
@ -103,7 +120,14 @@ public class DownloadServlet extends HttpServlet{
|
|||
resp.setContentType("application/zip");
|
||||
resp.setContentLength((int) tmpZip.length());
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(new FileInputStream(tmpZip), resp.getOutputStream());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
// IOUtils.copy(new FileInputStream(tmpZip), resp.getOutputStream());
|
||||
|
||||
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
||||
IOUtils.copy(fileTmpZip, resp.getOutputStream());
|
||||
fileTmpZip.close();
|
||||
|
||||
out.close();
|
||||
tmpZip.delete();
|
||||
return;
|
||||
|
@ -129,7 +153,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
resp.setContentType("application/zip");
|
||||
resp.setContentLength((int) reportTemplate.getLength());
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(reportTemplate.getData(), resp.getOutputStream());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
// IOUtils.copy(reportTemplate.getData(), resp.getOutputStream());
|
||||
InputStream is = reportTemplate.getData();
|
||||
IOUtils.copy(is, resp.getOutputStream());
|
||||
is.close();
|
||||
|
||||
out.close();
|
||||
} catch (InternalErrorException e) {
|
||||
logger.error("Error during external item sending "+itemId,e);
|
||||
|
@ -151,7 +181,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
resp.setContentType("application/zip");
|
||||
resp.setContentLength((int) report.getLength());
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(report.getData(), resp.getOutputStream());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
// IOUtils.copy(report.getData(), resp.getOutputStream());
|
||||
InputStream is = report.getData();
|
||||
IOUtils.copy(is, resp.getOutputStream());
|
||||
is.close();
|
||||
|
||||
out.close();
|
||||
} catch (InternalErrorException e) {
|
||||
logger.error("Error during external item sending "+itemId,e);
|
||||
|
@ -163,11 +199,15 @@ public class DownloadServlet extends HttpServlet{
|
|||
}
|
||||
case EXTERNAL_PDF_FILE:
|
||||
case EXTERNAL_FILE:{
|
||||
|
||||
InputStream is = null;
|
||||
OutputStream out = null;
|
||||
try{
|
||||
ExternalFile externalFile = (ExternalFile)folderItem;
|
||||
|
||||
String mimeType = externalFile.getMimeType();
|
||||
|
||||
logger.trace("EXTERNAL_FILE DOWNLOAD FOR "+externalFile.getId());
|
||||
//COMMENTED 26/03/2013
|
||||
// String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
||||
|
||||
|
@ -175,12 +215,20 @@ public class DownloadServlet extends HttpServlet{
|
|||
//COMMENTED 26/03/2013
|
||||
// resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + item.getName() + "\"" );
|
||||
resp.setContentType(externalFile.getMimeType());
|
||||
resp.setContentType(mimeType);
|
||||
|
||||
resp.setContentLength((int) externalFile.getLength());
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(externalFile.getData(), resp.getOutputStream());
|
||||
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
// IOUtils.copy(externalFile.getData(), resp.getOutputStream());
|
||||
is = externalFile.getData();
|
||||
out = resp.getOutputStream();
|
||||
IOUtils.copy(is, out);
|
||||
|
||||
is.close();
|
||||
out.close();
|
||||
|
||||
} catch (InternalErrorException e) {
|
||||
logger.error("Error during external item sending "+itemId,e);
|
||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||
|
@ -190,6 +238,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
|
||||
}
|
||||
case EXTERNAL_IMAGE:{
|
||||
|
||||
try{
|
||||
ExternalImage externalImage = (ExternalImage)folderItem;
|
||||
|
||||
|
@ -201,8 +250,14 @@ public class DownloadServlet extends HttpServlet{
|
|||
resp.setContentType(externalImage.getMimeType());
|
||||
|
||||
resp.setContentLength((int) externalImage.getLength());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
// IOUtils.copy(externalImage.getData(), resp.getOutputStream());
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(externalImage.getData(), resp.getOutputStream());
|
||||
InputStream is = externalImage.getData();
|
||||
IOUtils.copy(is, out);
|
||||
is.close();
|
||||
|
||||
out.close();
|
||||
return;
|
||||
} catch (InternalErrorException e) {
|
||||
|
@ -216,8 +271,14 @@ public class DownloadServlet extends HttpServlet{
|
|||
ExternalUrl externalUrl = (ExternalUrl)folderItem;
|
||||
resp.setContentType("text/uri-list");
|
||||
resp.setContentLength((int) externalUrl.getLength());
|
||||
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
StringReader sr = new StringReader(externalUrl.getUrl());
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(new StringReader(externalUrl.getUrl()), resp.getOutputStream());
|
||||
IOUtils.copy(sr, out);
|
||||
|
||||
sr.close();
|
||||
out.close();
|
||||
return;
|
||||
} catch (InternalErrorException e) {
|
||||
|
@ -237,8 +298,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving: "+e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(new StringReader(query.getQuery()), resp.getOutputStream());
|
||||
StringReader sr = new StringReader(query.getQuery());
|
||||
IOUtils.copy(sr, out);
|
||||
sr.close();
|
||||
|
||||
out.close();
|
||||
return;
|
||||
|
||||
|
@ -253,8 +319,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
|
||||
resp.setContentType("application/zip");
|
||||
resp.setContentLength((int) tmpZip.length());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(new FileInputStream(tmpZip), resp.getOutputStream());
|
||||
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
||||
IOUtils.copy(fileTmpZip, out);
|
||||
fileTmpZip.close();
|
||||
|
||||
out.close();
|
||||
tmpZip.delete();
|
||||
return;
|
||||
|
@ -274,8 +345,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
|
||||
resp.setContentType("application/zip");
|
||||
resp.setContentLength((int) tmpZip.length());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(new FileInputStream(tmpZip), resp.getOutputStream());
|
||||
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
||||
IOUtils.copy(fileTmpZip, out);
|
||||
fileTmpZip.close();
|
||||
|
||||
out.close();
|
||||
tmpZip.delete();
|
||||
return;
|
||||
|
@ -299,8 +375,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
resp.setHeader( "Content-Disposition", "attachment; filename=\"" + item.getName() + ".zip\"" );
|
||||
resp.setContentType("application/zip");
|
||||
resp.setContentLength((int) tmpZip.length());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(new FileInputStream(tmpZip), resp.getOutputStream());
|
||||
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
||||
IOUtils.copy(fileTmpZip, out);
|
||||
fileTmpZip.close();
|
||||
|
||||
out.close();
|
||||
tmpZip.delete();
|
||||
}
|
||||
|
@ -310,8 +391,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
resp.setHeader( "Content-Disposition", "inline; filename=\"" + itemName + "\"" );
|
||||
resp.setContentType(document.getMimeType());
|
||||
resp.setContentLength((int) document.getLength());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(document.getData(), resp.getOutputStream());
|
||||
InputStream is = document.getData();
|
||||
IOUtils.copy(is, out);
|
||||
is.close();
|
||||
|
||||
out.close();
|
||||
}
|
||||
return;
|
||||
|
@ -328,8 +414,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
|
||||
resp.setContentType("text/html");
|
||||
resp.setContentLength((int) document.getLength());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
OutputStream out = resp.getOutputStream();
|
||||
IOUtils.copy(new StringReader(document.getData()), resp.getOutputStream());
|
||||
StringReader sr = new StringReader(document.getData());
|
||||
IOUtils.copy(sr, out);
|
||||
sr.close();
|
||||
|
||||
out.close();
|
||||
|
||||
return;
|
||||
|
@ -371,7 +462,11 @@ public class DownloadServlet extends HttpServlet{
|
|||
|
||||
if(externalResourceLink.getData()!=null){
|
||||
System.out.println("Input stream is not null");
|
||||
IOUtils.copy(externalResourceLink.getData(), resp.getOutputStream());
|
||||
|
||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
InputStream eris = externalResourceLink.getData();
|
||||
IOUtils.copy(eris, resp.getOutputStream());
|
||||
eris.close();
|
||||
}
|
||||
else{
|
||||
logger.error("Input stream is null "+itemId);
|
||||
|
@ -410,5 +505,46 @@ public class DownloadServlet extends HttpServlet{
|
|||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during data retrieving");
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
InputStream is = null;
|
||||
|
||||
System.out.println("start");
|
||||
|
||||
is = GCUBEStorage.getRemoteFile("/Home/test.user/Workspace3d660604-03ef-49eb-89c3-4c73f8a47914");
|
||||
|
||||
try{
|
||||
|
||||
// Workspace ws = HomeLibrary.getHomeManagerFactory().getHomeManager().getHome("test.user", GCUBEScope.getScope("/gcube/devsec")).getWorkspace();
|
||||
//
|
||||
// ExternalFile f = (ExternalFile) ws.getItem("61c6d01c-72f3-44b6-88da-6b9b486ef391");
|
||||
|
||||
FileOutputStream out = new FileOutputStream(new File("/tmp/bla"));
|
||||
// byte[] buffer = new byte[1024];
|
||||
// int len;
|
||||
// while ((len = is.read(buffer)) != -1) {
|
||||
// out.write(buffer, 0, len);
|
||||
// }
|
||||
|
||||
// is = f.getData();
|
||||
|
||||
IOUtils.copy(is, out);
|
||||
is.close();
|
||||
|
||||
out.close();
|
||||
|
||||
// System.out.println("Sleeping");
|
||||
// Thread.sleep(20000);
|
||||
// System.out.println("Alive");
|
||||
|
||||
System.out.println("end");
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue