diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/util/RequestBuilderWorkspaceValidateItem.java b/src/main/java/org/gcube/portlets/user/workspace/client/util/RequestBuilderWorkspaceValidateItem.java index 706495b..43cff58 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/util/RequestBuilderWorkspaceValidateItem.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/util/RequestBuilderWorkspaceValidateItem.java @@ -70,7 +70,7 @@ public class RequestBuilderWorkspaceValidateItem { // System.out.println("status code is "+status); if(!(status==200) && !(status==202)){ //NOT IS STATUS SC_ACCEPTED - handleError("Sorry, an error occurred on retriving item, "+response.getText()); //ERROR STATUS + handleError("Sorry, an error occurred on retriving the file. "+response.getText()); //ERROR STATUS }else{ //OK STATUS @@ -88,7 +88,7 @@ public class RequestBuilderWorkspaceValidateItem { }); } catch (RequestException e) { - throw new Exception("An error occured on send request"); + throw new Exception("Sorry, an error occurred while contacting server, try again"); } } diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/DownloadServlet.java b/src/main/java/org/gcube/portlets/user/workspace/server/DownloadServlet.java index 5e62701..b72d8de 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/server/DownloadServlet.java +++ b/src/main/java/org/gcube/portlets/user/workspace/server/DownloadServlet.java @@ -124,7 +124,7 @@ public class DownloadServlet extends HttpServlet{ } catch (ItemNotFoundException e) { logger.error("Requested item "+itemId+" not found",e); // sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error, no items found"); - handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": "+ConstantsExplorer.ERROR_ITEM_DOES_NOT_EXIST); + handleError(urlRedirectOnError, req, resp, itemId, "The file has been deleted by another user."); // sendError(resp, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": "+ConstantsExplorer.ERROR_ITEM_DOES_NOT_EXIST); return; @@ -557,12 +557,11 @@ public class DownloadServlet extends HttpServlet{ protected void handleError(boolean urlRedirectOnError, HttpServletRequest req, HttpServletResponse resp, String itemId, String message) throws IOException{ + logger.warn("Handle rrror occurred: "+message); if(urlRedirectOnError){ - String path = req.getRequestURI().substring(req.getContextPath().length()); - urlRedirect(resp, path, itemId); - + urlRedirect(req, resp, itemId); }else - sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving"); + sendError(resp,message); } @@ -598,12 +597,44 @@ public class DownloadServlet extends HttpServlet{ response.flushBuffer(); } - protected void urlRedirect(HttpServletResponse response, String contextPath, String url) throws IOException { + protected void urlRedirect(HttpServletRequest req, HttpServletResponse response, String fakePath) throws IOException { - response.sendRedirect(response.encodeRedirectURL(contextPath + "/" +url)); + String requestUrl = getRequestURL(req) + "/"+fakePath; + logger.trace("Url redirect on: "+requestUrl); +// System.out.println("Url redirect on: "+requestUrl); + response.sendRedirect(response.encodeRedirectURL(requestUrl)); return; } + public static String getRequestURL(HttpServletRequest req) { + + String scheme = req.getScheme(); // http + String serverName = req.getServerName(); // hostname.com + int serverPort = req.getServerPort(); // 80 + String contextPath = req.getContextPath(); // /mywebapp + String servletPath = req.getServletPath(); // /servlet/MyServlet +// String pathInfo = req.getPathInfo(); // /a/b;c=123 +// String queryString = req.getQueryString(); // d=789 + + // Reconstruct original requesting URL + StringBuffer url = new StringBuffer(); + url.append(scheme).append("://").append(serverName); + + if ((serverPort != 80) && (serverPort != 443)) { + url.append(":").append(serverPort); + } + + url.append(contextPath).append(servletPath); + +// if (pathInfo != null) { +// url.append(pathInfo); +// } +// if (queryString != null) { +// url.append("?").append(queryString); +// } + return url.toString(); + } + public static void main(String[] args) { InputStream is = null;