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","******","[email protected]",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