Having just run into a situation where I forgot to do an instanceof check on PageExpiredException myself, I now agree that your interface is a good thing to have.
Eelco Jonathan Locke wrote: > > > I agree in principle, but there's a flaw in this reasoning. All > exceptions cannot > be handled in the same way in terms of Wicket's internals. For example, > an internal > error page really does have to be handled differently to protect against > recursive > exceptions. In my proposal, the user is insulated from all this. I think > it's probably > better to expose the minimal set of exceptions that the user can easily > deal > with through factory methods like this. And I don't think we'll need more > factory > methods necessarily. The nice thing about the interface i proposed > is that it is actually completely general. There are special cases for a > couple > of the common exception types because they are logically different, but > the > newExceptionErrorPage can handle every other case. > > I think there's a balance here between generality (which as you point out > we > already have in onRuntimeException) and real convenience for a very common > use case (which this interface would give us). So I hear you, but I still > think my > approach is pretty good for end users. > > > Eelco Hillenius wrote: >> >> There's a couple of things I'm not crazy about. >> >> First of all, I'd much prefer just having factory method for >> exceptions, so that clients can choose themselves what are interesting >> exceptions and how to deal with that. That's way more flexible, as new >> cases wouldn't need new methods, and it would keep the interface >> minimal. >> >> Another thing is that this would mean more ways to do the same thing. >> We already have RequestCycle#onRuntimeException, which IMO is a decent >> facility. I'd actually prefer it to be a bit more flexible to just >> return a request target or something, so that you can send an error >> code or redirect to a bookmarkable page (for the sake of ending up >> with a better url). >> >> I'm not saying RequesCycle#onRuntimeException is the ultimate solution >> - though it suffices - but I do think we should try to get back to one >> mechanism rather to extend to more options. What I currently like >> about RequestCycle#onRuntimeException is that I feel it is the most >> logical location for it: a request is being processed by the request >> cycle, and something goes wrong... where would you look? >> >> And in general, imo we could have less factory interfaces of any type >> of favor of factory methods. ISessionFactory for instance could imo be >> removed. It's good and clear we have that method in webapplication for >> people to override, just like newSessionStore. >> >> my 2c, >> >> Eelco >> >> >> On 3/24/07, Jonathan Locke <[EMAIL PROTECTED]> wrote: >>> >>> >>> I posted this in response to a question on wicket-user and realized >>> this morning that I need to cross post this to wicket-dev since most >>> of it is about an RFE. >>> >>> --- >>> >>> Perhaps in some near-future version, we can have an error >>> page factory. I think that would be good because then you >>> don't need to get involved in the guts of Wicket to do something >>> pretty simple. How about this: >>> >>> public interface IErrorPageFactory >>> { >>> Page newAccessDeniedPage(AuthorizationException e); >>> Page newPageExpiredPage(PageExpiredException e); >>> Page newExceptionErrorPage(RuntimeException e); >>> Page newInternalErrorPage(RuntimeException e); >>> } >>> >>> then make a default implementation so people can override just the >>> pages they want to customize: >>> >>> public class AbstractErrorPageFactory implements IErrorPageFactory { >>> ... >>> } >>> >>> This would give users the ability to customize without the need to know >>> details like what's in >>> >>> AbstractRequestCycleProcessor.respond(RuntimeException e, >>> RequestCycle >>> requestCycle) >>> >>> most of which really is necessary to do handle exceptions right. >>> >>> Maybe some developer on the core team would like to handle this? >>> If so, we could remove a number of annoyingly non-general settings >>> from ApplicationSettings in favor of just getErrorPageFactory() >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/Error-page-factory-tf3459831.html#a9653220 >>> Sent from the Wicket - Dev mailing list archive at Nabble.com. >>> >>> >> >> > > -- View this message in context: http://www.nabble.com/Error-page-factory-tf3459831.html#a9722319 Sent from the Wicket - Dev mailing list archive at Nabble.com.