Re: Handling exceptions thrown by a model

2014-01-22 Thread Sebastien
Hi Olivier,

I simple way to achieve this is to have a (abstract) #onError method:

public abstract class MyModel extends
LoadableDetachableModelListMyObject
{
private static final long serialVersionUID = 1L;
private static final Logger LOG =
LoggerFactory.getLogger(DashboardModel.class);

public MyModel()
{
}

@Override
protected ListMyObject load()
{
ListMyObject list = new ArrayListMyObject();

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 mails...@swe-blog.netwrote:

 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: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




RE: Handling exceptions thrown by a model

2014-01-22 Thread Richter, Marvin
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 ExceptionHandledModelT extends 
LoadableDetachableModelListT {

private static final Logger LOG = 
LoggerFactory.getLogger(ExceptionHandledModel.class);

@Override
protected ListT 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 ListT onLoad() throws Exception;
protected abstract void onError(String message);
}

Best,
Marvin


-Original Message-
From: Sebastien [mailto:seb...@gmail.com] 
Sent: Wednesday, January 22, 2014 2:43 PM
To: users@wicket.apache.org
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
LoadableDetachableModelListMyObject
{
private static final long serialVersionUID = 1L;
private static final Logger LOG =
LoggerFactory.getLogger(DashboardModel.class);

public MyModel()
{
}

@Override
protected ListMyObject load()
{
ListMyObject list = new ArrayListMyObject();

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 mails...@swe-blog.netwrote:

 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: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org