Added try/catch to prevent ClientAbortException java.net.SocketException Broken Pipe
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@117251 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
2b0bf9c3d0
commit
2d93244574
|
@ -161,13 +161,6 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
if (file == null) {
|
||||
logger.error("Error processing request in upload servlet: No file to upload");
|
||||
sendError(response, "Internal error: No file to upload");
|
||||
return;
|
||||
}*/
|
||||
|
||||
if (destinationId == null) {
|
||||
logger.error("Error processing request in upload servlet: No destination folder id found");
|
||||
sendError(response, "Internal error: No destination folder id found");
|
||||
|
@ -221,43 +214,21 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
String contentType = MimeTypeUtil.getMimeType(itemName, new BufferedInputStream(fileUploadIS));
|
||||
logger.trace("Content type (mime type): "+contentType + " unique name: "+itemName);
|
||||
|
||||
// System.out.println("Content type: "+contentType + " unique name: "+itemName);
|
||||
|
||||
String extension = FilenameUtils.getExtension(itemName);
|
||||
logger.trace("extension: "+extension);
|
||||
|
||||
// System.out.println("extension: "+extension);
|
||||
|
||||
|
||||
if(uploadType.compareTo(FILE)==0) {//IS FILE UPLOAD
|
||||
|
||||
boolean isZipFile = MimeTypeUtil.isZipContentType(contentType);
|
||||
|
||||
if(isZipFile && (extension.compareToIgnoreCase(D4ST)==0)){ //Create REPORT TEMPLATE
|
||||
|
||||
// String newItemName = "";
|
||||
//
|
||||
// if(!isOverwrite)
|
||||
// newItemName = itemName.substring(0,itemName.lastIndexOf(D4ST)-1); //remove extension
|
||||
// else
|
||||
// newItemName = item.getName();
|
||||
|
||||
// System.out.println("itemwithoutext " +itemwithoutext);
|
||||
|
||||
|
||||
String newItemName = itemName;
|
||||
|
||||
logger.trace("createTemplate: "+newItemName);
|
||||
createTemplate(request.getSession(), wa, newItemName, openInputStream(file), destinationFolder, response, isOverwrite);
|
||||
|
||||
}else if(isZipFile && (extension.compareToIgnoreCase(D4SR)==0)){ //Create REPORT
|
||||
|
||||
// String newItemName = "";
|
||||
//
|
||||
// if(!isOverwrite)
|
||||
// newItemName = itemName.substring(0,itemName.lastIndexOf(D4SR)-1); //remove extension
|
||||
// else
|
||||
// newItemName = item.getName();
|
||||
|
||||
// System.out.println("itemwithoutext " +itemwithoutext);
|
||||
|
||||
String newItemName = itemName;
|
||||
logger.trace("createReport: "+newItemName);
|
||||
createReport(request.getSession(), wa, newItemName, openInputStream(file), destinationFolder, response, isOverwrite);
|
||||
|
@ -298,11 +269,6 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
//} catch (IOException e) {
|
||||
// logger.error("Error creating elements", e);
|
||||
// sendError(response, "Internal error: "+e.getMessage());
|
||||
// return;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -336,23 +302,16 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
private void notifyUploadInSharedFolder(final HttpSession httpSession, final Workspace workspace, final String itemId, final String destinationFolderId, final boolean isOverwrite){
|
||||
|
||||
new Thread(){
|
||||
|
||||
public void run() {
|
||||
|
||||
WorkspaceItem sourceItem;
|
||||
try {
|
||||
sourceItem = workspace.getItem(itemId);
|
||||
String sourceSharedId = sourceItem.getIdSharedFolder();
|
||||
WorkspaceItem folderDestinationItem = workspace.getItem(destinationFolderId);
|
||||
|
||||
NotificationsUtil.checkSendNotifyChangedItemToShare(httpSession, sourceItem, sourceSharedId, folderDestinationItem,isOverwrite);
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("Error in notifyUploadInSharedFolder", e);
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}.start();
|
||||
|
@ -374,7 +333,6 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
|
||||
if(createdItem!=null){
|
||||
notifyUploadInSharedFolder(httpSession,wa,createdItem.getId(),destinationFolder.getId(), isOverwrite);
|
||||
|
||||
sendMessage(response, "File "+createdItem.getName()+" imported correctly in "+destinationFolder.getPath());
|
||||
}
|
||||
else
|
||||
|
@ -426,7 +384,6 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
report = wa.createReport(itemName, "", Calendar.getInstance(), Calendar.getInstance(), "", "", "", 0, "", stream, destinationFolder.getId());
|
||||
|
||||
notifyUploadInSharedFolder(httpSession,wa,report.getId(),destinationFolder.getId(), isOverwrite);
|
||||
|
||||
sendMessage(response, "File "+report.getName()+" imported correctly in "+destinationFolder.getPath());
|
||||
}
|
||||
else{ //CASE OVERWRITE
|
||||
|
@ -435,12 +392,10 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
if(rep!=null){
|
||||
|
||||
notifyUploadInSharedFolder(httpSession,wa,rep.getId(),destinationFolder.getId(), isOverwrite);
|
||||
|
||||
sendMessage(response, "File "+rep.getName()+" imported correctly in "+destinationFolder.getPath());
|
||||
}
|
||||
else
|
||||
sendError(response,"Internal error: Workspace Item Not Found");
|
||||
|
||||
}
|
||||
} catch (WrongDestinationException e) {
|
||||
logger.error("Error creating elements", e);
|
||||
|
@ -463,7 +418,6 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
template = wa.createReportTemplate(itemName, "", Calendar.getInstance(), Calendar.getInstance(), "", "", 0, "", stream, destinationFolder.getId());
|
||||
|
||||
notifyUploadInSharedFolder(httpSession,wa,template.getId(),destinationFolder.getId(), isOverwrite);
|
||||
|
||||
sendMessage(response, "File "+template.getName()+" imported correctly in "+destinationFolder.getPath());
|
||||
|
||||
}else{ //CASE OVERWRITE
|
||||
|
@ -472,12 +426,10 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
if(rep!=null){
|
||||
|
||||
notifyUploadInSharedFolder(httpSession,wa,rep.getId(),destinationFolder.getId(), isOverwrite);
|
||||
|
||||
sendMessage(response, "File "+rep.getName()+" imported correctly in "+destinationFolder.getPath());
|
||||
}
|
||||
else
|
||||
sendError(response,"Internal error: Workspace Item Not Found");
|
||||
|
||||
}
|
||||
|
||||
} catch (WrongDestinationException e) {
|
||||
|
@ -491,29 +443,48 @@ public class LocalUploadServlet extends HttpServlet {
|
|||
}
|
||||
|
||||
|
||||
protected void sendError(HttpServletResponse response, String message) throws IOException
|
||||
{
|
||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
HandlerResultMessage resultMessage = HandlerResultMessage.errorResult(message);
|
||||
response.getWriter().write(resultMessage.toString());
|
||||
response.flushBuffer();
|
||||
protected void sendError(HttpServletResponse response, String message) throws IOException{
|
||||
try {
|
||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
HandlerResultMessage resultMessage = HandlerResultMessage.errorResult(message);
|
||||
response.getWriter().write(resultMessage.toString());
|
||||
response.flushBuffer();
|
||||
} catch (IOException e){
|
||||
logger.warn("IOException class name: "+e.getClass().getSimpleName());
|
||||
if (e.getClass().getSimpleName().equals("ClientAbortException"))
|
||||
logger.warn("Skipping ClientAbortException: "+e.getMessage());
|
||||
else
|
||||
throw e; //Sending Exceptions
|
||||
}
|
||||
}
|
||||
|
||||
protected void sendMessage(HttpServletResponse response, String message) throws IOException
|
||||
{
|
||||
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||
HandlerResultMessage resultMessage = HandlerResultMessage.okResult(message);
|
||||
response.getWriter().write(resultMessage.toString());
|
||||
response.flushBuffer();
|
||||
protected void sendMessage(HttpServletResponse response, String message) throws IOException{
|
||||
try {
|
||||
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||
HandlerResultMessage resultMessage = HandlerResultMessage.okResult(message);
|
||||
response.getWriter().write(resultMessage.toString());
|
||||
response.flushBuffer();
|
||||
} catch (IOException e){
|
||||
logger.warn("IOException class name: "+e.getClass().getSimpleName());
|
||||
if (e.getClass().getSimpleName().equals("ClientAbortException"))
|
||||
logger.warn("Skipping ClientAbortException: "+e.getMessage());
|
||||
else
|
||||
throw e; //Sending Exceptions
|
||||
}
|
||||
}
|
||||
|
||||
protected void sendWarnMessage(HttpServletResponse response, String message) throws IOException
|
||||
{
|
||||
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||
HandlerResultMessage resultMessage = HandlerResultMessage.warnResult(message);
|
||||
response.getWriter().write(resultMessage.toString());
|
||||
response.flushBuffer();
|
||||
protected void sendWarnMessage(HttpServletResponse response, String message) throws IOException{
|
||||
try {
|
||||
response.setStatus(HttpServletResponse.SC_ACCEPTED);
|
||||
HandlerResultMessage resultMessage = HandlerResultMessage.warnResult(message);
|
||||
response.getWriter().write(resultMessage.toString());
|
||||
response.flushBuffer();
|
||||
} catch (IOException e){
|
||||
logger.warn("IOException class name: "+e.getClass().getSimpleName());
|
||||
if (e.getClass().getSimpleName().equals("ClientAbortException"))
|
||||
logger.warn("Skipping ClientAbortException: "+e.getMessage());
|
||||
else
|
||||
throw e; //Sending Exceptions
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,86 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.user.workspace;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.gcube.common.homelibrary.home.HomeLibrary;
|
||||
import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
|
||||
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
||||
import org.gcube.common.homelibrary.home.exceptions.UserNotFoundException;
|
||||
import org.gcube.common.homelibrary.home.workspace.Workspace;
|
||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
||||
import org.gcube.common.homelibrary.home.workspace.exceptions.WrongDestinationException;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.common.scope.impl.ScopeBean;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jul 14, 2015
|
||||
*/
|
||||
public class CreateSharedFolder {
|
||||
|
||||
protected static Logger logger = Logger.getLogger(CreateSharedFolder.class);
|
||||
// public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps/EcologicalModelling"; //PRODUCTION
|
||||
public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV
|
||||
|
||||
public static String USER = "francesco.mangiacrapa"; //PRODUCTION
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
try {
|
||||
ScopeBean scope = new ScopeBean(DEFAULT_SCOPE);
|
||||
ScopeProvider.instance.set(scope.toString());
|
||||
Workspace workspace = HomeLibrary.getHomeManagerFactory()
|
||||
.getHomeManager().getHome(USER)
|
||||
.getWorkspace();
|
||||
|
||||
String folderName = "Test Folder";
|
||||
String desc = "descr";
|
||||
List<String> listLogin = new ArrayList<String>();
|
||||
|
||||
listLogin.add("valentina.marioli");
|
||||
listLogin.add("massimiliano.assante");
|
||||
|
||||
WorkspaceSharedFolder sharedFolder = workspace.createSharedFolder(
|
||||
folderName, desc, listLogin, workspace.getRoot().getId());
|
||||
|
||||
if (sharedFolder == null)
|
||||
System.out.println("shared folder is null");
|
||||
|
||||
System.out
|
||||
.println("Shared folder created: " + sharedFolder.getId());
|
||||
} catch (InsufficientPrivilegesException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (ItemAlreadyExistException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (WrongDestinationException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (ItemNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (WorkspaceFolderNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (InternalErrorException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (HomeNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (UserNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -29,12 +29,12 @@ import org.gcube.common.scope.impl.ScopeBean;
|
|||
public class ItemRetrieve {
|
||||
|
||||
|
||||
public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps"; //PRODUCTION
|
||||
// public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV
|
||||
// public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps"; //PRODUCTION
|
||||
public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV
|
||||
public static String TEST_USER = "francesco.mangiacrapa";
|
||||
// public static String ITEMID = "63832213-098d-42d1-8774-89b6349764c0"; //Activity T3.4 working drafts/T2-EC-IMAR-HO-14-015 iMarine Sustainability WP - Business Model tools.pdf
|
||||
public static String ITEMID = "ec8bcf91-0969-450e-971c-a273c114d9e4";
|
||||
|
||||
public static String ITEMID = "d81d3a64-603f-4907-ae74-be8353211807";
|
||||
// d81d3a64-603f-4907-ae74-be8353211807
|
||||
protected static Logger logger = Logger.getLogger(ItemRetrieve.class);
|
||||
|
||||
|
||||
|
@ -46,9 +46,12 @@ public class ItemRetrieve {
|
|||
System.out.println("init HL");
|
||||
try {
|
||||
Workspace ws = getWorkspace();
|
||||
|
||||
retrieveFirstLevel(ws, ITEMID);
|
||||
|
||||
System.out.println("get workspace -> OK");
|
||||
WorkspaceItem item = ws.getItem(ITEMID);
|
||||
System.out.println("get item -> OK");
|
||||
System.out.println("get item id: "+item.getId()+", name: "+item.getName() +", parent: "+item.getParent());
|
||||
System.out.println(item);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
|
@ -82,7 +85,7 @@ public class ItemRetrieve {
|
|||
}
|
||||
|
||||
|
||||
private static void retrieveFirstLevel(Workspace ws){
|
||||
private static void retrieveFirstLevel(Workspace ws, String foundID){
|
||||
|
||||
try {
|
||||
|
||||
|
@ -109,6 +112,14 @@ public class ItemRetrieve {
|
|||
int othersCounter = 0;
|
||||
for (WorkspaceItem workspaceItem : children) {
|
||||
|
||||
if(foundID!=null && !foundID.isEmpty()){
|
||||
if(workspaceItem.getId().compareTo(foundID)==0){
|
||||
System.out.println("ITEM FOUND id: "+workspaceItem.getId()+", name: "+workspaceItem.getName());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
switch (workspaceItem.getType()) {
|
||||
|
||||
case FOLDER:
|
||||
|
|
Loading…
Reference in New Issue