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