Author: jgbutler
Date: Wed Aug  2 13:28:38 2006
New Revision: 428133

URL: http://svn.apache.org/viewvc?rev=428133&view=rev
Log:
Fixes and tests for IBATIS-225 - make sure that the discriminator is honored in 
a single valued nested resultMap

Added:
    ibatis/trunk/java/mapper/mapper2/test/testdomain/PersonDocument.java
Modified:
    ibatis/trunk/java/mapper/mapper2/build/version.properties
    
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

Modified: ibatis/trunk/java/mapper/mapper2/build/version.properties
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/build/version.properties?rev=428133&r1=428132&r2=428133&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/build/version.properties (original)
+++ ibatis/trunk/java/mapper/mapper2/build/version.properties Wed Aug  2 
13:28:38 2006
@@ -1,5 +1,5 @@
 #Build version info
-#Thu Jun 08 17:29:24 CDT 2006
+#Wed Aug 02 15:24:03 CDT 2006
 version=2.1.7
-buildDate=2006/06/08 17\:29
-buildNum=616
+buildDate=2006/08/02 15\:24
+buildNum=618

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=428133&r1=428132&r2=428133&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
 Wed Aug  2 13:28:38 2006
@@ -414,6 +414,9 @@
 
       String resultMapName = mapping.getNestedResultMapName();
       ResultMap resultMap = getDelegate().getResultMap(resultMapName);
+      // get the discriminated submap if it exists
+      resultMap = resultMap.resolveSubMap(request, request.getResultSet());
+      
       Class type = mapping.getJavaType();
       String propertyName = mapping.getPropertyName();
 

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=428133&r1=428132&r2=428133&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 
Wed Aug  2 13:28:38 2006
@@ -3,6 +3,7 @@
 import testdomain.Book;
 import testdomain.Magazine;
 import testdomain.Document;
+import testdomain.PersonDocument;
 
 import java.util.List;
 
@@ -46,4 +47,13 @@
   }
 
 
+  public void testDiscriminatorInNestedResultMap() throws Exception {
+    List list = sqlMap.queryForList("getPersonDocuments");
+    assertEquals(3, list.size());
+    
+    assertTrue(((PersonDocument)list.get(0)).getFavoriteDocument() instanceof 
Magazine);
+    assertTrue(((PersonDocument)list.get(1)).getFavoriteDocument() instanceof 
Book);
+    assertTrue(((PersonDocument)list.get(2)).getFavoriteDocument() instanceof 
Document);
+    
+  }
 }

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=428133&r1=428132&r2=428133&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 
Wed Aug  2 13:28:38 2006
@@ -6,6 +6,14 @@
 
 <sqlMap namespace="Documents">
 
+  <!-- this tests that the discriminator tags are picked up in
+   a single valued nested result map -->
+  <resultMap id="personDocument" class="testdomain.PersonDocument">
+    <result property="id" column="PERSON_ID" />
+    <result property="name" column="PERSON_NAME" />
+    <result property="favoriteDocument" resultMap="Documents.document"/>
+  </resultMap>
+
   <resultMap id="document" class="testdomain.Document">
     <result property="id" column="DOCUMENT_ID"/>
     <result property="title" column="DOCUMENT_TITLE"/>
@@ -23,6 +31,15 @@
   <resultMap id="news" class="testdomain.Magazine" extends="document">
     <result property="city" column="DOCUMENT_CITY"/>
   </resultMap>
+  
+  <select id="getPersonDocuments" resultMap="personDocument" >
+    select a.person_id, a.person_name, b.document_id,
+      b.document_title, b.document_type, b.document_city,
+      b.document_pagenumber
+    from person_documents a join documents b
+      on a.document_id = b.document_id
+    order by a.person_id
+  </select>
 
   <select id="getDocuments" resultMap="document">
     select * from DOCUMENTS

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=428133&r1=428132&r2=428133&view=diff
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql (original)
+++ ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql Wed Aug  2 
13:28:38 2006
@@ -1,4 +1,5 @@
 DROP TABLE DOCUMENTS;
+DROP TABLE PERSON_DOCUMENTS;
 
 CREATE TABLE DOCUMENTS  (
    DOCUMENT_ID           INTEGER                          NOT NULL,
@@ -15,3 +16,14 @@
 INSERT INTO DOCUMENTS VALUES (4, 'Le Canard enchaine', 'Newspaper', null , 
'Paris');
 INSERT INTO DOCUMENTS VALUES (5, 'Le Monde', 'Broadsheet', null , 'Paris');
 INSERT INTO DOCUMENTS VALUES (6, 'Foundation', 'Monograph', 557, null);
+
+CREATE TABLE PERSON_DOCUMENTS (
+  PERSON_ID INTEGER NOT NULL,
+  PERSON_NAME VARCHAR(50),
+  DOCUMENT_ID INTEGER NOT NULL,
+  PRIMARY KEY (PERSON_ID)
+);
+
+insert into person_documents values (1, 'Jeff', 2);
+insert into person_documents values (2, 'Matt', 3);
+insert into person_documents values (3, 'Amy', 6);

Added: ibatis/trunk/java/mapper/mapper2/test/testdomain/PersonDocument.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/mapper/mapper2/test/testdomain/PersonDocument.java?rev=428133&view=auto
==============================================================================
--- ibatis/trunk/java/mapper/mapper2/test/testdomain/PersonDocument.java (added)
+++ ibatis/trunk/java/mapper/mapper2/test/testdomain/PersonDocument.java Wed 
Aug  2 13:28:38 2006
@@ -0,0 +1,59 @@
+/*
+ *  Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package testdomain;
+
+/**
+ * @author Jeff Butler
+ *
+ */
+public class PersonDocument {
+  
+  private Integer id;
+  private String name;
+  private Document favoriteDocument;
+
+  /**
+   * 
+   */
+  public PersonDocument() {
+    super();
+  }
+
+  public Document getFavoriteDocument() {
+    return favoriteDocument;
+  }
+
+  public void setFavoriteDocument(Document favoriteDocument) {
+    this.favoriteDocument = favoriteDocument;
+  }
+
+  public Integer getId() {
+    return id;
+  }
+
+  public void setId(Integer id) {
+    this.id = id;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+}


Reply via email to