session expired handled

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@81048 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2013-09-04 13:30:17 +00:00
parent 0fa3e750cc
commit d8f2c9e483
9 changed files with 125 additions and 7 deletions

View File

@ -74,6 +74,8 @@ import org.gcube.portlets.user.workspace.client.event.SelectedItemEvent;
import org.gcube.portlets.user.workspace.client.event.SelectedItemEventHandler;
import org.gcube.portlets.user.workspace.client.event.SendMessageEvent;
import org.gcube.portlets.user.workspace.client.event.SendMessageEventHandler;
import org.gcube.portlets.user.workspace.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.workspace.client.event.SessionExpiredEventHandler;
import org.gcube.portlets.user.workspace.client.event.SmartFolderSelectedEvent;
import org.gcube.portlets.user.workspace.client.event.SmartFolderSelectedEventHandler;
import org.gcube.portlets.user.workspace.client.event.SubTreeLoadedEvent;
@ -362,6 +364,15 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
}
});
//********EVENTS TO NOTIFY SUBSCRIBERS
eventBus.addHandler(SessionExpiredEvent.TYPE, new SessionExpiredEventHandler() {
@Override
public void onSessionExpired(SessionExpiredEvent sessionExpiredEvent) {
notifySubscriber(sessionExpiredEvent);
}
});
eventBus.addHandler(WebDavUrlEvent.TYPE, new WebDavUrlEventHandler() {
@Override
@ -1656,6 +1667,12 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
sub.fileDownloaded(messageEvent.getItemIdentifier());
}else if(event instanceof SessionExpiredEvent){
SessionExpiredEvent sessionEvent = (SessionExpiredEvent) event;
sub.viewSessionExpiredPanel();
}

View File

@ -0,0 +1,36 @@
package org.gcube.portlets.user.workspace.client.event;
import org.gcube.portlets.user.workspace.client.interfaces.EventsTypeEnum;
import org.gcube.portlets.user.workspace.client.interfaces.GuiEventInterface;
import com.google.gwt.event.shared.GwtEvent;
/**
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Sep 4, 2013
*
*/
public class SessionExpiredEvent extends GwtEvent<SessionExpiredEventHandler> implements GuiEventInterface {
public static Type<SessionExpiredEventHandler> TYPE = new Type<SessionExpiredEventHandler>();
@Override
public Type<SessionExpiredEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(SessionExpiredEventHandler handler) {
handler.onSessionExpired(this);
}
/* (non-Javadoc)
* @see org.gcube.portlets.user.workspace.client.interfaces.GuiEventInterface#getKey()
*/
@Override
public EventsTypeEnum getKey() {
return EventsTypeEnum.SESSION_EXPIRED;
}
}

View File

@ -0,0 +1,17 @@
package org.gcube.portlets.user.workspace.client.event;
import com.google.gwt.event.shared.EventHandler;
/**
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Sep 4, 2013
*
*/
public interface SessionExpiredEventHandler extends EventHandler {
/**
* @param sessionExpiredEvent
*/
void onSessionExpired(SessionExpiredEvent sessionExpiredEvent);
}

View File

@ -26,5 +26,6 @@ public enum EventsTypeEnum
SELECTED_MESSAGE,
CREATE_NEW_MESSAGE,
REPLY_FORWARD_MESSAGE,
FILE_DOWNLAD_EVENT
FILE_DOWNLAD_EVENT,
SESSION_EXPIRED
}

View File

@ -38,5 +38,9 @@ public interface SubscriberInterface {
* @param itemIdentifier
*/
void fileDownloaded(String itemIdentifier);
/**
*
*/
void viewSessionExpiredPanel();
}

View File

