You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2005/05/14 10:12:50 UTC

svn commit: r170130 - in /incubator/ibatis/trunk/java/mapper/mapper2: doc/ src/com/ibatis/sqlmap/engine/builder/xml/ src/com/ibatis/sqlmap/engine/execution/ src/com/ibatis/sqlmap/engine/mapping/result/ src/com/ibatis/sqlmap/engine/mapping/statement/ test/com/ibatis/sqlmap/ test/com/ibatis/sqlmap/maps/ test/scripts/ test/testdomain/

Author: cbegin
Date: Sat May 14 01:12:49 2005
New Revision: 170130

URL: http://svn.apache.org/viewcvs?rev=170130&view=rev
Log:
added discriminator/subMap for class inheritance support

Added:
    incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java
    incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml
    incubator/ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql
    incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Book.java
    incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java
    incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Magazine.java
Modified:
    incubator/ibatis/trunk/java/mapper/mapper2/doc/release.txt
    incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java
    incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-2.dtd
    incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java
    incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java
    incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/Discriminator.java
    incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java
    incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/statement/RowHandlerCallback.java
    incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/BaseSqlMapTest.java
    incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/SqlMapConfig.xml

Modified: incubator/ibatis/trunk/java/mapper/mapper2/doc/release.txt
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/doc/release.txt?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/doc/release.txt (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/doc/release.txt Sat May 14 01:12:49 2005
@@ -4,7 +4,8 @@
 ------------------------------
  2.1.0 - May ??, 2004
 ------------------------------
- 
+
+ o Added <discriminator> and <subMap> tags for class inheritance support
  o Added removeFirstPrepend attribute to all tags 
  o Added open and close attributes to all dynamic tags to better handle complex queries that require bracketing
  o Fixed IBATIS-45 Removed JavaBeanProbe/MapProbe in favor of ComplexBeanProbe 

Modified: incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java Sat May 14 01:12:49 2005
@@ -10,10 +10,7 @@
 import com.ibatis.sqlmap.engine.cache.CacheModel;
 import com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap;
 import com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMapping;
-import com.ibatis.sqlmap.engine.mapping.result.BasicResultMap;
-import com.ibatis.sqlmap.engine.mapping.result.BasicResultMapping;
-import com.ibatis.sqlmap.engine.mapping.result.ResultMapping;
-import com.ibatis.sqlmap.engine.mapping.result.Discriminator;
+import com.ibatis.sqlmap.engine.mapping.result.*;
 import com.ibatis.sqlmap.engine.mapping.statement.*;
 import com.ibatis.sqlmap.engine.type.CustomTypeHandler;
 import com.ibatis.sqlmap.engine.type.TypeHandler;
@@ -23,6 +20,7 @@
 import java.util.ArrayList;
 import java.util.Properties;
 import java.util.StringTokenizer;
+import java.util.Iterator;
 
 public class SqlMapParser extends BaseParser {
 
@@ -54,6 +52,19 @@
         vars.currentNamespace = attributes.getProperty("namespace");
       }
     });
