View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.dbutils.handlers;
18  
19  import java.sql.SQLException;
20  import java.util.Iterator;
21  import java.util.List;
22  
23  import org.apache.commons.dbutils.BaseTestCase;
24  import org.apache.commons.dbutils.ResultSetHandler;
25  import org.apache.commons.dbutils.TestBean;
26  
27  /**
28   * BeanListHandlerTest
29   */
30  public class BeanListHandlerTest extends BaseTestCase {
31  
32      public static class SubTestBean extends TestBean implements SubTestBeanInterface { }
33  
34      public interface SubTestBeanInterface {
35          String getDoNotSet();
36  
37          String getOne();
38  
39          TestBean.Ordinal getThree();
40  
41          String getTwo();
42      }
43  
44      public void testEmptyResultSetHandle() throws SQLException {
45          final ResultSetHandler<List<TestBean>> h = new BeanListHandler<>(TestBean.class);
46          final List<TestBean> results = h.handle(this.emptyResultSet);
47  
48          assertNotNull(results);
49          assertTrue(results.isEmpty());
50      }
51  
52      public void testHandle() throws SQLException {
53          final ResultSetHandler<List<TestBean>> h = new BeanListHandler<>(TestBean.class);
54          final List<TestBean> results = h.handle(this.rs);
55  
56          assertNotNull(results);
57          assertEquals(ROWS, results.size());
58  
59          final Iterator<TestBean> iter = results.iterator();
60          TestBean row;
61          assertTrue(iter.hasNext());
62          row = iter.next();
63          assertEquals("1", row.getOne());
64          assertEquals("2", row.getTwo());
65          assertEquals(TestBean.Ordinal.THREE, row.getThree());
66          assertEquals("not set", row.getDoNotSet());
67  
68          assertTrue(iter.hasNext());
69          row = iter.next();
70  
71          assertEquals("4", row.getOne());
72          assertEquals("5", row.getTwo());
73          assertEquals(TestBean.Ordinal.SIX, row.getThree());
74          assertEquals("not set", row.getDoNotSet());
75  
76          assertFalse(iter.hasNext());
77      }
78  
79      public void testHandleToInterface() throws SQLException {
80          final ResultSetHandler<List<SubTestBeanInterface>> h = new BeanListHandler<>(SubTestBean.class);
81          final List<SubTestBeanInterface> results = h.handle(this.rs);
82  
83          assertNotNull(results);
84          assertEquals(ROWS, results.size());
85  
86          final Iterator<SubTestBeanInterface> iter = results.iterator();
87          SubTestBeanInterface row;
88          assertTrue(iter.hasNext());
89          row = iter.next();
90          assertSame(SubTestBean.class, row.getClass());
91  
92          assertEquals("1", row.getOne());
93          assertEquals("2", row.getTwo());
94          assertEquals(TestBean.Ordinal.THREE, row.getThree());
95          assertEquals("not set", row.getDoNotSet());
96  
97          assertTrue(iter.hasNext());
98          row = iter.next();
99          assertSame(SubTestBean.class, row.getClass());
100 
101         assertEquals("4", row.getOne());
102         assertEquals("5", row.getTwo());
103         assertEquals(TestBean.Ordinal.SIX, row.getThree());
104         assertEquals("not set", row.getDoNotSet());
105 
106         assertFalse(iter.hasNext());
107     }
108 
109     public void testHandleToSuperClass() throws SQLException {
110         final ResultSetHandler<List<TestBean>> h = new BeanListHandler<>(SubTestBean.class);
111         final List<TestBean> results = h.handle(this.rs);
112 
113         assertNotNull(results);
114         assertEquals(ROWS, results.size());
115 
116         final Iterator<TestBean> iter = results.iterator();
117         assertTrue(iter.hasNext());
118         TestBean row = iter.next();
119         assertSame(SubTestBean.class, row.getClass());
120 
121         assertEquals("1", row.getOne());
122         assertEquals("2", row.getTwo());
123         assertEquals(TestBean.Ordinal.THREE, row.getThree());
124         assertEquals("not set", row.getDoNotSet());
125 
126         assertTrue(iter.hasNext());
127         row = iter.next();
128         assertSame(SubTestBean.class, row.getClass());
129 
130         assertEquals("4", row.getOne());
131         assertEquals("5", row.getTwo());
132         assertEquals(TestBean.Ordinal.SIX, row.getThree());
133         assertEquals("not set", row.getDoNotSet());
134 
135         assertFalse(iter.hasNext());
136     }
137 }