@ -15,6 +15,7 @@ import org.gcube.portlets.user.workspace.client.model.ScopeModel;
import org.gcube.portlets.user.workspace.client.model.SmartFolderModel;
import org.gcube.portlets.user.workspace.client.model.SubTree;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
import org.gcube.portlets.user.workspace.shared.accounting.GxtAccountingField;
import com.google.gwt.user.client.rpc.RemoteService;
@ -31,9 +32,9 @@ public interface GWTWorkspaceService extends RemoteService{
public List<ScopeModel> getAllScope() throws Exception;
public List<FileModel> getFolderChildren(FolderModel folder) throws Exception;
public List<FileModel> getFolderChildren(FolderModel folder) throws Exception, SessionExpiredException;
public List<FileGridModel> getFolderChildrenForFileGrid(FileModel folder) throws Exception;
public List<FileGridModel> getFolderChildrenForFileGrid(FileModel folder) throws Exception, SessionExpiredException;
public FileDetailsModel getDetailsFile(FileModel item) throws Exception;
@ -156,7 +157,7 @@ public interface GWTWorkspaceService extends RemoteService{
* @return
* @throws Exception
*/
List<FileGridModel> getFolderChildrenForFileGridById(String folderId) throws Exception;
List<FileGridModel> getFolderChildrenForFileGridById(String folderId) throws Exception, SessionExpiredException;
String getShortUrl(String longUrl) throws Exception;

View File

@ -10,10 +10,12 @@ import org.gcube.portlets.user.workspace.client.constant.WorkspaceOperation;
import org.gcube.portlets.user.workspace.client.event.ExpandFolderEvent;
import org.gcube.portlets.user.workspace.client.event.MoveItemEvent;
import org.gcube.portlets.user.workspace.client.event.SelectedItemEvent;
import org.gcube.portlets.user.workspace.client.event.SessionExpiredEvent;
import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.client.model.FolderModel;
import org.gcube.portlets.user.workspace.client.resources.Resources;
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert;
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.data.ModelData;
@ -736,6 +738,12 @@ public class AsyncTreePanel extends LayoutContainer {
@Override
public void onFailure(Throwable caught) {
if(caught instanceof SessionExpiredException){
eventBus.fireEvent(new SessionExpiredEvent());
return;
}
new MessageBoxAlert("Error", ConstantsExplorer.SERVER_ERROR + " getting folder children items. " +ConstantsExplorer.TRY_AGAIN, null);
removeAllAndRecoveryRoot();

View File

@ -57,6 +57,7 @@ import org.gcube.portlets.user.workspace.server.util.StringUtil;
import org.gcube.portlets.user.workspace.server.util.UserUtil;
import org.gcube.portlets.user.workspace.server.util.WsUtil;
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
import org.gcube.portlets.user.workspace.shared.accounting.GxtAccountingEntryType;
import org.gcube.portlets.user.workspace.shared.accounting.GxtAccountingField;
import org.gcube.portlets.user.workspaceapplicationhandler.ApplicationReaderFromGenericResource;
@ -231,12 +232,15 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
}
@Override
public List<FileModel> getFolderChildren(FolderModel folder) throws Exception{
public List<FileModel> getFolderChildren(FolderModel folder) throws Exception, SessionExpiredException{
Workspace workspace;
if(isSessionExpired())
throw new SessionExpiredException();
try {
workspace = getWorkspace();
List<FileModel> listFileModels = new ArrayList<FileModel>();
@ -262,9 +266,12 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
}
@Override
public List<FileGridModel> getFolderChildrenForFileGrid(FileModel folder) throws Exception {
public List<FileGridModel> getFolderChildrenForFileGrid(FileModel folder) throws Exception, SessionExpiredException {
Workspace workspace;
if(isSessionExpired())
throw new SessionExpiredException();
try {
workspace = getWorkspace();
@ -309,6 +316,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
Workspace workspace;
if(isSessionExpired())
throw new SessionExpiredException();
try {
GCUBEClientLog logger = new GCUBEClientLog(GWTWorkspaceServiceImpl.class);

View File

@ -0,0 +1,24 @@
/**
*
*/
package org.gcube.portlets.user.workspace.shared;
/**
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* @Sep 4, 2013
*
*/
public class SessionExpiredException extends Exception{
/**
*
*/
private static final long serialVersionUID = 8423680645305738442L;
/**
*
*/
public SessionExpiredException() {
super("Session expired");
}
}