+    parser.addNodelet("/sqlMap/end()", new Nodelet() {
+      public void process(Node node) throws Exception {
+        Iterator names = vars.delegate.getResultMapNames();
+        while (names.hasNext()) {
+          String name = (String)names.next();
+          ResultMap rm = vars.delegate.getResultMap(name);
+          Discriminator disc = rm.getDiscriminator();
+          if (disc != null) {
+            disc.bindSubMaps();
+          }
+        }
+      }
+    });
   }
 
   private void addSqlNodelets() {
@@ -416,22 +427,13 @@
         Properties childAttributes = NodeletUtils.parseAttributes(node, vars.properties);
         String value = childAttributes.getProperty("value");
         String resultMap = childAttributes.getProperty("resultMap");
-        vars.discriminator.addSubMap(value, resultMap);
-      }
-    });
-
-    parser.addNodelet("/sqlMap/resultMap/discriminator/end()", new Nodelet() {
-      public void process(Node node) throws Exception {
-        if (vars.discriminator != null) {
-          vars.discriminator.bindSubMaps();
-        }
+        vars.discriminator.addSubMap(value, applyNamespace(resultMap));
       }
     });
 
     parser.addNodelet("/sqlMap/resultMap/discriminator", new Nodelet() {
       public void process(Node node) throws Exception {
         Properties childAttributes = NodeletUtils.parseAttributes(node, vars.properties);
-        String propertyName = childAttributes.getProperty("property");
         String nullValue = childAttributes.getProperty("nullValue");
         String jdbcType = childAttributes.getProperty("jdbcType");
         String javaType = childAttributes.getProperty("javaType");
@@ -442,8 +444,6 @@
         callback = vars.typeHandlerFactory.resolveAlias(callback);
         javaType = vars.typeHandlerFactory.resolveAlias(javaType);
 
-        vars.errorCtx.setObjectId(propertyName + " mapping of the " + vars.currentResultMap.getId() + " result map");
-
         TypeHandler handler = null;
         if (callback != null) {
           vars.errorCtx.setMoreInfo("Check the result mapping typeHandler attribute '" + callback + "' (must be a TypeHandlerCallback implementation).");
@@ -461,11 +461,10 @@
           }
         } else {
           vars.errorCtx.setMoreInfo("Check the result mapping property type or name.");
-          handler = resolveTypeHandler(vars.client.getDelegate().getTypeHandlerFactory(), vars.currentResultMap.getResultClass(), propertyName, javaType, jdbcType, true);
+          handler = resolveTypeHandler(vars.client.getDelegate().getTypeHandlerFactory(), vars.currentResultMap.getResultClass(), "", javaType, jdbcType, true);
         }
 
         BasicResultMapping mapping = new BasicResultMapping();
-        mapping.setPropertyName(propertyName);
         mapping.setColumnName(columnName);
         mapping.setJdbcTypeName(jdbcType);
         mapping.setTypeHandler(handler);

Modified: incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-2.dtd
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-2.dtd?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-2.dtd (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/sql-map-2.dtd Sat May 14 01:12:49 2005
@@ -58,8 +58,7 @@
 >
 <!ELEMENT discriminator (subMap+)>
 <!ATTLIST discriminator
-property CDATA #REQUIRED
-javaType CDATA #IMPLIED
+javaType CDATA #REQUIRED
 column CDATA #IMPLIED
 columnIndex CDATA #IMPLIED
 jdbcType CDATA #IMPLIED

Modified: incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/execution/SqlExecutor.java Sat May 14 01:12:49 2005
@@ -360,8 +360,8 @@
         // Get Results
         int resultsFetched = 0;
         while ((maxResults == SqlExecutor.NO_MAXIMUM_RESULTS || resultsFetched < maxResults) && rs.next()) {
-          Object[] columnValues = resultMap.getResults(request, rs);
-          callback.handleResultObject(request, columnValues);
+          Object[] columnValues = resultMap.resolveSubMap(request, rs).getResults(request, rs);
+          callback.handleResultObject(request, columnValues, rs);
           resultsFetched++;
         }
       }

Modified: incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java Sat May 14 01:12:49 2005
@@ -218,6 +218,25 @@
     this.discriminator = discriminator;
   }
 
+  public Discriminator getDiscriminator() {
+    return discriminator;
+  }
+
+  public ResultMap resolveSubMap (RequestScope request, ResultSet rs) throws SQLException {
+    ResultMap subMap = this;
+    if (discriminator != null) {
+      BasicResultMapping mapping = (BasicResultMapping)discriminator.getResultMapping();
+      Object value = getPrimitiveResultMappingValue(rs, mapping);
+      subMap = discriminator.getSubMap(String.valueOf(value));
+      if (subMap == null) {
+        subMap = this;
+      } else if (subMap != this) {
+        subMap = subMap.resolveSubMap(request, rs);
+      }
+    }
+    return subMap;
+  }
+
   /**
    * Setter for a list of the individual ResultMapping objects
    *

Modified: incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/Discriminator.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/Discriminator.java?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/Discriminator.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/Discriminator.java Sat May 14 01:12:49 2005
@@ -39,6 +39,10 @@
     subMaps.put(discriminatorValue, resultMapName);
   }
 
+  public ResultMap getSubMap(String s) {
+    return (ResultMap) subMaps.get(s);
+  }
+
   public void bindSubMaps() {
     if (subMaps != null) {
       Iterator keys = subMaps.keySet().iterator();
@@ -51,6 +55,5 @@
       }
     }
   }
-
 
 }

Modified: incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/ResultMap.java Sat May 14 01:12:49 2005
@@ -80,4 +80,7 @@
    */
   public Object getUniqueKey(Object[] values);
 
+  public ResultMap resolveSubMap (RequestScope request, ResultSet rs) throws SQLException;
+
+  public Discriminator getDiscriminator();
 }

