[ http://nagoya.apache.org/jira/browse/IBATIS-30?page=history ]

Clinton Begin reassigned IBATIS-30:
-----------------------------------

    Assign To: Clinton Begin

> A bug in the dropCase method of Classinfo.java causes problem for property 
> that has an uppercase letter on the 2nd character
> ----------------------------------------------------------------------------------------------------------------------------
>
>          Key: IBATIS-30
>          URL: http://nagoya.apache.org/jira/browse/IBATIS-30
>      Project: iBatis for Java
>         Type: Bug
>   Components: SQL Maps
>     Versions: 2.0.8
>     Reporter: leo chan
>     Assignee: Clinton Begin

>
> There is a bug in the following dropCase method of the Classinfo.java in 
> com.ibatis.common.beans package.  The line that conatins:
>  !Character.isUpperCase(name.charAt(1) 
> should be 
> !Character.isUpperCase(name.charAt(0) instead. 
> The code is trying to change the first character of the name to toLowerCase 
> (not the second letter).  Therefore, it should check the first character of 
> the name which is indexed by 0 (not 1) and to see if it is lowerCase.
> Here is the section of the Classinfo.java that contains the bug:
> private static String dropCase(String name) {
>     if (name.startsWith("is")) {
>       name = name.substring(2);
>     } else if (name.startsWith("get") || name.startsWith("set")) {
>       name = name.substring(3);
>     } else {
>       throw new ProbeException("Error parsing property name '" + name + "'.  
> Didn't start with 'is', 'get' or 'set'.");
>     }
>  
>     if (name.length() == 1 || (name.length() > 1 && 
> !Character.isUpperCase(name.charAt(1)))) {
>       name = name.substring(0, 1).toLowerCase(Locale.US) + name.substring(1);
>     }
>  
>     return name;
>   }
> This will cause a problem for property that has second letter as upper case 
> letter.  For example, if you have a property called "aRank".  The getter and 
> setter for that property will be getARank and setARank.  The code will first 
> extract the name as "ARank".  Then it will check the second character instead 
> of the first character and see if it is lowercase.  If it is, it will not 
> change the first character to lower case.  So it will still be "ARank".  So 
> the problem will complain the if can't find the writable property called 
> "aRank".  
> This bug only found in 2.0.  In 1.0, Classinfo.java doesn't contain the 
> method called dropCase.
> Submitted by
> Leo Chan
> SRA International

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira

Reply via email to