Author: niallp Date: Fri Jul 13 07:02:09 2007 New Revision: 556003 URL: http://svn.apache.org/viewvc?view=rev&rev=556003 Log: Improve the test (proxy) ResultSet and ResultSetMetaData implementations: - Provide ability to specify the ResultSetMetaData impl used by TestResultSet - enable getObject(index) to work in TestResultSet - Add a static proxy factory method to TestResultSetMetaData that allows the invocation handler to be specified
Modified: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSet.java jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSetMetaData.java Modified: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSet.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSet.java?view=diff&rev=556003&r1=556002&r2=556003 ============================================================================== --- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSet.java (original) +++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSet.java Fri Jul 13 07:02:09 2007 @@ -67,6 +67,10 @@ */ protected long timestamp = System.currentTimeMillis(); + /** + * Meta data for the result set. + */ + protected ResultSetMetaData resultSetMetaData; /** * Factory method for creating [EMAIL PROTECTED] ResultSet} proxies. @@ -74,11 +78,37 @@ * @return A result set proxy */ public static ResultSet createProxy() { + return TestResultSet.createProxy(TestResultSetMetaData.createProxy()); + } + + /** + * Factory method for creating [EMAIL PROTECTED] ResultSet} proxies. + * + * @param resultSetMetaData The result set meta data + * @return A result set proxy + */ + public static ResultSet createProxy(ResultSetMetaData resultSetMetaData) { ClassLoader classLoader = ResultSet.class.getClassLoader(); Class[] interfaces = new Class[] { ResultSet.class }; - InvocationHandler invocationHandler = new TestResultSet(); + InvocationHandler invocationHandler = new TestResultSet(resultSetMetaData); return (ResultSet)Proxy.newProxyInstance(classLoader, interfaces, invocationHandler); } + + /** + * Create a proxy ResultSet. + */ + public TestResultSet() { + this(TestResultSetMetaData.createProxy()); + } + + /** + * Create a proxy ResultSet with the specified meta data. + * + * @param resultSetMetaData The result set meta data + */ + public TestResultSet(ResultSetMetaData resultSetMetaData) { + this.resultSetMetaData = resultSetMetaData; + } /** * Handles method invocation on the ResultSet proxy. @@ -96,7 +126,13 @@ } if ("getMetaData".equals(methodName)) { return getMetaData(); } if ("getObject".equals(methodName)) { - return getObject((String)args[0]); + String columnName = null; + if (args[0] instanceof Integer) { + columnName = resultSetMetaData.getColumnName(((Integer)args[0]).intValue()); + } else { + columnName = (String)args[0]; + } + return getObject(columnName); } if ("next".equals(methodName)) { return (next() ? Boolean.TRUE : Boolean.FALSE); } if ("updateObject".equals(methodName)) { @@ -117,7 +153,7 @@ public ResultSetMetaData getMetaData() throws SQLException { - return TestResultSetMetaData.createProxy(); + return resultSetMetaData; } Modified: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSetMetaData.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSetMetaData.java?view=diff&rev=556003&r1=556002&r2=556003 ============================================================================== --- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSetMetaData.java (original) +++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/TestResultSetMetaData.java Fri Jul 13 07:02:09 2007 @@ -29,7 +29,7 @@ /** * <p>Mock object that implements enough of * <code>java.sql.ResultSetMetaData</code> - * to exercise the [EMAIL PROTECTED] ResultSetDyaClass} functionality.</p> + * to exercise the [EMAIL PROTECTED] ResultSetDynaClass} functionality.</p> * * @author Craig R. McClanahan * @version $Revision$ $Date$ @@ -45,19 +45,19 @@ * <p>Array of column names and class names for metadata.</p> */ protected String metadata[][] = { - { "bigDecimalProperty", "java.math.BigDecimal" }, + { "bigDecimalProperty", java.math.BigDecimal.class.getName() }, { "booleanProperty", Boolean.class.getName() }, { "byteProperty", Byte.class.getName() }, - { "dateProperty", "java.sql.Date" }, + { "dateProperty", java.sql.Date.class.getName() }, { "doubleProperty", Double.class.getName() }, { "floatProperty", Float.class.getName() }, { "intProperty", Integer.class.getName() }, { "longProperty", Long.class.getName() }, - { "nullProperty", "java.lang.String" }, + { "nullProperty", String.class.getName() }, { "shortProperty", Short.class.getName() }, - { "stringProperty", "java.lang.String" }, - { "timeProperty", "java.sql.Time" }, - { "timestampProperty", "java.sql.Timestamp" }, + { "stringProperty", String.class.getName() }, + { "timeProperty", java.sql.Time.class.getName() }, + { "timestampProperty", java.sql.Timestamp.class.getName() }, }; @@ -67,9 +67,17 @@ * @return A result set meta data proxy */ public static ResultSetMetaData createProxy() { + return TestResultSetMetaData.createProxy(new TestResultSetMetaData()); + } + + /** + * Factory method for creating [EMAIL PROTECTED] ResultSetMetaData} proxies. + * @param invocationHandler Invocation Handler + * @return A result set meta data proxy + */ + public static ResultSetMetaData createProxy(InvocationHandler invocationHandler) { ClassLoader classLoader = ResultSetMetaData.class.getClassLoader(); Class[] interfaces = new Class[] { ResultSetMetaData.class }; - InvocationHandler invocationHandler = new TestResultSetMetaData(); return (ResultSetMetaData)Proxy.newProxyInstance(classLoader, interfaces, invocationHandler); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]