Using AOP like language - isn't this really an 'AroundInterceptor'? M
On 17/7/03 12:32 PM, "Cameron Braid" ([EMAIL PROTECTED]) penned the words: > I would think that only 1 abstract interceptor is required, though the one > that is provided doesn't allow the after method to respond if there is an > exception. > > Its your call. > >> -----Original Message----- >> From: [EMAIL PROTECTED] >> [mailto:[EMAIL PROTECTED] On >> Behalf Of Pat Lightbody >> Sent: Thursday, 17 July 2003 1:19 AM >> To: [EMAIL PROTECTED] >> Subject: Re: [OS-webwork] BeforeAfterInterceptor >> >> >> This looks fine, but why is it called ContainerInterceptor? >> >> This might be yet another example of why interceptor >> configurations are a good thing... couldn't this just be a >> paramter in xwork.xml? Also, couldn't subclasses also just >> define the behavior they want by toggling a switch. I'd >> rather have one base/abstract interceptor in XWork. >> >> -Pat >> >> ----- Original Message ----- >> From: "Cameron Braid" <[EMAIL PROTECTED]> >> To: <[EMAIL PROTECTED]> >> Sent: Tuesday, July 15, 2003 10:23 PM >> Subject: RE: [OS-webwork] BeforeAfterInterceptor >> >> >> I have implemented a ContainerInterceptor that always >> executed the after method, though it still allows the after >> processing to be conditional on an exception being thrown. >> >> Shall I add it to xwork ? >> >> 01 /* >> 02 * Created on 15/07/2003 >> 03 * >> 04 */ >> 05 package interceptor; >> 06 >> 07 import com.opensymphony.xwork.ActionInvocation; >> 08 import com.opensymphony.xwork.interceptor.Interceptor; >> 09 >> 10 /** >> 11 * >> 12 * An interceptor that executes an operation before and >> after the invocation, irrespective of whether or not 13 * an >> exception is thrown. 14 * 15 * @author CameronBraid 16 * >> 17 */ 18 public abstract class ContainerInterceptor >> implements Interceptor 19 { 20 >> 21 /** >> 22 * >> 23 */ >> 24 public ContainerInterceptor() >> 25 { >> 26 super(); >> 27 } >> 28 >> 29 /* (non-Javadoc) >> 30 * @see com.opensymphony.xwork.interceptor.Interceptor#destroy() >> 31 */ >> 32 public abstract void destroy(); >> 33 >> 34 /* (non-Javadoc) >> 35 * @see com.opensymphony.xwork.interceptor.Interceptor#init() >> 36 */ >> 37 public abstract void init(); >> 38 >> 39 public abstract void before(ActionInvocation invocation) throws >> Exception; >> 40 public abstract void after(ActionInvocation invocation, >> String result, >> Exception exception) throws Exception; >> 41 >> 42 /* (non-Javadoc) >> 43 * @see >> com.opensymphony.xwork.interceptor.Interceptor#intercept(com.o >> pensymphony.xw >> ork.ActionInvocation) >> 44 */ >> 45 public String intercept(ActionInvocation invocation) >> throws Exception >> 46 { >> 47 before(invocation); >> 48 >> 49 Exception exception = null; >> 50 String result = null; >> 51 >> 52 try >> 53 { >> 54 result = invocation.invoke(); >> 55 } >> 56 catch (Exception e) >> 57 { >> 58 exception = e; >> 59 } >> 60 >> 61 after(invocation, result, exception); >> 62 >> 63 if (exception == null) >> 64 { >> 65 return result; >> 66 } >> 67 else >> 68 { >> 69 throw exception; >> 70 } >> 71 >> 72 } >> 73 >> 74 } >> >> -----Original Message----- >> From: [EMAIL PROTECTED] >> [mailto:[EMAIL PROTECTED] On >> Behalf Of Jason Carreira >> Sent: Tuesday, 15 July 2003 10:48 PM >> To: [EMAIL PROTECTED] >> Subject: RE: [OS-webwork] BeforeAfterInterceptor >> >> >> I don't think this is good to do as a general rule. Most >> times you want to stop processing when an exception occurs. >> You could implement this behavior with a couple of carefully >> placed interceptors. >> >> -----Original Message----- >> From: Cameron Braid [mailto:[EMAIL PROTECTED] >> Sent: Tuesday, July 15, 2003 5:08 AM >> To: [EMAIL PROTECTED] >> Subject: [OS-webwork] BeforeAfterInterceptor >> >> >> When extending the BeforeAfterInterceptor, if the invocation >> throws an exception, the after method isn't called. >> >> Should the BeforeAfterInterceptor catch the exception, run >> the after() and then re-throw the exception ? >> >> Any thoughts anyone ? >> >> >> >> >> ------------------------------------------------------- >> This SF.net email is sponsored by: VM Ware >> With VMware you can run multiple operating systems on a >> single machine. WITHOUT REBOOTING! Mix Linux / Windows / >> Novell virtual machines at the same time. Free trial click >> here: http://www.vmware.com/wl/offer/345/0 >> _______________________________________________ >> Opensymphony-webwork mailing list >> [EMAIL PROTECTED] >> https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork >> > > > > ------------------------------------------------------- > This SF.net email is sponsored by: VM Ware > With VMware you can run multiple operating systems on a single machine. > WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the > same time. Free trial click here: http://www.vmware.com/wl/offer/345/0 > _______________________________________________ > Opensymphony-webwork mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork ------------------------------------------------------- This SF.net email is sponsored by: VM Ware With VMware you can run multiple operating systems on a single machine. WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the same time. Free trial click here: http://www.vmware.com/wl/offer/345/0 _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork