Author: cbegin
Date: Mon Nov 30 03:40:03 2009
New Revision: 885327

URL: http://svn.apache.org/viewvc?rev=885327&view=rev
Log:
IBATIS-688  Problem with lazy loading

Added:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml
Modified:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java?rev=885327&r1=885326&r2=885327&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/ReuseExecutor.java
 Mon Nov 30 03:40:03 2009
@@ -64,7 +64,11 @@
   }
 
   private boolean hasStatementFor(String sql) {
-    return statementMap.keySet().contains(sql);
+    try {
+      return statementMap.keySet().contains(sql) && 
!statementMap.get(sql).getConnection().isClosed();
+    } catch (SQLException e) {
+      return false;
+    }
   }
 
   private Statement getStatement(String s) {

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java?rev=885327&r1=885326&r2=885327&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoader.java
 Mon Nov 30 03:40:03 2009
@@ -72,7 +72,7 @@
     try {
       return localExecutor.query(mappedStatement, parameterObject, 
RowBounds.DEFAULT, Executor.NO_RESULT_HANDLER);
     } finally {
-      if (executor.isClosed()) {
+      if (localExecutor != executor) {
         localExecutor.close();
       }
     }

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java?rev=885327&r1=885326&r2=885327&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultLoaderRegistry.java
 Mon Nov 30 03:40:03 2009
@@ -18,16 +18,17 @@
     loaderMap.put(toSetter(upperFirst), new LoadPair(property, 
metaResultObject, resultLoader));
   }
 
-  public boolean loadByMethod(String methodName) throws SQLException {
-    synchronized (loaderMap) {
-      ResultLoaderRegistry.LoadPair pair = 
loaderMap.remove(methodName.toUpperCase());
-      if (pair != null) {
-        pair.load();
-        return true;
+  public void loadAll() throws SQLException {
+      synchronized (loaderMap) {
+        Object[] keys = loaderMap.keySet().toArray();
+        for (Object key : keys) {
+          LoadPair pair = loaderMap.remove(key);
+          if (pair != null) {
+            pair.load();
+          }
+        }
       }
-      return false;
     }
-  }
 
   private String toGetter(String first) {
     return "GET" + first;

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java?rev=885327&r1=885326&r2=885327&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/loader/ResultObjectProxy.java
 Mon Nov 30 03:40:03 2009
@@ -37,16 +37,10 @@
 
     public Object invoke(Object o, Method method, Object[] args) throws 
Throwable {
       try {
-        Object value = method.invoke(target, args);
-        if (value == null) {
-          String methodName = method.getName();
-          if (PropertyNamer.isGetter(methodName)) {
-            if (lazyLoader.loadByMethod(methodName)) {
-              value = method.invoke(target, args);
-            }
-          }
+        if (!Object.class.equals(method.getDeclaringClass()) && 
PropertyNamer.isGetter(method.getName())) {
+            lazyLoader.loadAll();
         }
-        return value;
+        return method.invoke(target, args);
       } catch (Throwable t) {
         throw ExceptionUtil.unwrapThrowable(t);
       }

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java?rev=885327&r1=885326&r2=885327&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java
 Mon Nov 30 03:40:03 2009
@@ -9,6 +9,11 @@
   public void dummy() {
   }
 
+  @Test
+  public void shouldFetchPostWithBlogWithCompositeKey() throws Exception {
+    super.shouldFetchPostWithBlogWithCompositeKey();
+  }
+
   protected Executor createExecutor(Transaction transaction) {
     return new ReuseExecutor(transaction);
   }

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java?rev=885327&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPELazyTest.java
 Mon Nov 30 03:40:03 2009
@@ -0,0 +1,99 @@
+package org.apache.ibatis.submitted.cglib_lazy_error;
+
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.jdbc.ScriptRunner;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class CglibNPELazyTest {
+    
+    private static SqlSessionFactory sqlSessionFactory;
+    
+    @BeforeClass
+    public static void initDatabase() throws Exception {
+        Connection conn = null;
+
+        try {
+            Class.forName("org.hsqldb.jdbcDriver");
+            conn = 
DriverManager.getConnection("jdbc:hsqldb:mem:cglib_lazy_error", "sa",
+                    "");
+
+            Reader reader = 
Resources.getResourceAsReader("org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql");
+
+            ScriptRunner runner = new ScriptRunner(conn);
+            runner.setLogWriter(null);
+            runner.setErrorLogWriter(new PrintWriter(System.err));
+            runner.runScript(reader);
+            conn.commit();
+            reader.close();
+
+            reader = 
Resources.getResourceAsReader("org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml");
+            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
+            reader.close();
+        } finally {
+            if (conn != null) {
+                conn.close();
+            }
+        }
+    }
+    
+    @Test
+    public void testNoParent() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person person = personMapper.selectById(1);
+        Assert.assertNotNull("Persons must not be null", person);
+        Person parent = person.getParent();
+        Assert.assertNull("Parent must be null", parent);
+    }
+    @Test
+    public void testAncestorSelf() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person person = personMapper.selectById(1);
+        Assert.assertNotNull("Persons must not be null", person);
+        Person ancestor = person.getAncestor();
+        Assert.assertEquals("Ancestor must be John Smith sr.", person, 
ancestor);
+    }
+    @Test
+    public void testGrandParent() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person expectedParent = personMapper.selectById(2);
+        Person expectedGrandParent = personMapper.selectById(1);
+        Person person = personMapper.selectById(3);
+        Assert.assertNotNull("Persons must not be null", person);
+        Assert.assertEquals("Parent must be John Smith", expectedParent, 
person.getParent());
+        Assert.assertEquals("Parent must be John Smith sr.", 
expectedGrandParent, person.getParent().getParent());
+    }
+    @Test
+    public void testAncestor() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person expectedAncestor = personMapper.selectById(1);
+        Person person = personMapper.selectById(3);
+        Assert.assertNotNull("Persons must not be null", person);
+        Assert.assertEquals("Ancestor must be John Smith sr.", 
expectedAncestor, person.getAncestor());
+    }
+    @Test
+    public void testAncestorAfterQueryingParents() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person expectedAncestor = personMapper.selectById(1);
+        Person person = personMapper.selectById(3);
+        // Load ancestor indirectly.
+        Assert.assertNotNull("Persons must not be null", person);
+        Assert.assertNotNull("Parent must not be null", person.getParent());
+        Assert.assertNotNull("Grandparent must not be null", 
person.getParent().getParent());
+        Assert.assertEquals("Ancestor must be John Smith sr.", 
expectedAncestor, person.getAncestor());
+    }
+}

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java?rev=885327&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CglibNPETest.java
 Mon Nov 30 03:40:03 2009
@@ -0,0 +1,99 @@
+package org.apache.ibatis.submitted.cglib_lazy_error;
+
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.sql.Connection;
+import java.sql.DriverManager;
+
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.jdbc.ScriptRunner;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class CglibNPETest {
+    
+    private static SqlSessionFactory sqlSessionFactory;
+    
+    @BeforeClass
+    public static void initDatabase() throws Exception {
+        Connection conn = null;
+
+        try {
+            Class.forName("org.hsqldb.jdbcDriver");
+            conn = 
DriverManager.getConnection("jdbc:hsqldb:mem:cglib_lazy_eager_no_error", "sa",
+                    "");
+
+            Reader reader = 
Resources.getResourceAsReader("org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql");
+
+            ScriptRunner runner = new ScriptRunner(conn);
+            runner.setLogWriter(null);
+            runner.setErrorLogWriter(new PrintWriter(System.err));
+            runner.runScript(reader);
+            conn.commit();
+            reader.close();
+
+            reader = 
Resources.getResourceAsReader("org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml");
+            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
+            reader.close();
+        } finally {
+            if (conn != null) {
+                conn.close();
+            }
+        }
+    }
+    
+    @Test
+    public void testNoParent() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person person = personMapper.selectById(1);
+        Assert.assertNotNull("Persons must not be null", person);
+        Person parent = person.getParent();
+        Assert.assertNull("Parent must be null", parent);
+    }
+    @Test
+    public void testAncestorSelf() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person person = personMapper.selectById(1);
+        Assert.assertNotNull("Persons must not be null", person);
+        Person ancestor = person.getAncestor();
+        Assert.assertEquals("Ancestor must be John Smith sr.", person, 
ancestor);
+    }
+    @Test
+    public void testGrandParent() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person expectedParent = personMapper.selectById(2);
+        Person expectedGrandParent = personMapper.selectById(1);
+        Person person = personMapper.selectById(3);
+        Assert.assertNotNull("Persons must not be null", person);
+        Assert.assertEquals("Parent must be John Smith", expectedParent, 
person.getParent());
+        Assert.assertEquals("Parent must be John Smith sr.", 
expectedGrandParent, person.getParent().getParent());
+    }
+    @Test
+    public void testAncestor() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person expectedAncestor = personMapper.selectById(1);
+        Person person = personMapper.selectById(3);
+        Assert.assertNotNull("Persons must not be null", person);
+        Assert.assertEquals("Ancestor must be John Smith sr.", 
expectedAncestor, person.getAncestor());
+    }
+    @Test
+    public void testAncestorAfterQueryingParents() {
+        SqlSession sqlSession = sqlSessionFactory.openSession();
+        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
+        Person expectedAncestor = personMapper.selectById(1);
+        Person person = personMapper.selectById(3);
+        // Load ancestor indirectly.
+        Assert.assertNotNull("Persons must not be null", person);
+        Assert.assertNotNull("Parent must not be null", person.getParent());
+        Assert.assertNotNull("Grandparent must not be null", 
person.getParent().getParent());
+        Assert.assertEquals("Ancestor must be John Smith sr.", 
expectedAncestor, person.getAncestor());
+    }
+}

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql?rev=885327&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/CreateDB.sql
 Mon Nov 30 03:40:03 2009
