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