Modified: incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/statement/RowHandlerCallback.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/statement/RowHandlerCallback.java?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/statement/RowHandlerCallback.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/statement/RowHandlerCallback.java Sat May 14 01:12:49 2005
@@ -26,6 +26,8 @@
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import java.io.StringWriter;
+import java.sql.ResultSet;
+import java.sql.SQLException;
 
 /**
  * Class to manager row handler access
@@ -55,10 +57,10 @@
    * @param request - the request scope
    * @param results - the result data
    */
-  public void handleResultObject(RequestScope request, Object[] results) {
+  public void handleResultObject(RequestScope request, Object[] results, ResultSet rs) throws SQLException {
     Object object;
 
-    object = resultMap.setResultObjectValues(request, resultObject, results);
+    object = resultMap.resolveSubMap(request, rs).setResultObjectValues(request, resultObject, results);
 
     if (object != ResultMap.NO_VALUE) {
       //  XML Only special processing. (converts elements to string for easy insertion).

Modified: incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/BaseSqlMapTest.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/BaseSqlMapTest.java?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/BaseSqlMapTest.java (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/BaseSqlMapTest.java Sat May 14 01:12:49 2005
@@ -10,6 +10,7 @@
 
 import javax.sql.DataSource;
 import java.io.Reader;
+import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;

Added: incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java?rev=170130&view=auto
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java (added)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/DiscriminatorTest.java Sat May 14 01:12:49 2005
@@ -0,0 +1,49 @@
+package com.ibatis.sqlmap;
+
+import testdomain.Book;
+import testdomain.Magazine;
+import testdomain.Document;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: cbegin
+ * Date: May 14, 2005
+ * Time: 1:19:54 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class DiscriminatorTest extends BaseSqlMapTest {
+
+   protected void setUp() throws Exception {
+    initSqlMap("com/ibatis/sqlmap/maps/SqlMapConfig.xml", null);
+    initScript("scripts/docs-init.sql");
+  }
+
+  public void testDiscriminator () throws Exception {
+
+    List list = sqlMap.queryForList("getDocuments",null);
+    assertEquals(6, list.size());
+
+    assertTrue (list.get(0) instanceof Book);
+    assertTrue (list.get(1) instanceof Magazine);
+    assertTrue (list.get(2) instanceof Book);
+    assertTrue (list.get(3) instanceof Magazine);
+    assertTrue (list.get(4) instanceof Document);
+    assertTrue (list.get(5) instanceof Document);
+
+    assertEquals(1, ((Document)list.get(0)).getId());
+    assertEquals(2, ((Document)list.get(1)).getId());
+    assertEquals(3, ((Document)list.get(2)).getId());
+    assertEquals(4, ((Document)list.get(3)).getId());
+    assertEquals(5, ((Document)list.get(4)).getId());
+    assertEquals(6, ((Document)list.get(5)).getId());
+
+    assertEquals(new Integer(55),((Book)list.get(0)).getPages());
+    assertEquals("Lyon",((Magazine)list.get(1)).getCity());
+    assertEquals(new Integer(3587),((Book)list.get(2)).getPages());
+    assertEquals("Paris",((Magazine)list.get(3)).getCity());
+  }
+
+
+}

Added: incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml?rev=170130&view=auto
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml (added)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/Documents.xml Sat May 14 01:12:49 2005
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE sqlMap
+    PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
+    "http://www.ibatis.com/dtd/sql-map-2.dtd">
+
+<sqlMap namespace="Documents">
+
+  <resultMap id="document" class="testdomain.Document">
+    <result property="id" column="DOCUMENT_ID"/>
+    <result property="title" column="DOCUMENT_TITLE"/>
+    <result property="type" column="DOCUMENT_TYPE"/>
+    <discriminator column="DOCUMENT_TYPE" javaType="string" >
+      <subMap value="Book" resultMap="book"/>
+      <subMap value="Newspaper" resultMap="news"/>
+    </discriminator>
+  </resultMap>
+
+  <resultMap id="book" class="testdomain.Book" extends="document">
+    <result property="pages" column="DOCUMENT_PAGENUMBER"/>
+  </resultMap>
+
+  <resultMap id="news" class="testdomain.Magazine" extends="document">
+    <result property="city" column="DOCUMENT_CITY"/>
+  </resultMap>
+
+  <select id="getDocuments" resultMap="document">
+    select * from DOCUMENTS
+  </select>
+
+</sqlMap>
\ No newline at end of file

Modified: incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/SqlMapConfig.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/SqlMapConfig.xml?rev=170130&r1=170129&r2=170130&view=diff
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/SqlMapConfig.xml (original)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/SqlMapConfig.xml Sat May 14 01:12:49 2005
@@ -54,5 +54,6 @@
   <sqlMap resource="${SqlMapPath}/XmlStatements.xml"/>
   <sqlMap resource="${SqlMapPath}/DomStatements.xml"/>
   <sqlMap resource="${SqlMapPath}/RepeatingGroupMapping.xml"/>
+  <sqlMap resource="${SqlMapPath}/Documents.xml"/>
 
 </sqlMapConfig>

Added: incubator/ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql?rev=170130&view=auto
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql (added)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/scripts/docs-init.sql Sat May 14 01:12:49 2005
@@ -0,0 +1,17 @@
+DROP TABLE DOCUMENTS;
+
+CREATE TABLE DOCUMENTS  (
+   DOCUMENT_ID           INTEGER                          NOT NULL,
+   DOCUMENT_TITLE        VARCHAR(32),
+   DOCUMENT_TYPE         VARCHAR(32),
+   DOCUMENT_PAGENUMBER   INTEGER,
+   DOCUMENT_CITY         VARCHAR(32),
+   PRIMARY KEY (DOCUMENT_ID)
+);
+
+INSERT INTO DOCUMENTS VALUES (1, 'The World of Null-A', 'Book', 55, null);
+INSERT INTO DOCUMENTS VALUES (2, 'Le Progres de Lyon', 'Newspaper', null , 'Lyon');
+INSERT INTO DOCUMENTS VALUES (3, 'Lord of the Rings', 'Book', 3587, null);
+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);

Added: incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Book.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Book.java?rev=170130&view=auto
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Book.java (added)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Book.java Sat May 14 01:12:49 2005
@@ -0,0 +1,22 @@
+package testdomain;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: cbegin
+ * Date: May 14, 2005
+ * Time: 1:39:55 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Book extends Document {
+
+  private Integer pages;
+
+  public Integer getPages() {
+    return pages;
+  }
+
+  public void setPages(Integer pages) {
+    this.pages = pages;
+  }
+
+}

Added: incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java?rev=170130&view=auto
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java (added)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Document.java Sat May 14 01:12:49 2005
@@ -0,0 +1,33 @@
+package testdomain;
+
+public class Document {
+
+  private int id;
+  private String title;
+  private String type;
+
+  public int getId() {
+    return id;
+  }
+
+  public void setId(int id) {
+    this.id = id;
+  }
+
+  public String getTitle() {
+    return title;
+  }
+
+  public void setTitle(String title) {
+    this.title = title;
+  }
+
+  public String getType() {
+    return type;
+  }
+
+  public void setType(String type) {
+    this.type = type;
+  }
+
+}

Added: incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Magazine.java
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Magazine.java?rev=170130&view=auto
==============================================================================
--- incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Magazine.java (added)
+++ incubator/ibatis/trunk/java/mapper/mapper2/test/testdomain/Magazine.java Sat May 14 01:12:49 2005
@@ -0,0 +1,22 @@
+package testdomain;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: cbegin
+ * Date: May 14, 2005
+ * Time: 1:40:08 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Magazine extends Document {
+
+  private String city;
+
+  public String getCity() {
+    return city;
+  }
+
+  public void setCity(String city) {
+    this.city = city;
+  }
+
+}