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