[
http://issues.apache.org/jira/browse/IBATIS-361?page=comments#action_12445701 ]
Reuben Firmin commented on IBATIS-361:
--------------------------------------
Working back up the trace, I found the bug. It's in GenericProbe#151 - the
logic seems to be totally broken.
public Class getPropertyTypeForGetter(Object object, String name) {
if (object instanceof Class) {
return getClassPropertyTypeForGetter((Class) object, name);
} else if (object instanceof org.w3c.dom.Document) {
return DOM_PROBE.getPropertyTypeForGetter(object, name);
} else if (name.indexOf('[') > -1) {
return BEAN_PROBE.getIndexedType(object,name);
} else {
return BEAN_PROBE.getPropertyTypeForGetter(object, name);
}
}
Name in this case is physicalAddress.addressLine[0], but of course the third
branch is never reached, since all objects are instanceof Class.
> Problem addressing list index in a parameter declaration
> ---------------------------------------------------------
>
> Key: IBATIS-361
> URL: http://issues.apache.org/jira/browse/IBATIS-361
> Project: iBatis for Java
> Issue Type: Bug
> Components: SQL Maps
> Affects Versions: 2.2.0
> Reporter: Reuben Firmin
>
> I have the following code:
> public class Buyer
> {
> ...
> private Address mailingAddress;
>
> ...
> public class Address
> {
> private List<String> addressLine;
> ...
> public List<String> getAddressLine()
> {
> In my insert statement, I'm addressing this as:
> #mailingAddress.addressLine[0]#, #mailingAddress.addressLine[1]#,
> When I start the webapp, I'm getting this exception:
> ...
> [11:08:02.736] Caused by: com.ibatis.common.beans.ProbeException: There is no
> READABLE property named 'addressLine[0]' in class
> 'com.copart.c2.buyer.bo.Address'
> [11:08:02.736] at
> com.ibatis.common.beans.ClassInfo.getGetterType(ClassInfo.java:240)
> [11:08:02.736] at
> com.ibatis.common.beans.GenericProbe.getClassPropertyTypeForGetter(GenericProbe.java:221)
> [11:08:02.736] at
> com.ibatis.common.beans.GenericProbe.getPropertyTypeForGetter(GenericProbe.java:153)
> [11:08:02.736] at
> com.ibatis.sqlmap.engine.mapping.parameter.InlineParameterMapParser.resolveTypeHandler(InlineParameterMapParser.java:229)
> [11:08:02.736] at
> com.ibatis.sqlmap.engine.mapping.parameter.InlineParameterMapParser.newParseMapping(InlineParameterMapParser.java:138)
> [11:08:02.736] at
> com.ibatis.sqlmap.engine.mapping.parameter.InlineParameterMapParser.parseInlineParameterMap(InlineParameterMapParser.java:50)
> [11:08:02.736] at
> com.ibatis.sqlmap.engine.builder.xml.SqlStatementParser.applyInlineParameterMap(SqlStatementParser.java:428)
> [11:08:02.736] at
> com.ibatis.sqlmap.engine.builder.xml.SqlStatementParser.processSqlStatement(SqlStatementParser.java:216)
> [11:08:02.736] at
> com.ibatis.sqlmap.engine.builder.xml.SqlStatementParser.parseGeneralStatement(SqlStatementParser.java:121)
> [11:08:02.736] at
> com.ibatis.sqlmap.engine.builder.xml.SqlMapParser$19.process(SqlMapParser.java:553)
> [11:08:02.736] at
> com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:111)
> I will debug further and will append to this bug.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira