You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2008/03/23 08:37:02 UTC

svn commit: r640168 - in /ibatis/trunk/java/mapper/mapper2: build/ src/com/ibatis/sqlmap/engine/mapping/parameter/ src/com/ibatis/sqlmap/engine/mapping/result/ src/com/ibatis/sqlmap/engine/type/ test/com/ibatis/sqlmap/maps/ test/scripts/ test/testdomain/

Author: cbegin
Date: Sun Mar 23 00:36:59 2008
New Revision: 640168

URL: http://svn.apache.org/viewvc?rev=640168&view=rev
Log:
Added support for Java 5 enumerations

Added:
    ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/EnumTypeHandler.java
      - copied, changed from r640008, ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/StringTypeHandler.java
    ibatis/trunk/java/mapper/mapper2/test/testdomain/DocType.java
Modified:
    ibatis/trunk/java/mapper/mapper2/build/version.properties
    ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/parameter/ParameterMap.java
    ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java
    ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/TypeHandlerFactory.java
    ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml
    ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/PrivateBook.xml
    ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql
    ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java

Modified: ibatis/trunk/java/mapper/mapper2/build/version.properties
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/build/version.properties?rev=640168&r1=640167&r2=640168&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/build/version.properties (original)
+++ ibatis/trunk/java/mapper/mapper2/build/version.properties Sun Mar 23 00:36:59 2008
@@ -1,5 +1,5 @@
 #Build version info
-#Sat Mar 22 23:32:54 MDT 2008
+#Sun Mar 23 00:00:08 MDT 2008
 version=2.3.1
-buildDate=2008/03/22 23\:32
-buildNum=708
+buildDate=2008/03/23 00\:00
+buildNum=709

Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/parameter/ParameterMap.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/parameter/ParameterMap.java?rev=640168&r1=640167&r2=640168&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/parameter/ParameterMap.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/parameter/ParameterMap.java Sun Mar 23 00:36:59 2008
@@ -120,7 +120,7 @@
 
     if (parameterMappings != null) {
       for (int i = 0; i < parameterMappings.length; i++) {
-        ParameterMapping mapping = (ParameterMapping) parameterMappings[i];
+        ParameterMapping mapping = parameterMappings[i];
         errorContext.setMoreInfo(mapping.getErrorString());
         if (mapping.isInputAllowed()) {
           setParameter(ps, mapping, parameters, i);

Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java?rev=640168&r1=640167&r2=640168&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java Sun Mar 23 00:36:59 2008
@@ -345,8 +345,7 @@
         columnValues[i] = getPrimitiveResultMappingValue(rs, mapping);
         if (columnValues[i] == null) {
           columnValues[i] = doNullMapping(columnValues[i], mapping);
-        }
-        else  {
+        } else {
           foundData = true;
         }
       }

Copied: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/EnumTypeHandler.java (from r640008, ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/StringTypeHandler.java)
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/EnumTypeHandler.java?p2=ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/EnumTypeHandler.java&p1=ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/StringTypeHandler.java&r1=640008&r2=640168&rev=640168&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/StringTypeHandler.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/EnumTypeHandler.java Sun Mar 23 00:36:59 2008
@@ -23,11 +23,17 @@
 /**
  * String implementation of TypeHandler
  */
-public class StringTypeHandler extends BaseTypeHandler implements TypeHandler {
+public class EnumTypeHandler extends BaseTypeHandler implements TypeHandler {
+
+  private Class type;
+
+  public EnumTypeHandler(Class type) {
+    this.type = type;
+  }
 
   public void setParameter(PreparedStatement ps, int i, Object parameter, String jdbcType)
       throws SQLException {
-    ps.setString(i, ((String) parameter));
+    ps.setString(i, parameter.toString());
   }
 
   public Object getResult(ResultSet rs, String columnName)
@@ -36,7 +42,7 @@
     if (rs.wasNull()) {
       return null;
     } else {
-      return s;
+      return Enum.valueOf(type, (String)s);
     }
   }
 
@@ -46,7 +52,7 @@
     if (rs.wasNull()) {
       return null;
     } else {
-      return s;
+      return Enum.valueOf(type, (String)s);
     }
   }
 
@@ -56,12 +62,12 @@
     if (cs.wasNull()) {
       return null;
     } else {
-      return s;
+      return Enum.valueOf(type, (String)s);
     }
   }
 
   public Object valueOf(String s) {
-    return s;
+    return Enum.valueOf(type, (String)s);
   }
 
-}
+}
\ No newline at end of file

Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/TypeHandlerFactory.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/TypeHandlerFactory.java?rev=640168&r1=640167&r2=640168&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/TypeHandlerFactory.java (original)
+++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/type/TypeHandlerFactory.java Sun Mar 23 00:36:59 2008
@@ -140,6 +140,9 @@
         handler = (TypeHandler) jdbcHandlerMap.get(null);
       }
     }
+    if (handler == null && Enum.class.isAssignableFrom(type)) {
+      handler = new EnumTypeHandler(type);
+    }
     return handler;
   }
 
@@ -161,7 +164,7 @@
    * @return - true if there is a TypeHandler
    */
   public boolean hasTypeHandler(Class type) {
-    return getTypeHandler(type) != null;
+    return getTypeHandler(type) != null || Enum.class.isAssignableFrom(type);
   }
 
   /**

Modified: ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml?rev=640168&r1=640167&r2=640168&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml (original)
+++ ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml Sun Mar 23 00:36:59 2008
@@ -19,8 +19,8 @@
     <result property="title" column="DOCUMENT_TITLE"/>
     <result property="type" column="DOCUMENT_TYPE"/>
     <discriminator column="DOCUMENT_TYPE" javaType="string" >
-      <subMap value="Book" resultMap="book"/>
-      <subMap value="Newspaper" resultMap="news"/>
+      <subMap value="BOOK" resultMap="book"/>
+      <subMap value="NEWSPAPER" resultMap="news"/>
     </discriminator>
   </resultMap>
 
@@ -30,8 +30,8 @@
     <result property="type" column="DOCUMENT_TYPE"/>
     <result property="attributes" resultMap="Documents.documentAttributes" />
     <discriminator column="DOCUMENT_TYPE" javaType="string" >
-      <subMap value="Book" resultMap="bookWithAttributes"/>
-      <subMap value="Newspaper" resultMap="newsWithAttributes"/>
+      <subMap value="BOOK" resultMap="bookWithAttributes"/>
+      <subMap value="NEWSPAPER" resultMap="newsWithAttributes"/>
     </discriminator>
   </resultMap>
   

Modified: ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/PrivateBook.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/PrivateBook.xml?rev=640168&r1=640167&r2=640168&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/PrivateBook.xml (original)
+++ ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/PrivateBook.xml Sun Mar 23 00:36:59 2008
@@ -13,7 +13,7 @@
       DOCUMENT_TYPE as type,
       DOCUMENT_PAGENUMBER as pages
     from DOCUMENTS
-    where DOCUMENT_TYPE = 'Book'
+    where DOCUMENT_TYPE = 'BOOK'
   </select>
 
 </sqlMap>

Modified: ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql?rev=640168&r1=640167&r2=640168&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql (original)
+++ ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql Sun Mar 23 00:36:59 2008
@@ -11,12 +11,12 @@
    PRIMARY KEY (DOCUMENT_ID)
 );
 
-INSERT INTO DOCUMENTS VALUES (1, 'The World of Null-A', 'Book', 55, null);
-INSERT INTO DOCUMENTS VALUES (2, 'Le Progres de Lyon', 'Newspaper', null , 'Lyon');
-INSERT INTO DOCUMENTS VALUES (3, 'Lord of the Rings', 'Book', 3587, null);
-INSERT INTO DOCUMENTS VALUES (4, 'Le Canard enchaine', 'Newspaper', null , 'Paris');
-INSERT INTO DOCUMENTS VALUES (5, 'Le Monde', 'Broadsheet', null , 'Paris');
-INSERT INTO DOCUMENTS VALUES (6, 'Foundation', 'Monograph', 557, null);
+INSERT INTO DOCUMENTS VALUES (1, 'The World of Null-A', 'BOOK', 55, null);
+INSERT INTO DOCUMENTS VALUES (2, 'Le Progres de Lyon', 'NEWSPAPER', null , 'Lyon');
+INSERT INTO DOCUMENTS VALUES (3, 'Lord of the Rings', 'BOOK', 3587, null);
+INSERT INTO DOCUMENTS VALUES (4, 'Le Canard enchaine', 'NEWSPAPER', null , 'Paris');
+INSERT INTO DOCUMENTS VALUES (5, 'Le Monde', 'BROADSHEET', null , 'Paris');
+INSERT INTO DOCUMENTS VALUES (6, 'Foundation', 'MONOGRAPH', 557, null);
 
 CREATE TABLE PERSON_DOCUMENTS (
   PERSON_ID INTEGER NOT NULL,

Added: ibatis/trunk/java/mapper/mapper2/test/testdomain/DocType.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/testdomain/DocType.java?rev=640168&view=auto
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/testdomain/DocType.java (added)
+++ ibatis/trunk/java/mapper/mapper2/test/testdomain/DocType.java Sun Mar 23 00:36:59 2008
@@ -0,0 +1,5 @@
+package testdomain;
+
+public enum DocType {
+  BOOK, NEWSPAPER, BROADSHEET, MONOGRAPH
+}

Modified: ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java?rev=640168&r1=640167&r2=640168&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java (original)
+++ ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java Sun Mar 23 00:36:59 2008
@@ -6,7 +6,7 @@
 
   private int id;
   private String title;
-  private String type;
+  private DocType type;
   private List attributes;
 
   public int getId() {
@@ -25,11 +25,11 @@
     this.title = title;
   }
 
-  public String getType() {
+  public DocType getType() {
     return type;
   }
 
-  public void setType(String type) {
+  public void setType(DocType type) {
     this.type = type;
   }