#665 incident is fixed. Url redirect is implemented in the event of storage error
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@80964 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
55b477c31c
commit
9f7c3095f6
|
@ -2034,7 +2034,14 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
|||
|
||||
@Override
|
||||
public void onSuccess(WindowOpenParameter windowOpenParam) {
|
||||
com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+"?"+windowOpenParam.getParameters(), windowOpenParam.getOption(), "");
|
||||
String params = "?"+windowOpenParam.getParameters();
|
||||
|
||||
if(params.length()>1)
|
||||
params+="&";
|
||||
|
||||
params+=ConstantsExplorer.REDIRECTONERROR+"="+windowOpenParam.isRedirectOnError();
|
||||
|
||||
com.google.gwt.user.client.Window.open(ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE+params, windowOpenParam.getOption(), "");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ public class RequestBuilderWorkspaceValidateItem {
|
|||
}else{ //OK STATUS
|
||||
|
||||
if(callback!=null)
|
||||
callback.onSuccess(new WindowOpenParameter(name, "", params));
|
||||
callback.onSuccess(new WindowOpenParameter(name, "", params, true));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,9 +10,10 @@ package org.gcube.portlets.user.workspace.client.util;
|
|||
*/
|
||||
public class WindowOpenParameter {
|
||||
|
||||
String option;
|
||||
String parameters;
|
||||
String itemName;
|
||||
private String option;
|
||||
private String parameters;
|
||||
private String itemName;
|
||||
private boolean redirectOnError;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -26,12 +27,14 @@ public class WindowOpenParameter {
|
|||
* @param option the name of the window (e.g. "_blank")
|
||||
* @param itemName
|
||||
* @param parameters param=value¶m1=value1&...
|
||||
* @param redirectOnError if true execute a redirect on fake URL
|
||||
*/
|
||||
public WindowOpenParameter(String option, String itemName, String parameters) {
|
||||
public WindowOpenParameter(String option, String itemName, String parameters, boolean redirectOnError) {
|
||||
super();
|
||||
this.option = option;
|
||||
this.itemName = itemName;
|
||||
this.parameters = parameters;
|
||||
this.redirectOnError = redirectOnError;
|
||||
}
|
||||
|
||||
|
||||
|
@ -60,6 +63,16 @@ public class WindowOpenParameter {
|
|||
public void setItemName(String itemName) {
|
||||
this.itemName = itemName;
|
||||
}
|
||||
|
||||
|
||||
public boolean isRedirectOnError() {
|
||||
return redirectOnError;
|
||||
}
|
||||
|
||||
|
||||
public void setRedirectOnError(boolean redirectOnError) {
|
||||
this.redirectOnError = redirectOnError;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -271,6 +271,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||
// IOUtils.copy(externalFile.getData(), resp.getOutputStream());
|
||||
is = externalFile.getData();
|
||||
|
||||
// //REMOVE THIS -- TODO TEMPORARY SOLUTION
|
||||
// if(is==null){
|
||||
// logger.error("Error during get input stream: IS is null");
|
||||
// throw new Exception("Item is not reachable");
|
||||
// }
|
||||
|
||||
out = resp.getOutputStream();
|
||||
IOUtils.copy(is, out);
|
||||
|
||||
|
@ -278,7 +285,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
out.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("Error during external item sending "+itemId,e);
|
||||
logger.error("Error during external item retrieving "+itemId,e);
|
||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
return;
|
||||
|
@ -304,13 +311,21 @@ public class DownloadServlet extends HttpServlet{
|
|||
// IOUtils.copy(externalImage.getData(), resp.getOutputStream());
|
||||
OutputStream out = resp.getOutputStream();
|
||||
InputStream is = externalImage.getData();
|
||||
|
||||
|
||||
// //REMOVE THIS -- TODO TEMPORARY SOLUTION
|
||||
// if(is==null){
|
||||
// logger.error("Error during get input stream: IS is null");
|
||||
// throw new Exception("Item is not reachable");
|
||||
// }
|
||||
|
||||
IOUtils.copy(is, out);
|
||||
is.close();
|
||||
|
||||
out.close();
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
logger.error("Error during item compression "+itemId,e);
|
||||
logger.error("Error during item retrieving "+itemId,e);
|
||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
return;
|
||||
|
@ -342,7 +357,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
out.close();
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
logger.error("Error during item compression "+itemId,e);
|
||||
logger.error("Error during item retrieving "+itemId,e);
|
||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
return;
|
||||
|
@ -392,7 +407,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
tmpZip.delete();
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
logger.error("Error during item compression "+itemId,e);
|
||||
logger.error("Error during item retrieving "+itemId,e);
|
||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
return;
|
||||
|
@ -419,7 +434,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
tmpZip.delete();
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
logger.error("Error during item compression "+itemId,e);
|
||||
logger.error("Error during item retrieving "+itemId,e);
|
||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
return;
|
||||
|
@ -466,7 +481,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
}
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
logger.error("Error during item compression "+itemId,e);
|
||||
logger.error("Error during item retrieving "+itemId,e);
|
||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
return;
|
||||
|
@ -490,7 +505,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
logger.error("Error during item compression "+itemId,e);
|
||||
logger.error("Error during item retrieving "+itemId,e);
|
||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||
return;
|
||||
|
@ -583,6 +598,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
protected void handleError(boolean urlRedirectOnError, HttpServletRequest req, HttpServletResponse resp, String itemId, String message) throws IOException{
|
||||
|
||||
logger.warn("Handle error occurred: "+message);
|
||||
logger.trace("urlRedirectOnError is active: "+urlRedirectOnError);
|
||||
if(urlRedirectOnError){
|
||||
urlRedirect(req, resp, itemId);
|
||||
}else
|
||||
|
@ -594,7 +610,13 @@ public class DownloadServlet extends HttpServlet{
|
|||
{
|
||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
HandlerResultMessage resultMessage = HandlerResultMessage.errorResult(message);
|
||||
response.getWriter().write(resultMessage.toString());
|
||||
logger.trace("error message: "+resultMessage);
|
||||
logger.trace("writing response...");
|
||||
StringReader sr = new StringReader(resultMessage.toString());
|
||||
IOUtils.copy(sr, response.getOutputStream());
|
||||
|
||||
// response.getWriter().write(resultMessage.toString());
|
||||
logger.trace("response writed");
|
||||
response.flushBuffer();
|
||||
}
|
||||
|
||||
|
@ -626,7 +648,7 @@ public class DownloadServlet extends HttpServlet{
|
|||
|
||||
String requestUrl = getRequestURL(req) +fakePath;
|
||||
logger.trace("Url redirect on: "+requestUrl);
|
||||
System.out.println("Url redirect on: "+requestUrl);
|
||||
// System.out.println("Url redirect on: "+requestUrl);
|
||||
response.sendRedirect(response.encodeRedirectURL(requestUrl));
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue