Mark Lundquist wrote:

Hi,

I've switched over to using the jx-macros.xml implementation of the forms template language (i.e. not using FormsTemplateTransformer anymore). One thing that is really troublesome is that if an exception gets thrown out of something called by the macros (typically class JXMacrosHelper), JXTG reports the error with line+column corresponding to the outermost macro, i.e. the <ft:form-template>. Needless to say that's not super-helpful.

I'm sort of stuck on 2.1.6 right now, so maybe this has been fixed since then...? If not, has anybody else noticed this? Sylvain... any way to fix?


The problem is that the current exception handling system can only report *one* location. Which one should be reported? The deepmost, or the topmost?

What we actually want is a location stack. And know what? Just right now (yeah, I know, it's sat. morning...) I'm working on adding "Cocoon stack traces" we talked about a long time ago, as this became really obvious after the changes I made to the CForms parsing stuff [1].

The idea is based on a Location class and a Locatable interface. A location holds an URI, a line and column number. Locatable objects know their location. These are sitemap statements, form widgets and bindings, jxtemplate instructions, etc...

When a problem occurs in a locatable object, it attaches its location to the exception it throws (ProcessingException also implements Locatable). We then just have to traverse the exception chain to get a Cocoon stacktrace along with the Java stacktrace.

Stay tuned.

Sylvain

[1] http://svn.apache.org/viewcvs.cgi?rev=226343&view=rev

--
Sylvain Wallez                        Anyware Technologies
http://people.apache.org/~sylvain     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director

Reply via email to