Author: jgbutler
Date: Mon Aug 14 10:39:30 2006
New Revision: 431385
URL: http://svn.apache.org/viewvc?rev=431385&view=rev
Log:
Fixes and tests for IBATIS-331: nested result mappings not propagated to
extended result maps
Modified:
ibatis/trunk/java/mapper/mapper2/build/version.properties
ibatis/trunk/java/mapper/mapper2/doc/release.txt
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml
ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql
ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java
Modified: ibatis/trunk/java/mapper/mapper2/build/version.properties
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/build/version.properties?rev=431385&r1=431384&r2=431385&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/build/version.properties (original)
+++ ibatis/trunk/java/mapper/mapper2/build/version.properties Mon Aug 14
10:39:30 2006
@@ -1,5 +1,5 @@
#Build version info
-#Mon Aug 14 01:41:36 MDT 2006
+#Mon Aug 14 12:30:47 CDT 2006
version=2.1.7
-buildDate=2006/08/14 01\:41
-buildNum=628
+buildDate=2006/08/14 12\:30
+buildNum=631
Modified: ibatis/trunk/java/mapper/mapper2/doc/release.txt
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/doc/release.txt?rev=431385&r1=431384&r2=431385&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/doc/release.txt (original)
+++ ibatis/trunk/java/mapper/mapper2/doc/release.txt Mon Aug 14 10:39:30 2006
@@ -26,6 +26,7 @@
o Fixed IBATIS-293 - Fix use of list[]-notation in propertyattributes of
dynamic tags
o Fixed IBATIS-322 - consistently use the Resources class methods rather than
Class.forName()
o Fixed IBATIS-323 - JDBC driver properties not added to driver/connection
when using DBCP
+ o Fixed IBATIS-331 - nested result mappings not propagated to extended result
maps
o Added IBATIS-22 - Specify Query Timeout
o Added IBATIS-50 - Ability to override the default bean creation mechanism
Modified:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java?rev=431385&r1=431384&r2=431385&view=diff
==============================================================================
---
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java
(original)
+++
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java
Mon Aug 14 10:39:30 2006
@@ -20,6 +20,7 @@
import java.io.Reader;
import java.util.ArrayList;
+import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.Iterator;
@@ -377,6 +378,15 @@
for (int i = 0; i < resultMappings.length; i++) {
vars.resultMappingList.add(resultMappings[i]);
}
+
+ List nestedResultMappings =
extendedResultMap.getNestedResultMappings();
+ if (nestedResultMappings != null) {
+ Iterator iter = nestedResultMappings.iterator();
+ while (iter.hasNext()) {
+ vars.currentResultMap.addNestedResultMappings((ResultMapping)
iter.next());
+ }
+ }
+
if (groupBy == null || groupBy.length() == 0) {
if (extendedResultMap.hasGroupBy()) {
Iterator i = extendedResultMap.groupByProps();
Modified:
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java?rev=431385&r1=431384&r2=431385&view=diff
==============================================================================
---
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java
(original)
+++
ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java
Mon Aug 14 10:39:30 2006
@@ -227,6 +227,10 @@
nestedResultMappings.add(mapping);
}
+ public List getNestedResultMappings() {
+ return nestedResultMappings;
+ }
+
public ResultMapping[] getResultMappings() {
if (allowRemapping) {
return (ResultMapping[]) remappableResultMappings.get();
Modified:
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java?rev=431385&r1=431384&r2=431385&view=diff
==============================================================================
---
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java
(original)
+++
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java
Mon Aug 14 10:39:30 2006
@@ -56,4 +56,30 @@
assertTrue(((PersonDocument)list.get(2)).getFavoriteDocument() instanceof
Document);
}
+
+ public void testDiscriminatorWithNestedResultMap() throws Exception {
+ List list = sqlMap.queryForList("getDocumentsWithAttributes");
+ assertEquals(6, list.size());
+
+ assertTrue(list.get(0) instanceof Book);
+ Book b = (Book) list.get(0);
+ assertEquals(2, b.getAttributes().size());
+
+ assertTrue(list.get(1) instanceof Magazine);
+ Magazine m = (Magazine) list.get(1);
+ assertEquals(1, m.getAttributes().size());
+
+ assertTrue(list.get(2) instanceof Book);
+ b = (Book) list.get(2);
+ assertEquals(2, b.getAttributes().size());
+
+ Document d = (Document) list.get(3);
+ assertEquals(0, d.getAttributes().size());
+
+ d = (Document) list.get(4);
+ assertEquals(0, d.getAttributes().size());
+
+ d = (Document) list.get(5);
+ assertEquals(0, d.getAttributes().size());
+ }
}
Modified:
ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml?rev=431385&r1=431384&r2=431385&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml
(original)
+++ ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml
Mon Aug 14 10:39:30 2006
@@ -24,6 +24,17 @@
</discriminator>
</resultMap>
+ <resultMap id="documentWithAttributes" class="testdomain.Document"
groupBy="id">
+ <result property="id" column="DOCUMENT_ID"/>
+ <result property="title" column="DOCUMENT_TITLE"/>
+ <result property="type" column="DOCUMENT_TYPE"/>
+ <result property="attributes" resultMap="Documents.documentAttributes" />
+ <discriminator column="DOCUMENT_TYPE" javaType="string" >
+ <subMap value="Book" resultMap="bookWithAttributes"/>
+ <subMap value="Newspaper" resultMap="newsWithAttributes"/>
+ </discriminator>
+ </resultMap>
+
<resultMap id="book" class="testdomain.Book" extends="document">
<result property="pages" column="DOCUMENT_PAGENUMBER"/>
</resultMap>
@@ -31,6 +42,25 @@
<resultMap id="news" class="testdomain.Magazine" extends="document">
<result property="city" column="DOCUMENT_CITY"/>
</resultMap>
+
+ <resultMap id="bookWithAttributes" class="testdomain.Book"
extends="documentWithAttributes">
+ <result property="pages" column="DOCUMENT_PAGENUMBER"/>
+ </resultMap>
+
+ <resultMap id="newsWithAttributes" class="testdomain.Magazine"
extends="documentWithAttributes">
+ <result property="city" column="DOCUMENT_CITY"/>
+ </resultMap>
+
+ <resultMap id="documentAttributes" class="java.lang.String">
+ <result property="value" column="attribute" />
+ </resultMap>
+
+ <select id="getDocumentsWithAttributes" resultMap="documentWithAttributes">
+ select a.*, b.attribute
+ from Documents a left join Document_Attributes b
+ on a.document_id = b.document_id
+ order by a.document_id
+ </select>
<select id="getPersonDocuments" resultMap="personDocument" >
select a.person_id, a.person_name, b.document_id,
Modified: ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql?rev=431385&r1=431384&r2=431385&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql (original)
+++ ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql Mon Aug 14
10:39:30 2006
@@ -1,5 +1,6 @@
DROP TABLE DOCUMENTS;
DROP TABLE PERSON_DOCUMENTS;
+DROP TABLE DOCUMENT_ATTRIBUTES;
CREATE TABLE DOCUMENTS (
DOCUMENT_ID INTEGER NOT NULL,
@@ -27,3 +28,14 @@
insert into person_documents values (1, 'Jeff', 2);
insert into person_documents values (2, 'Matt', 3);
insert into person_documents values (3, 'Amy', 6);
+
+create table Document_Attributes (
+ document_id int not null,
+ attribute varchar(50) not null
+);
+
+insert into Document_Attributes values (1, 'English');
+insert into Document_Attributes values (1, 'Sci-Fi');
+insert into Document_Attributes values (2, 'French');
+insert into Document_Attributes values (3, 'English');
+insert into Document_Attributes values (3, 'Fantasy');
Modified: ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java?rev=431385&r1=431384&r2=431385&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java (original)
+++ ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java Mon Aug 14
10:39:30 2006
@@ -1,10 +1,13 @@
package testdomain;
+import java.util.List;
+
public class Document {
private int id;
private String title;
private String type;
+ private List attributes;
public int getId() {
return id;
@@ -28,6 +31,14 @@
public void setType(String type) {
this.type = type;
+ }
+
+ public List getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(List attributes) {
+ this.attributes = attributes;
}
}