Skip to content
Snippets Groups Projects
Commit e699f6f1 authored by felmer's avatar felmer
Browse files

LMS-445 Show UserFailureException properly

SVN: 8249
parent 8e513018
No related branches found
No related tags found
No related merge requests found
......@@ -23,6 +23,7 @@ import com.google.gwt.user.client.rpc.RemoteService;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ApplicationInfo;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Group;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SessionContext;
import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
/**
* Service interface for the generic GWT client.
......@@ -54,10 +55,11 @@ public interface IGenericClientService extends RemoteService
/**
* Returns a list of all groups which belong to the specified database instance.
*/
public List<Group> listGroups(String databaseInstanceCode);
public List<Group> listGroups(String databaseInstanceCode) throws UserFailureException;
/**
* Registers a new group with specified code and optional description and group leader ID.
*/
public void registerGroup(String groupCode, String descriptionOrNull, String groupLeaderOrNull);
public void registerGroup(String groupCode, String descriptionOrNull, String groupLeaderOrNull)
throws UserFailureException;
}
......@@ -20,8 +20,8 @@ import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.InvocationException;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.InvalidSessionException;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils;
import ch.systemsx.cisd.openbis.generic.client.web.client.exception.InvalidSessionException;
......@@ -46,6 +46,7 @@ public abstract class AbstractAsyncCallback<T> implements AsyncCallback<T>
public void onFailure(Throwable caught)
{
System.out.println(caught);
final String msg;
if (caught instanceof InvocationException)
{
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package ch.systemsx.cisd.openbis.generic.client.web.client.application.util;
package ch.systemsx.cisd.openbis.generic.client.web.client.exception;
/**
* This <code>UserFailureException</code> extension signals that a <code>Session</code> has
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package ch.systemsx.cisd.openbis.generic.client.web.client.application.util;
package ch.systemsx.cisd.openbis.generic.client.web.client.exception;
import com.google.gwt.user.client.rpc.IsSerializable;
......
......@@ -24,6 +24,7 @@ import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import ch.systemsx.cisd.common.exceptions.InvalidSessionException;
import ch.systemsx.cisd.common.exceptions.UserFailureException;
import ch.systemsx.cisd.common.logging.LogCategory;
import ch.systemsx.cisd.common.logging.LogFactory;
import ch.systemsx.cisd.common.servlet.IRequestContextProvider;
......@@ -37,6 +38,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.Group;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SessionContext;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.User;
import ch.systemsx.cisd.openbis.generic.client.web.server.util.GroupTranslater;
import ch.systemsx.cisd.openbis.generic.client.web.server.util.UserFailureExceptionTranslater;
import ch.systemsx.cisd.openbis.generic.shared.IGenericServer;
import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
......@@ -179,19 +181,32 @@ public class GenericClientService implements IGenericClientService
public List<Group> listGroups(String databaseInstanceCode)
{
DatabaseInstanceIdentifier identifier = new DatabaseInstanceIdentifier(databaseInstanceCode);
List<Group> result = new ArrayList<Group>();
List<GroupPE> groups = server.listGroups(getSessionToken(), identifier);
for (GroupPE group : groups)
try
{
result.add(GroupTranslater.translate(group));
DatabaseInstanceIdentifier identifier = new DatabaseInstanceIdentifier(databaseInstanceCode);
List<Group> result = new ArrayList<Group>();
List<GroupPE> groups = server.listGroups(getSessionToken(), identifier);
for (GroupPE group : groups)
{
result.add(GroupTranslater.translate(group));
}
return result;
} catch (UserFailureException e)
{
throw UserFailureExceptionTranslater.translate(e);
}
return result;
}
public void registerGroup(String groupCode, String descriptionOrNull, String groupLeaderOrNull)
{
server.registerGroup(getSessionToken(), groupCode, descriptionOrNull, groupLeaderOrNull);
try
{
String sessionToken = getSessionToken();
server.registerGroup(sessionToken, groupCode, descriptionOrNull, groupLeaderOrNull);
} catch (UserFailureException e)
{
throw UserFailureExceptionTranslater.translate(e);
}
}
}
/*
* Copyright 2008 ETH Zuerich, CISD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ch.systemsx.cisd.openbis.generic.client.web.server.util;
import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel;
import ch.systemsx.cisd.common.utilities.ClassUtils;
import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
/**
* Translator of server side {@link ch.systemsx.cisd.common.exceptions.UserFailureException} into
* GWT compatible {@link UserFailureException}.
*
* @author Franz-Josef Elmer
*/
public class UserFailureExceptionTranslater
{
private static final String WEB_CLIENT_EXCEPTIONS_PACKAGE =
getPackageName(UserFailureException.class);
private static String getPackageName(Class<?> clazz)
{
String fullName = clazz.getName();
return fullName.substring(0, fullName.length() - clazz.getSimpleName().length() - 1);
}
private UserFailureExceptionTranslater()
{
}
/**
* Converts any {@link ch.systemsx.cisd.common.exceptions.UserFailureException} or subclass of
* it to a <i>GWT</i> {@link UserFailureException} (or subclass of it if this one could be
* found in the same package).
*/
public static UserFailureException translate(ch.systemsx.cisd.common.exceptions.UserFailureException exception)
{
final String className = WEB_CLIENT_EXCEPTIONS_PACKAGE + exception.getClass().getSimpleName();
String message = exception.getMessage();
try
{
return ClassUtils.create(UserFailureException.class, className, message);
} catch (final CheckedExceptionTunnel e)
{
return new UserFailureException(message);
}
}
}
......@@ -29,7 +29,7 @@ import ch.systemsx.cisd.common.servlet.RequestContextProviderAdapter;
import ch.systemsx.cisd.lims.base.dto.GroupPE;
import ch.systemsx.cisd.lims.base.dto.PersonPE;
import ch.systemsx.cisd.lims.base.identifier.DatabaseInstanceIdentifier;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.UserFailureException;
import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException;
import ch.systemsx.cisd.openbis.generic.shared.IGenericServer;
import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment