You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by th...@apache.org on 2017/07/07 02:06:10 UTC

[35/50] commons-dbutils git commit: DBUTILS-82 Applied user-submitted patch and made minor fixes

DBUTILS-82 Applied user-submitted patch and made minor fixes

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/dbutils/trunk@1673285 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-dbutils/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-dbutils/commit/f8e826ec
Tree: http://git-wip-us.apache.org/repos/asf/commons-dbutils/tree/f8e826ec
Diff: http://git-wip-us.apache.org/repos/asf/commons-dbutils/diff/f8e826ec

Branch: refs/heads/master
Commit: f8e826ec114e9d6f86f61676b4c106dc4260c736
Parents: 8022314
Author: Carl Franklin Hall <th...@apache.org>
Authored: Mon Apr 13 21:19:22 2015 +0000
Committer: Carl Franklin Hall <th...@apache.org>
Committed: Mon Apr 13 21:19:22 2015 +0000

----------------------------------------------------------------------
 .../commons/dbutils/BasicRowProcessor.java      |  4 +-
 .../apache/commons/dbutils/BeanProcessor.java   |  4 +-
 .../apache/commons/dbutils/RowProcessor.java    |  4 +-
 .../commons/dbutils/handlers/BeanHandler.java   |  6 +-
 .../dbutils/handlers/BeanListHandler.java       |  6 +-
 .../dbutils/handlers/BeanHandlerTest.java       | 33 +++++++++
 .../dbutils/handlers/BeanListHandlerTest.java   | 71 ++++++++++++++++++++
 7 files changed, 116 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/f8e826ec/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java b/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java
index cd6ec96..5533f94 100644
--- a/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java
+++ b/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java
@@ -119,7 +119,7 @@ public class BasicRowProcessor implements RowProcessor {
      * @return the newly created bean
      */
     @Override
-    public <T> T toBean(ResultSet rs, Class<T> type) throws SQLException {
+    public <T> T toBean(ResultSet rs, Class<? extends T> type) throws SQLException {
         return this.convert.toBean(rs, type);
     }
 
@@ -136,7 +136,7 @@ public class BasicRowProcessor implements RowProcessor {
      * they were returned by the <code>ResultSet</code>.
      */
     @Override
-    public <T> List<T> toBeanList(ResultSet rs, Class<T> type) throws SQLException {
+    public <T> List<T> toBeanList(ResultSet rs, Class<? extends T> type) throws SQLException {
         return this.convert.toBeanList(rs, type);
     }
 

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/f8e826ec/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java b/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
index f1dfe47..e9f6db5 100644
--- a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
+++ b/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
@@ -135,7 +135,7 @@ public class BeanProcessor {
      * @throws SQLException if a database access error occurs
      * @return the newly created bean
      */
-    public <T> T toBean(ResultSet rs, Class<T> type) throws SQLException {
+    public <T> T toBean(ResultSet rs, Class<? extends T> type) throws SQLException {
 
         PropertyDescriptor[] props = this.propertyDescriptors(type);
 
@@ -178,7 +178,7 @@ public class BeanProcessor {
      * @throws SQLException if a database access error occurs
      * @return the newly created List of beans
      */
-    public <T> List<T> toBeanList(ResultSet rs, Class<T> type) throws SQLException {
+    public <T> List<T> toBeanList(ResultSet rs, Class<? extends T> type) throws SQLException {
         List<T> results = new ArrayList<T>();
 
         if (!rs.next()) {

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/f8e826ec/src/main/java/org/apache/commons/dbutils/RowProcessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/RowProcessor.java b/src/main/java/org/apache/commons/dbutils/RowProcessor.java
index 02e9382..2434dc4 100644
--- a/src/main/java/org/apache/commons/dbutils/RowProcessor.java
+++ b/src/main/java/org/apache/commons/dbutils/RowProcessor.java
@@ -55,7 +55,7 @@ public interface RowProcessor {
      * @throws SQLException if a database access error occurs
      * @return the newly created bean
      */
-    <T> T toBean(ResultSet rs, Class<T> type) throws SQLException;
+    <T> T toBean(ResultSet rs, Class<? extends T> type) throws SQLException;
 
     /**
      * Create a <code>List</code> of JavaBeans from the column values in all
@@ -68,7 +68,7 @@ public interface RowProcessor {
      * @return A <code>List</code> of beans with the given type in the order
      * they were returned by the <code>ResultSet</code>.
      */
-    <T> List<T> toBeanList(ResultSet rs, Class<T> type) throws SQLException;
+    <T> List<T> toBeanList(ResultSet rs, Class<? extends T> type) throws SQLException;
 
     /**
      * Create a <code>Map</code> from the column values in one

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/f8e826ec/src/main/java/org/apache/commons/dbutils/handlers/BeanHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/handlers/BeanHandler.java b/src/main/java/org/apache/commons/dbutils/handlers/BeanHandler.java
index daa3027..c2f0436 100644
--- a/src/main/java/org/apache/commons/dbutils/handlers/BeanHandler.java
+++ b/src/main/java/org/apache/commons/dbutils/handlers/BeanHandler.java
@@ -34,7 +34,7 @@ public class BeanHandler<T> implements ResultSetHandler<T> {
     /**
      * The Class of beans produced by this handler.
      */
-    private final Class<T> type;
+    private final Class<? extends T> type;
 
     /**
      * The RowProcessor implementation to use when converting rows
@@ -48,7 +48,7 @@ public class BeanHandler<T> implements ResultSetHandler<T> {
      * @param type The Class that objects returned from <code>handle()</code>
      * are created from.
      */
-    public BeanHandler(Class<T> type) {
+    public BeanHandler(Class<? extends T> type) {
         this(type, ArrayHandler.ROW_PROCESSOR);
     }
 
@@ -60,7 +60,7 @@ public class BeanHandler<T> implements ResultSetHandler<T> {
      * @param convert The <code>RowProcessor</code> implementation
      * to use when converting rows into beans.
      */
-    public BeanHandler(Class<T> type, RowProcessor convert) {
+    public BeanHandler(Class<? extends T> type, RowProcessor convert) {
         this.type = type;
         this.convert = convert;
     }

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/f8e826ec/src/main/java/org/apache/commons/dbutils/handlers/BeanListHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/handlers/BeanListHandler.java b/src/main/java/org/apache/commons/dbutils/handlers/BeanListHandler.java
index 1541a66..c990dbd 100644
--- a/src/main/java/org/apache/commons/dbutils/handlers/BeanListHandler.java
+++ b/src/main/java/org/apache/commons/dbutils/handlers/BeanListHandler.java
@@ -36,7 +36,7 @@ public class BeanListHandler<T> implements ResultSetHandler<List<T>> {
     /**
      * The Class of beans produced by this handler.
      */
-    private final Class<T> type;
+    private final Class<? extends T> type;
 
     /**
      * The RowProcessor implementation to use when converting rows
@@ -50,7 +50,7 @@ public class BeanListHandler<T> implements ResultSetHandler<List<T>> {
      * @param type The Class that objects returned from <code>handle()</code>
      * are created from.
      */
-    public BeanListHandler(Class<T> type) {
+    public BeanListHandler(Class<? extends T> type) {
         this(type, ArrayHandler.ROW_PROCESSOR);
     }
 
@@ -62,7 +62,7 @@ public class BeanListHandler<T> implements ResultSetHandler<List<T>> {
      * @param convert The <code>RowProcessor</code> implementation
      * to use when converting rows into beans.
      */
-    public BeanListHandler(Class<T> type, RowProcessor convert) {
+    public BeanListHandler(Class<? extends T> type, RowProcessor convert) {
         this.type = type;
         this.convert = convert;
     }

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/f8e826ec/src/test/java/org/apache/commons/dbutils/handlers/BeanHandlerTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/dbutils/handlers/BeanHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/BeanHandlerTest.java
index 64b0133..6eb7135 100644
--- a/src/test/java/org/apache/commons/dbutils/handlers/BeanHandlerTest.java
+++ b/src/test/java/org/apache/commons/dbutils/handlers/BeanHandlerTest.java
@@ -45,4 +45,37 @@ public class BeanHandlerTest extends BaseTestCase {
         assertNull(results);
     }
 
+    public void testHandleToSuperClass() throws SQLException {
+        ResultSetHandler<TestBean> h = new BeanHandler<TestBean>(SubTestBean.class);
+        TestBean results = h.handle(this.rs);
+
+        assertNotNull(results);
+        assertEquals("1", results.getOne());
+        assertEquals("2", results.getTwo());
+        assertEquals(TestBean.Ordinal.THREE, results.getThree());
+        assertEquals("not set", results.getDoNotSet());
+    }
+
+    public void testHandleToInterface() throws SQLException {
+        ResultSetHandler<SubTestBeanInterface> h = new BeanHandler<SubTestBeanInterface>(SubTestBean.class);
+        SubTestBeanInterface results = h.handle(this.rs);
+
+        assertNotNull(results);
+        assertEquals("1", results.getOne());
+        assertEquals("2", results.getTwo());
+        assertEquals(TestBean.Ordinal.THREE, results.getThree());
+        assertEquals("not set", results.getDoNotSet());
+    }
+
+    public static interface SubTestBeanInterface {
+        public String getOne();
+
+        public TestBean.Ordinal getThree();
+
+        public String getTwo();
+
+        public String getDoNotSet();
+    }
+
+    public static class SubTestBean extends TestBean implements SubTestBeanInterface { }
 }

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/f8e826ec/src/test/java/org/apache/commons/dbutils/handlers/BeanListHandlerTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/dbutils/handlers/BeanListHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/BeanListHandlerTest.java
index 0ba7eb3..ef3a9e5 100644
--- a/src/test/java/org/apache/commons/dbutils/handlers/BeanListHandlerTest.java
+++ b/src/test/java/org/apache/commons/dbutils/handlers/BeanListHandlerTest.java
@@ -64,4 +64,75 @@ public class BeanListHandlerTest extends BaseTestCase {
         assertTrue(results.isEmpty());
     }
 
+    public void testHandleToSuperClass() throws SQLException {
+        ResultSetHandler<List<TestBean>> h = new BeanListHandler<TestBean>(SubTestBean.class);
+        List<TestBean> results = h.handle(this.rs);
+
+        assertNotNull(results);
+        assertEquals(ROWS, results.size());
+
+        Iterator<TestBean> iter = results.iterator();
+        TestBean row = null;
+        assertTrue(iter.hasNext());
+        row = iter.next();
+        assertSame(SubTestBean.class, row.getClass());
+
+        assertEquals("1", row.getOne());
+        assertEquals("2", row.getTwo());
+        assertEquals(TestBean.Ordinal.THREE, row.getThree());
+        assertEquals("not set", row.getDoNotSet());
+
+        assertTrue(iter.hasNext());
+        row = iter.next();
+        assertSame(SubTestBean.class, row.getClass());
+
+        assertEquals("4", row.getOne());
+        assertEquals("5", row.getTwo());
+        assertEquals(TestBean.Ordinal.SIX, row.getThree());
+        assertEquals("not set", row.getDoNotSet());
+
+        assertFalse(iter.hasNext());
+    }
+
+    public void testHandleToInterface() throws SQLException {
+        ResultSetHandler<List<SubTestBeanInterface>> h = new BeanListHandler<SubTestBeanInterface>(SubTestBean.class);
+        List<SubTestBeanInterface> results = h.handle(this.rs);
+
+        assertNotNull(results);
+        assertEquals(ROWS, results.size());
+
+        Iterator<SubTestBeanInterface> iter = results.iterator();
+        SubTestBeanInterface row = null;
+        assertTrue(iter.hasNext());
+        row = iter.next();
+        assertSame(SubTestBean.class, row.getClass());
+
+        assertEquals("1", row.getOne());
+        assertEquals("2", row.getTwo());
+        assertEquals(TestBean.Ordinal.THREE, row.getThree());
+        assertEquals("not set", row.getDoNotSet());
+
+        assertTrue(iter.hasNext());
+        row = iter.next();
+        assertSame(SubTestBean.class, row.getClass());
+
+        assertEquals("4", row.getOne());
+        assertEquals("5", row.getTwo());
+        assertEquals(TestBean.Ordinal.SIX, row.getThree());
+        assertEquals("not set", row.getDoNotSet());
+
+        assertFalse(iter.hasNext());
+    }
+
+    public static interface SubTestBeanInterface {
+        public String getOne();
+
+        public TestBean.Ordinal getThree();
+
+        public String getTwo();
+
+        public String getDoNotSet();
+    }
+
+    public static class SubTestBean extends TestBean implements SubTestBeanInterface { }
 }