Author: cbegin
Date: Thu Mar 18 04:06:24 2010
New Revision: 924629

URL: http://svn.apache.org/viewvc?rev=924629&view=rev
Log:
Added test to demonstrate unsupported circular relationships

Added:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/Node.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.java
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.xml
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/ParentChildCircularTest.java
      - copied, changed from r924140, 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/null_with_no_jdbctype/NullWithNoJdbcTypeTest.java
Modified:
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-dataload.sql
    
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-schema.sql

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-dataload.sql
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-dataload.sql?rev=924629&r1=924628&r2=924629&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-dataload.sql
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-dataload.sql
 Thu Mar 18 04:06:24 2010
@@ -27,3 +27,16 @@ INSERT INTO comment (id,post_id,name,com
 --INSERT INTO comment (id,post_id,name,comment) VALUES (4,2,'another','I don 
not agree and still think troll is an...');
 INSERT INTO comment (id,post_id,name,comment) VALUES (3,3,'rider','I prefer 
motorcycles to monster trucks...');
 
+
+--       1
+--    2     3
+--  4  5   6  7
+
+INSERT INTO node (id, parent_id) VALUES (1,null);
+INSERT INTO node (id, parent_id) VALUES (2,1); 
+INSERT INTO node (id, parent_id) VALUES (3,1);
+INSERT INTO node (id, parent_id) VALUES (4,2);
+INSERT INTO node (id, parent_id) VALUES (5,2);
+INSERT INTO node (id, parent_id) VALUES (6,3);
+INSERT INTO node (id, parent_id) VALUES (7,3);
+

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-schema.sql
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-schema.sql?rev=924629&r1=924628&r2=924629&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-schema.sql
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/databases/blog/blog-derby-schema.sql
 Thu Mar 18 04:06:24 2010
@@ -58,6 +58,12 @@ comment     LONG VARCHAR NOT NULL,
 PRIMARY KEY (id)
 );
 
+CREATE TABLE node (
+id  INT NOT NULL,
+parent_id INT,
+PRIMARY KEY(id)
+);
+
 CREATE PROCEDURE selectTwoSetsOfAuthors(DP1 INTEGER, DP2 INTEGER)
 PARAMETER STYLE JAVA
 LANGUAGE JAVA

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/Node.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/Node.java?rev=924629&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/Node.java
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/Node.java
 Thu Mar 18 04:06:24 2010
@@ -0,0 +1,28 @@
+package org.apache.ibatis.submitted.parent_child_circular;
+
+public class Node {
+
+  private int id;
+  private Node parent;
+
+  public int getId() {
+    return id;
+  }
+
+  public void setId(int id) {
+    this.id = id;
+  }
+
+  public Node getParent() {
+    return parent;
+  }
+
+  public void setParent(Node parent) {
+    this.parent = parent;
+  }
+
+  @Override
+  public String toString() {
+    return id + " (" + parent + ")";
+  }
+}

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.java?rev=924629&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.java
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.java
 Thu Mar 18 04:06:24 2010
@@ -0,0 +1,5 @@
+package org.apache.ibatis.submitted.parent_child_circular;
+
+public interface NodeMapper {
+    Node selectNode(int id);
+}

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.xml
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.xml?rev=924629&view=auto
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.xml
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/NodeMapper.xml
 Thu Mar 18 04:06:24 2010
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" 
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd";>
+<mapper namespace="testcase">
+
+  <resultMap id="nodeResult" 
type="org.apache.ibatis.submitted.parent_child_circular.Node">
+    <id property="id" column="id"/>
+    <association property="parent" column="parent_id" resultMap="nodeResult"/>
+  </resultMap>
+
+  <select id="selectNode" resultMap="nodeResult">
+    select id
+    from node
+    where id = #{id}
+  </select>
+
+
+</mapper>
+

Copied: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/ParentChildCircularTest.java
 (from r924140, 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/null_with_no_jdbctype/NullWithNoJdbcTypeTest.java)
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/ParentChildCircularTest.java?p2=ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/ParentChildCircularTest.java&p1=ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/null_with_no_jdbctype/NullWithNoJdbcTypeTest.java&r1=924140&r2=924629&rev=924629&view=diff
==============================================================================
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/null_with_no_jdbctype/NullWithNoJdbcTypeTest.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/parent_child_circular/ParentChildCircularTest.java
 Thu Mar 18 04:06:24 2010
@@ -1,10 +1,6 @@
-package org.apache.ibatis.submitted.null_with_no_jdbctype;
+package org.apache.ibatis.submitted.parent_child_circular;
 
-import domain.blog.Author;
-import domain.blog.Section;
 import org.apache.ibatis.BaseDataTest;
-import org.apache.ibatis.annotations.Insert;
-import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.mapping.Environment;
 import org.apache.ibatis.session.Configuration;
 import org.apache.ibatis.session.SqlSession;
@@ -12,69 +8,37 @@ import org.apache.ibatis.session.SqlSess
 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
 import org.junit.Test;
-
-import javax.sql.DataSource;
-
 import static org.junit.Assert.*;
 
-public class NullWithNoJdbcTypeTest extends BaseDataTest {
-
-  private static interface JPetStoreMapper {
-    @Insert("INSERT INTO category (catid, name, descn) VALUES 
(#{id},#{name},#{description})")
-    int insertCategory(@Param("id") String id, @Param("name") String name, 
@Param("description") String description);
-  }
-
-  @Test
-  public void shouldSucceedAddingRowWithNullValueWithHSQLDB() throws Exception 
{
-    DataSource ds = BaseDataTest.createJPetstoreDataSource();
-    Environment env = new Environment("test",new JdbcTransactionFactory(),ds);
-    Configuration config = new Configuration(env);
-    config.addMapper(JPetStoreMapper.class);
-
-    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
-    SqlSessionFactory sqlMapper = builder.build(config);
-    SqlSession session = sqlMapper.openSession();
-    try {
-      JPetStoreMapper mapper = session.getMapper(JPetStoreMapper.class);
-      int n = mapper.insertCategory("MONKEYS",null,"Big hairy friendly 
(sometimes) mammals...");
-      assertEquals(1,n);
-      session.rollback();
-    } finally {
-      if (session != null) session.close();
-    }
-  }
+import javax.sql.DataSource;
 
-  private static interface BlogMapper {
-    @Insert("insert into " +
-        "Author (id,username,password,email,bio,favourite_section) " +
-        "values(#{id}, #{username}, #{password}, #{email}, #{bio}, 
#{favouriteSection})")
-    int insertAuthor(Author author);
-  }
+public class ParentChildCircularTest extends BaseDataTest {
 
   @Test
-  public void shouldParseMapWithIntegerJdbcType() throws Exception {
+  public void 
shouldDemonstrateCircularRelationShipsNotSupportedWithJoinMapping() throws 
Exception {
     DataSource ds = BaseDataTest.createBlogDataSource();
     Environment env = new Environment("test",new JdbcTransactionFactory(),ds);
     Configuration config = new Configuration(env);
-    config.addMapper(BlogMapper.class);
-
+    config.addMapper(NodeMapper.class);
     SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
     SqlSessionFactory sqlMapper = builder.build(config);
     SqlSession session = sqlMapper.openSession();
     try {
-      BlogMapper mapper = session.getMapper(BlogMapper.class);
-      int n = 0;
+      NodeMapper mapper = session.getMapper(NodeMapper.class);
+
       try {
-        n = mapper.insertAuthor(new 
Author(99999,"barney","******","bar...@iloveyou.com",null, Section.NEWS));
-        fail("Expected exception.");
-      } catch (Exception e) {
-        assertTrue(e.getMessage().contains("Most JDBC drivers require"));
+        mapper.selectNode(1);
+        fail("Expected StackOverFlowException");
+      } catch (Throwable t) {
+        assertTrue(t instanceof StackOverflowError);
       }
-      session.rollback();
+
     } finally {
+      session.rollback();
       if (session != null) session.close();
     }
+
   }
 
 
-}
+}
\ No newline at end of file


Reply via email to