Just my few cents to this.
I'm using something very similar to what Sebastien wrote but because I have
several different ModelObject Types where I need this, I wrote it a bit more
generic:
/**
* @param <T> Type of Object
*
* @author mrichter
*/
public abstract class ExceptionHandledModel<T> extends
LoadableDetachableModel<List<T>> {
private static final Logger LOG =
LoggerFactory.getLogger(ExceptionHandledModel.class);
@Override
protected List<T> load() {
try {
return this.onLoad();
} catch (Exception e) {
LOG.error("Failed to load List of Type " + T, e);
this.onError(e.getMessage());
}
return Collections.emptyList();
}
protected abstract List<T> onLoad() throws Exception;
protected abstract void onError(String message);
}
Best,
Marvin
-----Original Message-----
From: Sebastien [mailto:[email protected]]
Sent: Wednesday, January 22, 2014 2:43 PM
To: [email protected]
Subject: Re: Handling exceptions thrown by a model
Hi Olivier,
I simple way to achieve this is to have a (abstract) #onError method:
public abstract class MyModel extends
LoadableDetachableModel<List<MyObject>>
{
private static final long serialVersionUID = 1L;
private static final Logger LOG =
LoggerFactory.getLogger(DashboardModel.class);
public MyModel()
{
}
@Override
protected List<MyObject> load()
{
List<MyObject> list = new ArrayList<MyObject>();
try
{
//TODO fill list;
}
catch (TheException e)
{
this.error(e.getMessage(), e);
}
return list;
}
private void error(String message, Exception e)
{
LOG.error(message, e);
this.onError(message);
}
protected abstract void onError(String message); }
In MyPage
private MyModel newMyModel()
{
return new MyModel() {
private static final long serialVersionUID = 1L;
@Override
protected void onError(String message)
{
MyPage.this.error(message);
}
};
}
Hope this helps,
Sebastien.
On Wed, Jan 22, 2014 at 2:07 PM, Oliver B. Fischer <[email protected]>wrote:
> I have implementation of LoadableDetachableModel which might throw an
> exception in load(). Unfortunately this exception might be thrown
> while rendering the page.
>
> Currently I handle the exception with an AbstractRequestCycleListener
> added to the application itself.
>
> But don't like it because I don't want to add an
> AbstractRequestCycleListener for each possible exception.
>
> It is possible to handle specific exceptions page local? I tried to
> add a custom Behaviour implementation to my page but the onException()
> method was never called.
>
> Any idea how to handle such exceptions locally?
>
> Oliver
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]