Author: cbegin
Date: Sun Sep 7 21:47:14 2008
New Revision: 692991
URL: http://svn.apache.org/viewvc?rev=692991&view=rev
Log:
IBATIS-519 fixed. Tests added, fixed as described in Jira.
Added:
ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/
ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo-sql-map.xml
ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo.java
ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/MyThread.java
ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/RemapResultsThreadTest.java
ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/sql-map-config.xml
Modified:
ibatis/trunk/java/ibatis-2/ibatis-2-core/build/version.properties
ibatis/trunk/java/ibatis-2/ibatis-2-core/src/com/ibatis/sqlmap/engine/mapping/result/AutoResultMap.java
Modified: ibatis/trunk/java/ibatis-2/ibatis-2-core/build/version.properties
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-2/ibatis-2-core/build/version.properties?rev=692991&r1=692990&r2=692991&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-2/ibatis-2-core/build/version.properties (original)
+++ ibatis/trunk/java/ibatis-2/ibatis-2-core/build/version.properties Sun Sep
7 21:47:14 2008
@@ -1,5 +1,5 @@
#Build version info
-#Sun Aug 31 11:18:20 MDT 2008
+#Sun Sep 07 22:35:48 MDT 2008
version=2.3.3.x-build
-buildDate=2008/08/31 11\:18
-buildNum=723
+buildDate=2008/09/07 22\:35
+buildNum=724
Modified:
ibatis/trunk/java/ibatis-2/ibatis-2-core/src/com/ibatis/sqlmap/engine/mapping/result/AutoResultMap.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-2/ibatis-2-core/src/com/ibatis/sqlmap/engine/mapping/result/AutoResultMap.java?rev=692991&r1=692990&r2=692991&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-2/ibatis-2-core/src/com/ibatis/sqlmap/engine/mapping/result/AutoResultMap.java
(original)
+++
ibatis/trunk/java/ibatis-2/ibatis-2-core/src/com/ibatis/sqlmap/engine/mapping/result/AutoResultMap.java
Sun Sep 7 21:47:14 2008
@@ -15,22 +15,14 @@
*/
package com.ibatis.sqlmap.engine.mapping.result;
-import com.ibatis.common.beans.ClassInfo;
-import com.ibatis.common.beans.Probe;
-import com.ibatis.common.beans.ProbeFactory;
-
+import com.ibatis.common.beans.*;
import com.ibatis.sqlmap.client.SqlMapException;
import com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate;
import com.ibatis.sqlmap.engine.scope.StatementScope;
import com.ibatis.sqlmap.engine.type.DomTypeMarker;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.sql.*;
+import java.util.*;
/**
* An automatic result map for simple stuff
@@ -55,6 +47,16 @@
return super.getResults(statementScope, rs);
}
+ public Object setResultObjectValues(StatementScope statementScope, Object
resultObject, Object[] values) {
+ // synchronization is only needed when remapping is enabled
+ if (allowRemapping) {
+ synchronized (this) {
+ return super.setResultObjectValues(statementScope, resultObject,
values);
+ }
+ }
+ return super.setResultObjectValues(statementScope, resultObject, values);
+ }
+
private void initialize(ResultSet rs) {
if (getResultClass() == null) {
throw new SqlMapException("The automatic ResultMap named " +
this.getId() + " had a null result class (not allowed).");
@@ -82,7 +84,7 @@
List resultMappingList = new ArrayList();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 0, n = rsmd.getColumnCount(); i < n; i++) {
- String columnName = getColumnIdentifier(rsmd, i+1);
+ String columnName = getColumnIdentifier(rsmd, i + 1);
String upperColumnName =
columnName.toUpperCase(java.util.Locale.ENGLISH);
String matchedProp = (String) propertyMap.get(upperColumnName);
Class type = null;
@@ -118,7 +120,7 @@
List resultMappingList = new ArrayList();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 0, n = rsmd.getColumnCount(); i < n; i++) {
- String columnName = getColumnIdentifier(rsmd, i+1);
+ String columnName = getColumnIdentifier(rsmd, i + 1);
ResultMapping resultMapping = new ResultMapping();
resultMapping.setPropertyName(columnName);
resultMapping.setColumnName(columnName);
@@ -137,7 +139,7 @@
List resultMappingList = new ArrayList();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 0, n = rsmd.getColumnCount(); i < n; i++) {
- String columnName = getColumnIdentifier(rsmd, i+1);
+ String columnName = getColumnIdentifier(rsmd, i + 1);
ResultMapping resultMapping = new ResultMapping();
resultMapping.setPropertyName(columnName);
resultMapping.setColumnName(columnName);
@@ -156,7 +158,7 @@
private void initializePrimitiveResults(ResultSet rs) {
try {
ResultSetMetaData rsmd = rs.getMetaData();
- String columnName = getColumnIdentifier(rsmd,1);
+ String columnName = getColumnIdentifier(rsmd, 1);
ResultMapping resultMapping = new ResultMapping();
resultMapping.setPropertyName(columnName);
resultMapping.setColumnName(columnName);
Added: ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo-sql-map.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo-sql-map.xml?rev=692991&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo-sql-map.xml
(added)
+++ ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo-sql-map.xml Sun
Sep 7 21:47:14 2008
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sqlMap PUBLIC
+ "-//iBATIS.com//DTD SQL Map 2.0//EN"
+ "http://www.ibatis.com/dtd/sql-map-2.dtd">
+
+<sqlMap>
+ <statement id="selectFooWithRemap"
+ resultClass="threads.Foo"
+ remapResults="true">
+ select * from foo
+ </statement>
+
+
+ <statement id="selectFooWithoutRemap"
+ resultClass="threads.Foo"
+ remapResults="false">
+ select * from foo
+ </statement>
+
+ <statement id="create">
+ drop table foo if exists;
+
+ create table foo (
+ column1 varchar(50),
+ column2 varchar(50),
+ column3 varchar(50)
+ );
+
+
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+ insert into foo values ('a', 'a', 'a');
+ insert into foo values ('b', 'b', 'b');
+ insert into foo values ('c', 'c', 'c');
+
+ </statement>
+
+</sqlMap>
Added: ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo.java?rev=692991&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo.java (added)
+++ ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/Foo.java Sun Sep 7
21:47:14 2008
@@ -0,0 +1,36 @@
+package threads;
+
+public class Foo {
+
+ private String column1;
+
+ private String column2;
+
+ private String column3;
+
+
+ public String getColumn1() {
+ return this.column1;
+ }
+
+ public void setColumn1(String column1) {
+ this.column1 = column1;
+ }
+
+ public String getColumn2() {
+ return this.column2;
+ }
+
+ public void setColumn2(String column2) {
+ this.column2 = column2;
+ }
+
+ public String getColumn3() {
+ return this.column3;
+ }
+
+ public void setColumn3(String column3) {
+ this.column3 = column3;
+ }
+
+}
Added: ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/MyThread.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/MyThread.java?rev=692991&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/MyThread.java (added)
+++ ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/MyThread.java Sun Sep
7 21:47:14 2008
@@ -0,0 +1,41 @@
+package threads;
+
+import java.sql.SQLException;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import com.ibatis.sqlmap.client.SqlMapClient;
+import threads.Foo;
+
+class MyThread extends Thread {
+
+ private SqlMapClient sqlMap;
+ private String remap;
+
+ public MyThread(SqlMapClient sqlMap, String remap) {
+ this.remap = remap;
+ this.sqlMap = sqlMap;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void run() {
+ while (true) {
+ try {
+ List<Foo> list =
sqlMap.queryForList("selectFoo" + remap, null);
+ TestCase.assertEquals(300, list.size());
+ check(list);
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ private static void check(List<Foo> list) {
+ for (Foo foo : list) {
+ if (foo == null) {
+ TestCase.fail("list contained a null element");
+ }
+ }
+ }
+}
\ No newline at end of file
Added:
ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/RemapResultsThreadTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/RemapResultsThreadTest.java?rev=692991&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/RemapResultsThreadTest.java
(added)
+++
ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/RemapResultsThreadTest.java
Sun Sep 7 21:47:14 2008
@@ -0,0 +1,49 @@
+package threads;
+
+import com.ibatis.common.resources.Resources;
+import com.ibatis.sqlmap.client.*;
+import junit.framework.TestCase;
+
+import java.io.*;
+import java.util.*;
+import java.sql.SQLException;
+
+public class RemapResultsThreadTest extends TestCase {
+
+ public void testWithRemap() throws Exception {
+ runTest("WithRemap");
+ }
+
+ public void testWithoutRemap() throws Exception {
+ runTest("WithoutRemap");
+ }
+
+ private void runTest(String statementToRun) throws IOException, SQLException
{
+ String resource = "threads/sql-map-config.xml";
+ Reader reader = Resources.getResourceAsReader(resource);
+ SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
+
+ sqlMap.update("create");
+
+ int count = 2;
+
+ List<MyThread> threads = new LinkedList<MyThread>();
+
+ for (int i = 0; i < count; i++) {
+ MyThread thread = new MyThread(sqlMap, statementToRun);
+ thread.start();
+ threads.add(thread);
+ }
+
+ Date d1 = new Date(new Date().getTime() + 10000);
+
+ // let's do the test for 10 seconds - for me it failed quite early
+ while (new Date().before(d1)) {
+ for (MyThread myThread : threads) {
+ assertTrue(myThread.isAlive());
+ }
+ }
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/sql-map-config.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/sql-map-config.xml?rev=692991&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/sql-map-config.xml
(added)
+++ ibatis/trunk/java/ibatis-2/ibatis-2-core/test/threads/sql-map-config.xml
Sun Sep 7 21:47:14 2008
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE sqlMapConfig PUBLIC
+ "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
+ "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
+
+<sqlMapConfig>
+ <properties resource="com/ibatis/sqlmap/maps/SqlMapConfig.properties"/>
+
+ <transactionManager type="JDBC" >
+ <dataSource type="SIMPLE">
+ <property name="JDBC.Driver" value="${driver}"/>
+ <property name="JDBC.ConnectionURL" value="${url}"/>
+ <property name="JDBC.Username" value="${username}"/>
+ <property name="JDBC.Password" value="${password}"/>
+ </dataSource>
+ </transactionManager>
+
+ <sqlMap resource="threads/Foo-sql-map.xml" />
+
+</sqlMapConfig>