capitalized name of bean's property cased error?
------------------------------------------------

                 Key: IBATIS-329
                 URL: http://issues.apache.org/jira/browse/IBATIS-329
             Project: iBatis for Java
          Issue Type: Bug
          Components: SQL Maps
    Affects Versions: 2.1.7
            Reporter: takaya yuko


Hello,
Using capitalized letter on bean's property-name leads the following
error: See next stack trace & source, is this valid?

(conditions)

      public class A {

           /* property's name:indexOf(1) == UpperCase */
           private String eMail;

           public String getEMail(){
               return eMail;
           }

           public void setEMail(String email) {

               eMail = email;
           }

      }

        /* use bean as resultMap */
        <resultMap id="result" class="A">

          <result property="eMail" column="EMAIL" columnIndex="1"
                               javaType="java.lang.String"/>

        </resultMap>

              <statement id="search_A" resultMap="result">
                      SELECT
                          EMAIL
                      FROM
                        A_TABLE
              </statement>

(results)

--- Cause: com.ibatis.common.beans.ProbeException:
      There is no READABLE property named 'eMail' in class 'A'


(our resolution)

      public class A {

          private String eMail;

          /* method'name:get + property's name */
          geteMail(){
             return EMail;
          }

           seteMail(String email) {

                           eMail = email;
          }

      }


iBATIS_DBL-2.1.7.597.zip (iBATIS Java 2.1.7). i suppose
that this code prevent to exchange "getter-name" to "property-name".

i took a provisional countermeasure changing "get + property-name"
(e.g: gateMail), and avoid this error now.
but i'm not sure whether this changes fits your spec or not.
could you tell me about that?

---com.ibatis.common.beans.ClassInfo----------------------------------

 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;
 }

----------------------------------------------------------------------

thanks in advance,

-- 
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

        

Reply via email to