Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 32692 invoked from network); 1 Feb 2010 08:21:34 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 1 Feb 2010 08:21:34 -0000 Received: (qmail 59128 invoked by uid 500); 1 Feb 2010 08:21:34 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 59085 invoked by uid 500); 1 Feb 2010 08:21:34 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 59076 invoked by uid 99); 1 Feb 2010 08:21:33 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Feb 2010 08:21:33 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Feb 2010 08:21:31 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 1994723889FA; Mon, 1 Feb 2010 08:21:10 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r905210 - in /harmony/enhanced/classlib/trunk/modules/sql/src: main/java/javax/sql/rowset/SqlUtil.java test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java Date: Mon, 01 Feb 2010 08:21:09 -0000 To: commits@harmony.apache.org From: zhoukevin@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100201082110.1994723889FA@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: zhoukevin Date: Mon Feb 1 08:21:09 2010 New Revision: 905210 URL: http://svn.apache.org/viewvc?rev=905210&view=rev Log: Fix SqlUtil.validateType(int) method by using reflection of Types.class to search those public&static&final&int fields, and add a test case Modified: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java Modified: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java?rev=905210&r1=905209&r2=905210&view=diff ============================================================================== --- harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java (original) +++ harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java Mon Feb 1 08:21:09 2010 @@ -17,49 +17,33 @@ package javax.sql.rowset; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.sql.SQLException; import java.sql.Types; import org.apache.harmony.sql.internal.nls.Messages; class SqlUtil { - /* - * FIXME:Validate column types is defined by java.sql.Types, current - * implementation is ugly, need to find an elegant and effient way to check - * all constants defined in java.util.sql.Types - */ + static void validateType(int type) throws SQLException { - switch (type) { - case Types.ARRAY: - case Types.BIGINT: - case Types.BINARY: - case Types.BIT: - case Types.BLOB: - case Types.BOOLEAN: - case Types.CHAR: - case Types.CLOB: - case Types.DATALINK: - case Types.DATE: - case Types.DECIMAL: - case Types.DISTINCT: - case Types.DOUBLE: - case Types.FLOAT: - case Types.INTEGER: - case Types.JAVA_OBJECT: - case Types.LONGVARBINARY: - case Types.LONGVARCHAR: - case Types.NULL: - case Types.NUMERIC: - case Types.OTHER: - case Types.REAL: - case Types.REF: - case Types.SMALLINT: - case Types.STRUCT: - case Types.TIME: - case Types.TIMESTAMP: - case Types.TINYINT: - case Types.VARBINARY: - case Types.VARCHAR: - return; + try { + int modifiers = -1; + Field[] fields = Types.class.getFields(); + for (int index = 0; index < fields.length; index++) { + // field should be int type + if (int.class == fields[index].getType()) { + modifiers = fields[index].getModifiers(); + // field should be static and final + if (Modifier.isStatic(modifiers) + && Modifier.isFinal(modifiers)) { + if (type == fields[index].getInt(Types.class)) { + return; + } + } + } + } + } catch (Exception e) { + // ignored: this should never happen } throw new SQLException(Messages.getString("sql.28")); //$NON-NLS-1$ } Modified: harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java?rev=905210&r1=905209&r2=905210&view=diff ============================================================================== --- harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java (original) +++ harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java Mon Feb 1 08:21:09 2010 @@ -826,6 +826,13 @@ } catch (SQLException e) { // expected } + + try { + metaDataImpl.setColumnType(2, 59); + fail("should throw SQLException"); + } catch (SQLException e) { + // expected + } } /**