Debashish,
I can see where you are coming from, but there are some situations where iBATIS is not as well-behaved. Situations where iBATIS error messages are not very helpful include basic things like a typo in the XML(a missing quote, or close tag), in which case the parser goes completely berserk in its interpretation of the xml file. Also, if the same result map is re-used in multiple places, or you have identical column names in different tables (or property names in different beans), the error messages shown are not specific enough to identify the culprit easily. Having a line number, or the name of the select statement, would be very helpful.

I wish I could provide examples, but the system I work on is not connected to the net, and getting data off is a rather painful process.
-Vadim

PS for the record--I do have logging turned on, it is indeed a lifesaver; and I've been using iBATIS for a few months now, so I've learned to recognize many of the things that were confusing at the beginning)


Debasish Dutta Roy wrote:
I would opt to disagree.
Following the suggestions would surely help. You can also put logs for iBATIS. There are many email threads about that.

I have made many minor to major mistakes in the sql-map files and have been pointed quite well by iBATIS.

E.g. I do get logs like this

com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in xml/Request.xml. --- The error occurred while applying a parameter map. --- Check the updateRequestNumber-InlineParameterMap. --- Check the parameter mapping for the 'number' property. --- Cause: java.sql.SQLException: Invalid column type
Caused by: java.sql.SQLException: Invalid column type

OR,

Caused by: com.ibatis.common.xml.NodeletException : Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: com.ibatis.common.exception.NestedRuntimeException : Error parsing XPath '/sqlMap/select'. Cause: com.ibatis.sqlmap.client.SqlMapException: There is no result map named Profile.get-PPI-select-values in this SqlMap.
Caused by:

And I exactly know where to go. Also, get the source code in your path and you can debug the source code also. That will surely help.

Best Regards
Debasish

On 7/18/06, *Ted Schrader* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    Hi Vadim,

    I feel your pain in quietly cursing iBATIS' seemingly mystical error
    messages when I was first starting out.

    I'm not aware of any way to make iBATIS' error mechanism more verbose.
    In practice, I do the following, along with your suggestion of
    commenting out parts of the map:

    1.  Keep the SQL Map XML files concise.
    2.  Separate SQL Map XML files into logical units.

    I reckon a good idea would be to start a catalog of various error
    messages on the wiki, or maybe even a full-blown debugging strategy
    section (I didn't see one after a quick perusal of the wiki today).
    Taking your example:

    Error:
    "no readable property named FOO"

    Problem:
    iBATIS cannot find the FOO property on the class specified in the
    result map.

    Resolution (the usual suspects):
    Does the class have a FOO property?
    Does the class adhere to JavaBeans specifications?
    Is the result map element free of typos?

    I suspect this could turn out to be an extremely helpful resource if
    maintained, but I personally lack the time to get this sort of thing
    started.  Any takers?

    Ted

    On 18/07/06, Vadim Grinshpun <[EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>> wrote:
    > Hi all,
    >
    > in a situation where iBATIS's parser throws an exception, is
    there a way
    > to tell which part of the sql map being parsed is actually the
    culprit?
    > The error shown in the exception is too vague, and doesn't point
    to a
    > particular file/line/xml element/whatnot. Specifically, I have a
    case of
    > a "no readable property named FOO", but the FOO in question is being
    > used in a number of places, a number of which have just been
    modified. I
    > could try to track it down by commenting out different parts of
    the map
    > to see which part(s) make the error go appear/go away, but I was
    hoping
    > there might be a more intelligent way to approach this.
    >
    > If there isn't a better way to do this currently, is it feasible
    to add
    > better error reporting facilities into the parser, and are there any
    > plans to do so?
    >
    > Thanks for any advice.
    > -Vadim
    >



Reply via email to