Skip to content

Commit b7dd2ef

Browse files
committed
1) Partial fix for http://code.google.com/p/mybatis/issues/detail?id=139 (257) -- Cache causes selectMap to fail
2) Fixed a few old unit tests.
1 parent 0239eda commit b7dd2ef

File tree

5 files changed

+41
-10
lines changed

5 files changed

+41
-10
lines changed

src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
import org.apache.ibatis.executor.Executor;
66
import org.apache.ibatis.executor.ErrorContext;
77
import org.apache.ibatis.executor.result.DefaultMapResultHandler;
8+
import org.apache.ibatis.executor.result.DefaultResultContext;
89
import org.apache.ibatis.mapping.MappedStatement;
9-
import org.apache.ibatis.session.Configuration;
10-
import org.apache.ibatis.session.ResultHandler;
11-
import org.apache.ibatis.session.RowBounds;
12-
import org.apache.ibatis.session.SqlSession;
10+
import org.apache.ibatis.session.*;
1311

1412
import java.sql.Connection;
1513
import java.util.HashMap;
@@ -56,8 +54,13 @@ public Map selectMap(String statement, Object parameter, String mapKey) {
5654
}
5755

5856
public Map selectMap(String statement, Object parameter, String mapKey, RowBounds rowBounds) {
57+
final List list = selectList(statement, parameter, rowBounds);
5958
final DefaultMapResultHandler mapResultHandler = new DefaultMapResultHandler(mapKey);
60-
select(statement, parameter, rowBounds, mapResultHandler);
59+
final DefaultResultContext context = new DefaultResultContext();
60+
for (Object o : list) {
61+
context.nextResultObject(o);
62+
mapResultHandler.handleResult(context);
63+
}
6164
return mapResultHandler.getMappedResults();
6265
}
6366

src/test/java/com/ibatis/sqlmap/jira/JiraIbatis260.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ protected void setUp() throws Exception {
4747
* @throws Exception none should be thrown (if the regression test
4848
* succeeds)
4949
*/
50-
public void testIbatis260Error1() throws Exception {
50+
public void __ignore_testIbatis260Error1() throws Exception {
51+
// @IGNORE
52+
// Was missed a long time ago, probably around the time Maven was implemented.
53+
// It's not picked up due to the filename, and is not being run. The mock Sql/Include tags
54+
// seem to have broken at some point, which stops this test from running.
5155
List groupedResult = sqlMap.queryForList("getJira260GroupedResult", null);
5256

5357
HashMap test = new HashMap();

src/test/java/org/apache/ibatis/binding/BindingTest.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,7 @@ public void shouldExecuteBoundSelectMapOfBlogsById() {
136136
}
137137

138138
@Test
139-
@Ignore
140-
public void shouldExecuteMultipleBoundSelectMapOfBlogsById() {
139+
public void shouldExecuteMultipleBoundSelectMapOfBlogsByIdInSameSessionWithoutClearingLocalCache() {
141140
SqlSession session = sqlSessionFactory.openSession();
142141
try {
143142
BoundBlogMapper mapper = session.getMapper(BoundBlogMapper.class);
@@ -156,6 +155,31 @@ public void shouldExecuteMultipleBoundSelectMapOfBlogsById() {
156155
}
157156
}
158157

158+
@Test
159+
public void shouldExecuteMultipleBoundSelectMapOfBlogsByIdBetweenTwoSessionsWithGlobalCacheEnabled() {
160+
SqlSession session = sqlSessionFactory.openSession();
161+
try {
162+
BoundBlogMapper mapper = session.getMapper(BoundBlogMapper.class);
163+
Map<Integer,Blog> blogs = mapper.selectBlogsAsMapById();
164+
session.close();
165+
166+
//New Session
167+
session = sqlSessionFactory.openSession();
168+
mapper = session.getMapper(BoundBlogMapper.class);
169+
Map<Integer,Blog> moreBlogs = mapper.selectBlogsAsMapById();
170+
assertEquals(2, blogs.size());
171+
assertEquals(2, moreBlogs.size());
172+
for(Map.Entry<Integer,Blog> blogEntry : blogs.entrySet()) {
173+
assertEquals(blogEntry.getKey(), (Integer) blogEntry.getValue().getId());
174+
}
175+
for(Map.Entry<Integer,Blog> blogEntry : moreBlogs.entrySet()) {
176+
assertEquals(blogEntry.getKey(), (Integer) blogEntry.getValue().getId());
177+
}
178+
} finally {
179+
session.close();
180+
}
181+
}
182+
159183
@Test
160184
public void shouldSelectListOfBlogsUsingXMLConfig() {
161185
SqlSession session = sqlSessionFactory.openSession();

src/test/java/org/apache/ibatis/submitted/encoding/EncodingConfig.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
</transactionManager>
1414
<dataSource type="UNPOOLED">
1515
<property name="driver" value="org.hsqldb.jdbcDriver"/>
16-
<property name="url" value="jdbc:hsqldb:mem:gname"/>
16+
<property name="url" value="jdbc:hsqldb:mem:encoding"/>
1717
<property name="username" value="sa"/>
1818
</dataSource>
1919
</environment>

src/test/java/org/apache/ibatis/submitted/encoding/EncodingTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public static void setUp() throws Exception {
2424

2525
try {
2626
Class.forName("org.hsqldb.jdbcDriver");
27-
conn = DriverManager.getConnection("jdbc:hsqldb:mem:gname", "sa", "");
27+
conn = DriverManager.getConnection("jdbc:hsqldb:mem:encoding", "sa", "");
2828

2929
Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/encoding/CreateDB.sql");
3030

0 commit comments

Comments
 (0)