@@ -0,0 +1,13 @@
+create table person (
+  id int,
+  firstName varchar(100),
+  lastName varchar(100),
+  parent int DEFAULT NULL
+);
+
+INSERT INTO person (id, firstName, lastName, parent)
+VALUES (1, 'John sr.', 'Smith', null);
+INSERT INTO person (id, firstName, lastName, parent)
+VALUES (2, 'John', 'Smith', 1);
+INSERT INTO person (id, firstName, lastName, parent)
+VALUES (3, 'John jr.', 'Smith', 2);

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java?rev=885327&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.java
 Mon Nov 30 03:40:03 2009
@@ -0,0 +1,58 @@
+package org.apache.ibatis.submitted.cglib_lazy_error;
+
+public class Person {
+    
+    private Long id;
+    private String firstName;
+    private String lastName;
+    private Person parent;
+    public Person getAncestor() {
+        if (getParent() == null) {
+            return this;
+        } else {
+            return getParent().getAncestor();
+        }
+    }
+    
+    
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof Person) {
+            return this.getId() == ((Person) obj).getId();
+        }
+        return false;
+    }
+    @Override
+    public int hashCode() {
+        return id != null ? id.intValue() : null;
+    }
+    
+    
+    public String getFirstName() {
+        return firstName;
+    }
+    public void setFirstName(String firstName) {
+        this.firstName = firstName;
+    }
+    public String getLastName() {
+        return lastName;
+    }
+    public void setLastName(String lastName) {
+        this.lastName = lastName;
+    }
+    public Long getId() {
+        return id;
+    }
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public Person getParent() {
+        return parent;
+    }
+    public void setParent(Person parent) {
+        this.parent = parent;
+    }
+}

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml?rev=885327&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/Person.xml
 Mon Nov 30 03:40:03 2009
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE mapper
+    PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
+    "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd";>
+
+<mapper namespace="org.apache.ibatis.submitted.cglib_lazy_error.PersonMapper">
+    
+    <resultMap id="personMap" type="Person">
+        <id property="id" column="Person_id"/>
+        <result property="firstName" column="Person_firstName"/>
+        <result property="lastName" column="Person_lastName"/>
+        <association property="parent" column="Person_parent" 
select="org.apache.ibatis.submitted.cglib_lazy_error.PersonMapper.selectById"/>
+    </resultMap>
+    
+    
+    <sql id="columns">
+        Person.id AS Person_id,
+        Person.firstName AS Person_firstName,
+        Person.lastName AS Person_lastName,
+        Person.parent AS Person_parent
+    </sql>
+    
+    
+    <select id="selectById" resultMap="personMap" parameterType="int">
+        SELECT <include refid="columns"/>
+        FROM Person
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+    
+</mapper>

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java?rev=885327&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/PersonMapper.java
 Mon Nov 30 03:40:03 2009
@@ -0,0 +1,7 @@
+package org.apache.ibatis.submitted.cglib_lazy_error;
+
+public interface PersonMapper {
+    
+    public Person selectById(int id);
+    
+}

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml?rev=885327&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfig.xml
 Mon Nov 30 03:40:03 2009
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE configuration
+    PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
+    "http://ibatis.apache.org/dtd/ibatis-3-config.dtd";>
+
+<configuration>
+    <typeAliases>
+        <typeAlias alias="Person" 
type="org.apache.ibatis.submitted.cglib_lazy_error.Person"/>
+    </typeAliases>
+    
+    <environments default="test">
+        <environment id="test">
+            <transactionManager type="JDBC"></transactionManager>
+            <dataSource type="UNPOOLED">
+                <property name="driver" value="org.hsqldb.jdbcDriver"/>
+                <property name="url" 
value="jdbc:hsqldb:mem:cglib_lazy_eager_no_error"/>
+                <property name="username" value="sa"/>
+            </dataSource>
+        </environment>
+    </environments>
+    
+    <mappers>
+        <mapper 
resource="org/apache/ibatis/submitted/cglib_lazy_error/Person.xml"/>
+    </mappers>
+</configuration>

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml?rev=885327&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/cglib_lazy_error/ibatisConfigLazy.xml
 Mon Nov 30 03:40:03 2009
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE configuration
+    PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
+    "http://ibatis.apache.org/dtd/ibatis-3-config.dtd";>
+
+<configuration>
+    <settings>
+        <setting name="lazyLoadingEnabled" value="true"/>
+    </settings>
+    
+    <typeAliases>
+        <typeAlias alias="Person" 
type="org.apache.ibatis.submitted.cglib_lazy_error.Person"/>
+    </typeAliases>
+    
+    <environments default="test">
+        <environment id="test">
+            <transactionManager type="JDBC"></transactionManager>
+            <dataSource type="UNPOOLED">
+                <property name="driver" value="org.hsqldb.jdbcDriver"/>
+                <property name="url" value="jdbc:hsqldb:mem:cglib_lazy_error"/>
+                <property name="username" value="sa"/>
+            </dataSource>
+        </environment>
+    </environments>
+    
+    <mappers>
+        <mapper 
resource="org/apache/ibatis/submitted/cglib_lazy_error/Person.xml"/>
+    </mappers>
+</configuration>


Reply via email to