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;
   }
 
 }


Reply via email to