http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/resources/testmap.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/testmap.map.xml 
b/cayenne-server/src/test/resources/testmap.map.xml
new file mode 100644
index 0000000..52a8a67
--- /dev/null
+++ b/cayenne-server/src/test/resources/testmap.map.xml
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/7/modelMap";
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+        xsi:schemaLocation="http://cayenne.apache.org/schema/7/modelMap 
http://cayenne.apache.org/schema/7/modelMap.xsd";
+        project-version="7">
+       <property name="defaultPackage" 
value="org.apache.cayenne.testdo.testmap"/>
+       <property name="defaultSuperclass" 
value="org.apache.cayenne.CayenneDataObject"/>
+       <property name="clientSupported" value="true"/>
+       <property name="defaultClientPackage" value="test.client"/>
+       <property name="defaultClientSuperclass" 
value="org.apache.cayenne.PersistentObject"/>
+       <procedure name="cayenne_test_out_proc">
+               <procedure-parameter name="in_param" type="INTEGER" 
direction="in"/>
+               <procedure-parameter name="out_param" type="INTEGER" 
direction="out"/>
+       </procedure>
+       <procedure name="cayenne_test_select_proc">
+               <procedure-parameter name="aName" type="VARCHAR" length="254" 
direction="in"/>
+               <procedure-parameter name="paintingPrice" type="INTEGER" 
direction="in"/>
+       </procedure>
+       <procedure name="cayenne_test_upd_proc">
+               <procedure-parameter name="paintingPrice" type="INTEGER" 
direction="in"/>
+       </procedure>Ï
+       <procedure name="cayenne_test_upd_proc2">
+       </procedure>
+       <db-entity name="ARTGROUP">
+               <db-attribute name="GROUP_ID" type="INTEGER" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="NAME" type="VARCHAR" isMandatory="true" 
length="100"/>
+               <db-attribute name="PARENT_GROUP_ID" type="INTEGER"/>
+       </db-entity>
+       <db-entity name="ARTIST">
+               <db-attribute name="ARTIST_ID" type="BIGINT" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="ARTIST_NAME" type="CHAR" isMandatory="true" 
length="254"/>
+               <db-attribute name="DATE_OF_BIRTH" type="DATE"/>
+       </db-entity>
+       <db-entity name="ARTIST_CT">
+               <db-attribute name="ARTIST_ID" type="INTEGER" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="ARTIST_NAME" type="CHAR" isMandatory="true" 
length="254"/>
+               <db-attribute name="DATE_OF_BIRTH" type="DATE"/>
+       </db-entity>
+       <db-entity name="ARTIST_EXHIBIT">
+               <db-attribute name="ARTIST_ID" type="BIGINT" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="EXHIBIT_ID" type="INTEGER" 
isPrimaryKey="true" isMandatory="true"/>
+       </db-entity>
+       <db-entity name="ARTIST_GROUP">
+               <db-attribute name="ARTIST_ID" type="BIGINT" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="GROUP_ID" type="INTEGER" 
isPrimaryKey="true" isMandatory="true"/>
+       </db-entity>
+       <db-entity name="EXHIBIT">
+               <db-attribute name="CLOSING_DATE" type="TIMESTAMP" 
isMandatory="true"/>
+               <db-attribute name="EXHIBIT_ID" type="INTEGER" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="GALLERY_ID" type="INTEGER" 
isMandatory="true"/>
+               <db-attribute name="OPENING_DATE" type="TIMESTAMP" 
isMandatory="true"/>
+       </db-entity>
+       <db-entity name="GALLERY">
+               <db-attribute name="GALLERY_ID" type="INTEGER" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="GALLERY_NAME" type="VARCHAR" 
isMandatory="true" length="100"/>
+       </db-entity>
+       <db-entity name="GENERATED_COLUMN">
+               <db-attribute name="GENERATED_COLUMN" type="INTEGER" 
isPrimaryKey="true" isGenerated="true" isMandatory="true"/>
+               <db-attribute name="NAME" type="VARCHAR" length="250"/>
+       </db-entity>
+       <db-entity name="NULL_TEST">
+               <db-attribute name="ID" type="BIGINT" isPrimaryKey="true" 
isGenerated="true" isMandatory="true"/>
+               <db-attribute name="NAME" type="VARCHAR" length="100"/>
+       </db-entity>
+       <db-entity name="PAINTING">
+               <db-attribute name="ARTIST_ID" type="BIGINT"/>
+               <db-attribute name="ESTIMATED_PRICE" type="DECIMAL" length="10" 
scale="2"/>
+               <db-attribute name="GALLERY_ID" type="INTEGER"/>
+               <db-attribute name="PAINTING_DESCRIPTION" type="VARCHAR" 
length="255"/>
+               <db-attribute name="PAINTING_ID" type="INTEGER" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="PAINTING_TITLE" type="VARCHAR" 
isMandatory="true" length="255"/>
+       </db-entity>
+       <db-entity name="PAINTING1">
+               <db-attribute name="ARTIST_ID" type="BIGINT"/>
+               <db-attribute name="ESTIMATED_PRICE" type="DECIMAL" length="10" 
scale="2"/>
+               <db-attribute name="GALLERY_ID" type="INTEGER"/>
+               <db-attribute name="PAINTING_ID" type="INTEGER" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="PAINTING_TITLE" type="VARCHAR" 
isMandatory="true" length="255"/>
+       </db-entity>
+       <db-entity name="PAINTING_INFO">
+               <db-attribute name="IMAGE_BLOB" type="LONGVARBINARY"/>
+               <db-attribute name="PAINTING_ID" type="INTEGER" 
isPrimaryKey="true" isMandatory="true"/>
+               <db-attribute name="TEXT_REVIEW" type="LONGVARCHAR"/>
+       </db-entity>
+       <obj-entity name="ArtGroup" 
className="org.apache.cayenne.testdo.testmap.ArtGroup" dbEntityName="ARTGROUP">
+               <obj-attribute name="name" type="java.lang.String" 
db-attribute-path="NAME"/>
+       </obj-entity>
+       <obj-entity name="Artist" 
className="org.apache.cayenne.testdo.testmap.Artist" dbEntityName="ARTIST">
+               <obj-attribute name="artistName" type="java.lang.String" 
db-attribute-path="ARTIST_NAME"/>
+               <obj-attribute name="dateOfBirth" type="java.util.Date" 
db-attribute-path="DATE_OF_BIRTH"/>
+       </obj-entity>
+       <obj-entity name="ArtistCallback" 
className="org.apache.cayenne.testdo.testmap.ArtistCallback" 
dbEntityName="ARTIST_CT" exclude-superclass-listeners="true" 
exclude-default-listeners="true">
+               <obj-attribute name="artistName" type="java.lang.String"/>
+               <obj-attribute name="dateOfBirth" type="java.util.Date"/>
+               <post-add method-name="prePersistEntityObjEntity"/>
+               <post-persist method-name="postPersistEntityObjEntity"/>
+               <pre-update method-name="preUpdateEntityObjEntity"/>
+               <post-update method-name="postUpdateEntityObjEntity"/>
+               <pre-remove method-name="preRemoveEntityObjEntity"/>
+               <post-remove method-name="postRemoveEntityObjEntity"/>
+               <post-load method-name="postLoadEntityObjEntity"/>
+       </obj-entity>
+       <obj-entity name="ArtistExhibit" 
className="org.apache.cayenne.testdo.testmap.ArtistExhibit" 
dbEntityName="ARTIST_EXHIBIT">
+       </obj-entity>
+       <obj-entity name="CompoundPainting" 
className="org.apache.cayenne.testdo.testmap.CompoundPainting" 
dbEntityName="PAINTING">
+               <obj-attribute name="artistName" type="java.lang.String" 
db-attribute-path="toArtist.ARTIST_NAME"/>
+               <obj-attribute name="estimatedPrice" 
type="java.math.BigDecimal" db-attribute-path="ESTIMATED_PRICE"/>
+               <obj-attribute name="galleryName" type="java.lang.String" 
db-attribute-path="toGallery.GALLERY_NAME"/>
+               <obj-attribute name="paintingTitle" type="java.lang.String" 
db-attribute-path="PAINTING_TITLE"/>
+               <obj-attribute name="textReview" type="java.lang.String" 
db-attribute-path="toPaintingInfo.TEXT_REVIEW"/>
+       </obj-entity>
+       <obj-entity name="CompoundPaintingLongNames" 
className="org.apache.cayenne.testdo.testmap.CompoundPaintingLongNames" 
clientClassName="test.client.CompoundPaintingLongNames" dbEntityName="PAINTING" 
superClassName="org.apache.cayenne.CayenneDataObject" 
clientSuperClassName="org.apache.cayenne.PersistentObject">
+               <obj-attribute name="artistLongName" type="java.lang.String" 
db-attribute-path="toArtist.ARTIST_NAME"/>
+               <obj-attribute name="estimatedPrice" 
type="java.math.BigDecimal" db-attribute-path="ESTIMATED_PRICE"/>
+               <obj-attribute name="galleryLongName" type="java.lang.String" 
db-attribute-path="toGallery.GALLERY_NAME"/>
+               <obj-attribute name="paintingDescription" 
type="java.lang.String" db-attribute-path="PAINTING_DESCRIPTION"/>
+               <obj-attribute name="paintingTitle" type="java.lang.String" 
db-attribute-path="PAINTING_TITLE"/>
+               <obj-attribute name="textLongReview" type="java.lang.String" 
db-attribute-path="toPaintingInfo.TEXT_REVIEW"/>
+       </obj-entity>
+       <obj-entity name="Exhibit" 
className="org.apache.cayenne.testdo.testmap.Exhibit" dbEntityName="EXHIBIT">
+               <obj-attribute name="closingDate" type="java.util.Date" 
db-attribute-path="CLOSING_DATE"/>
+               <obj-attribute name="openingDate" type="java.util.Date" 
db-attribute-path="OPENING_DATE"/>
+       </obj-entity>
+       <obj-entity name="Gallery" 
className="org.apache.cayenne.testdo.testmap.Gallery" dbEntityName="GALLERY">
+               <obj-attribute name="galleryName" type="java.lang.String" 
db-attribute-path="GALLERY_NAME"/>
+       </obj-entity>
+       <obj-entity name="MeaningfulGeneratedColumnTestEntity" 
className="org.apache.cayenne.testdo.testmap.MeaningfulGeneratedColumnTestEntity"
 dbEntityName="GENERATED_COLUMN">
+               <obj-attribute name="generatedColumn" type="java.lang.Integer" 
db-attribute-path="GENERATED_COLUMN"/>
+               <obj-attribute name="name" type="java.lang.String" 
db-attribute-path="NAME"/>
+       </obj-entity>
+       <obj-entity name="NullTestEntity" 
className="org.apache.cayenne.testdo.testmap.NullTestEntity" 
dbEntityName="NULL_TEST">
+               <obj-attribute name="name" type="java.lang.String" 
db-attribute-path="NAME"/>
+       </obj-entity>
+       <obj-entity name="Painting" 
className="org.apache.cayenne.testdo.testmap.Painting" dbEntityName="PAINTING" 
superClassName="org.apache.cayenne.testdo.testmap.ArtDataObject">
+               <obj-attribute name="estimatedPrice" 
type="java.math.BigDecimal" db-attribute-path="ESTIMATED_PRICE"/>
+               <obj-attribute name="paintingDescription" 
type="java.lang.String" db-attribute-path="PAINTING_DESCRIPTION"/>
+               <obj-attribute name="paintingTitle" type="java.lang.String" 
db-attribute-path="PAINTING_TITLE"/>
+       </obj-entity>
+       <obj-entity name="Painting1" 
className="org.apache.cayenne.testdo.testmap.Painting1" 
dbEntityName="PAINTING1">
+               <obj-attribute name="estimatedPrice" 
type="java.math.BigDecimal" db-attribute-path="ESTIMATED_PRICE"/>
+               <obj-attribute name="paintingTitle" type="java.lang.String" 
db-attribute-path="PAINTING_TITLE"/>
+       </obj-entity>
+       <obj-entity name="PaintingInfo" 
className="org.apache.cayenne.testdo.testmap.PaintingInfo" 
dbEntityName="PAINTING_INFO">
+               <obj-attribute name="imageBlob" type="byte[]" 
db-attribute-path="IMAGE_BLOB"/>
+               <obj-attribute name="textReview" type="java.lang.String" 
db-attribute-path="TEXT_REVIEW"/>
+       </obj-entity>
+       <obj-entity name="ROArtist" 
className="org.apache.cayenne.testdo.testmap.ROArtist" readOnly="true" 
dbEntityName="ARTIST">
+               <obj-attribute name="artistName" type="java.lang.String" 
db-attribute-path="ARTIST_NAME"/>
+               <obj-attribute name="dateOfBirth" type="java.sql.Date" 
db-attribute-path="DATE_OF_BIRTH"/>
+       </obj-entity>
+       <obj-entity name="ROPainting" 
className="org.apache.cayenne.testdo.testmap.ROPainting" readOnly="true" 
dbEntityName="PAINTING">
+               <obj-attribute name="estimatedPrice" 
type="java.math.BigDecimal" db-attribute-path="ESTIMATED_PRICE"/>
+               <obj-attribute name="paintingTitle" type="java.lang.String" 
db-attribute-path="PAINTING_TITLE"/>
+       </obj-entity>
+       <obj-entity name="RWCompoundPainting" 
className="org.apache.cayenne.testdo.testmap.RWCompoundPainting" 
dbEntityName="PAINTING">
+               <obj-attribute name="estimatedPrice" 
type="java.math.BigDecimal" db-attribute-path="ESTIMATED_PRICE"/>
+               <obj-attribute name="paintingTitle" type="java.lang.String" 
db-attribute-path="PAINTING_TITLE"/>
+               <obj-attribute name="textReview" type="java.lang.String" 
db-attribute-path="toPaintingInfo.TEXT_REVIEW"/>
+       </obj-entity>
+       <obj-entity name="SubPainting" 
className="org.apache.cayenne.testdo.testmap.SubPainting" 
dbEntityName="PAINTING">
+               <obj-attribute name="paintingTitle" type="java.lang.String" 
db-attribute-path="PAINTING_TITLE"/>
+       </obj-entity>
+       <db-relationship name="artistGroupArray" source="ARTGROUP" 
target="ARTIST_GROUP" toMany="true">
+               <db-attribute-pair source="GROUP_ID" target="GROUP_ID"/>
+       </db-relationship>
+       <db-relationship name="toChildGroups" source="ARTGROUP" 
target="ARTGROUP" toMany="true">
+               <db-attribute-pair source="GROUP_ID" target="PARENT_GROUP_ID"/>
+       </db-relationship>
+       <db-relationship name="toParentGroup" source="ARTGROUP" 
target="ARTGROUP" toMany="false">
+               <db-attribute-pair source="PARENT_GROUP_ID" target="GROUP_ID"/>
+       </db-relationship>
+       <db-relationship name="artistExhibitArray" source="ARTIST" 
target="ARTIST_EXHIBIT" toDependentPK="true" toMany="true">
+               <db-attribute-pair source="ARTIST_ID" target="ARTIST_ID"/>
+       </db-relationship>
+       <db-relationship name="artistGroupArray" source="ARTIST" 
target="ARTIST_GROUP" toMany="true">
+               <db-attribute-pair source="ARTIST_ID" target="ARTIST_ID"/>
+       </db-relationship>
+       <db-relationship name="paintingArray" source="ARTIST" target="PAINTING" 
toMany="true">
+               <db-attribute-pair source="ARTIST_ID" target="ARTIST_ID"/>
+       </db-relationship>
+       <db-relationship name="toArtist" source="ARTIST_EXHIBIT" 
target="ARTIST" toMany="false">
+               <db-attribute-pair source="ARTIST_ID" target="ARTIST_ID"/>
+       </db-relationship>
+       <db-relationship name="toExhibit" source="ARTIST_EXHIBIT" 
target="EXHIBIT" toMany="false">
+               <db-attribute-pair source="EXHIBIT_ID" target="EXHIBIT_ID"/>
+       </db-relationship>
+       <db-relationship name="toArtist" source="ARTIST_GROUP" target="ARTIST" 
toMany="false">
+               <db-attribute-pair source="ARTIST_ID" target="ARTIST_ID"/>
+       </db-relationship>
+       <db-relationship name="toGroup" source="ARTIST_GROUP" target="ARTGROUP" 
toMany="false">
+               <db-attribute-pair source="GROUP_ID" target="GROUP_ID"/>
+       </db-relationship>
+       <db-relationship name="artistExhibitArray" source="EXHIBIT" 
target="ARTIST_EXHIBIT" toDependentPK="true" toMany="true">
+               <db-attribute-pair source="EXHIBIT_ID" target="EXHIBIT_ID"/>
+       </db-relationship>
+       <db-relationship name="toGallery" source="EXHIBIT" target="GALLERY" 
toMany="false">
+               <db-attribute-pair source="GALLERY_ID" target="GALLERY_ID"/>
+       </db-relationship>
+       <db-relationship name="exhibitArray" source="GALLERY" target="EXHIBIT" 
toMany="true">
+               <db-attribute-pair source="GALLERY_ID" target="GALLERY_ID"/>
+       </db-relationship>
+       <db-relationship name="paintingArray" source="GALLERY" 
target="PAINTING" toMany="true">
+               <db-attribute-pair source="GALLERY_ID" target="GALLERY_ID"/>
+       </db-relationship>
+       <db-relationship name="toArtist" source="PAINTING" target="ARTIST" 
toMany="false">
+               <db-attribute-pair source="ARTIST_ID" target="ARTIST_ID"/>
+       </db-relationship>
+       <db-relationship name="toGallery" source="PAINTING" target="GALLERY" 
toMany="false">
+               <db-attribute-pair source="GALLERY_ID" target="GALLERY_ID"/>
+       </db-relationship>
+       <db-relationship name="toPaintingInfo" source="PAINTING" 
target="PAINTING_INFO" toDependentPK="true" toMany="false">
+               <db-attribute-pair source="PAINTING_ID" target="PAINTING_ID"/>
+       </db-relationship>
+       <db-relationship name="toArtist" source="PAINTING1" target="ARTIST" 
toMany="false">
+               <db-attribute-pair source="ARTIST_ID" target="ARTIST_ID"/>
+       </db-relationship>
+       <db-relationship name="painting" source="PAINTING_INFO" 
target="PAINTING" toMany="false">
+               <db-attribute-pair source="PAINTING_ID" target="PAINTING_ID"/>
+       </db-relationship>
+       <obj-relationship name="artistArray" source="ArtGroup" target="Artist" 
deleteRule="Nullify" db-relationship-path="artistGroupArray.toArtist"/>
+       <obj-relationship name="childGroupsArray" source="ArtGroup" 
target="ArtGroup" deleteRule="Nullify" db-relationship-path="toChildGroups"/>
+       <obj-relationship name="toParentGroup" source="ArtGroup" 
target="ArtGroup" deleteRule="Nullify" db-relationship-path="toParentGroup"/>
+       <obj-relationship name="artistExhibitArray" source="Artist" 
target="ArtistExhibit" deleteRule="Cascade" 
db-relationship-path="artistExhibitArray"/>
+       <obj-relationship name="groupArray" source="Artist" target="ArtGroup" 
deleteRule="Cascade" db-relationship-path="artistGroupArray.toGroup"/>
+       <obj-relationship name="paintingArray" source="Artist" 
target="Painting" deleteRule="Cascade" db-relationship-path="paintingArray"/>
+       <obj-relationship name="toArtist" source="ArtistExhibit" 
target="Artist" deleteRule="Nullify" db-relationship-path="toArtist"/>
+       <obj-relationship name="toExhibit" source="ArtistExhibit" 
target="Exhibit" deleteRule="Nullify" db-relationship-path="toExhibit"/>
+       <obj-relationship name="toArtist" source="CompoundPainting" 
target="Artist" deleteRule="Nullify" db-relationship-path="toArtist"/>
+       <obj-relationship name="toGallery" source="CompoundPainting" 
target="Gallery" deleteRule="Nullify" db-relationship-path="toGallery"/>
+       <obj-relationship name="toPaintingInfo" source="CompoundPainting" 
target="PaintingInfo" deleteRule="Cascade" 
db-relationship-path="toPaintingInfo"/>
+       <obj-relationship name="toArtist" source="CompoundPaintingLongNames" 
target="Artist" deleteRule="Nullify" db-relationship-path="toArtist"/>
+       <obj-relationship name="toArtist1" source="CompoundPaintingLongNames" 
target="ROArtist" deleteRule="Nullify" db-relationship-path="toArtist"/>
+       <obj-relationship name="toGallery" source="CompoundPaintingLongNames" 
target="Gallery" deleteRule="Nullify" db-relationship-path="toGallery"/>
+       <obj-relationship name="toPaintingInfo" 
source="CompoundPaintingLongNames" target="PaintingInfo" deleteRule="Nullify" 
db-relationship-path="toPaintingInfo"/>
+       <obj-relationship name="artistExhibitArray" source="Exhibit" 
target="ArtistExhibit" deleteRule="Cascade" 
db-relationship-path="artistExhibitArray"/>
+       <obj-relationship name="toGallery" source="Exhibit" target="Gallery" 
deleteRule="Nullify" db-relationship-path="toGallery"/>
+       <obj-relationship name="exhibitArray" source="Gallery" target="Exhibit" 
deleteRule="Cascade" db-relationship-path="exhibitArray"/>
+       <obj-relationship name="paintingArray" source="Gallery" 
target="Painting" deleteRule="Deny" db-relationship-path="paintingArray"/>
+       <obj-relationship name="toArtist" source="Painting" target="Artist" 
deleteRule="Nullify" db-relationship-path="toArtist"/>
+       <obj-relationship name="toGallery" source="Painting" target="Gallery" 
deleteRule="Nullify" db-relationship-path="toGallery"/>
+       <obj-relationship name="toPaintingInfo" source="Painting" 
target="PaintingInfo" deleteRule="Cascade" 
db-relationship-path="toPaintingInfo"/>
+       <obj-relationship name="toArtist" source="Painting1" target="Artist" 
deleteRule="Nullify" db-relationship-path="toArtist"/>
+       <obj-relationship name="painting" source="PaintingInfo" 
target="Painting" deleteRule="Nullify" db-relationship-path="painting"/>
+       <obj-relationship name="paintingArray" source="ROArtist" 
target="Painting" deleteRule="Deny" db-relationship-path="paintingArray"/>
+       <obj-relationship name="toArtist" source="ROPainting" target="Artist" 
deleteRule="Nullify" db-relationship-path="toArtist"/>
+       <query name="EjbqlQueryTest" 
factory="org.apache.cayenne.map.EjbqlBuilder">
+               <property name="cayenne.GenericSelectQuery.fetchingDataRows" 
value="true"/>
+               <property name="cayenne.GenericSelectQuery.cacheStrategy" 
value="SHARED_CACHE"/>
+               <ejbql><![CDATA[select a from Artist a]]></ejbql>
+       </query>
+       <query name="NonSelectingQuery" 
factory="org.apache.cayenne.map.SQLTemplateBuilder" root="data-map" 
root-name="testmap">
+               <property name="cayenne.SQLTemplate.columnNameCapitalization" 
value="UPPER"/>
+               <sql><![CDATA[INSERT INTO PAINTING (PAINTING_ID, 
PAINTING_TITLE, ESTIMATED_PRICE)
+VALUES (512, 'No Painting Like This', 12.5)]]></sql>
+               <sql 
adapter-class="org.apache.cayenne.dba.db2.DB2Adapter"><![CDATA[INSERT INTO 
PAINTING (PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE) VALUES (512, 'No 
Painting Like This', 12.5)]]></sql>
+       </query>
+       <query name="ObjectQuery" 
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" 
root-name="Painting">
+               <qualifier><![CDATA[toArtist = $artist]]></qualifier>
+               <ordering><![CDATA[paintingTitle]]></ordering>
+       </query>
+       <query name="ParameterizedNonSelectingQuery" 
factory="org.apache.cayenne.map.SQLTemplateBuilder" root="data-map" 
root-name="testmap">
+               <sql><![CDATA[INSERT INTO PAINTING (PAINTING_ID, 
PAINTING_TITLE, ESTIMATED_PRICE)
+VALUES (#bind($id), #bind($title), #bind($price))]]></sql>
+               <sql 
adapter-class="org.apache.cayenne.dba.db2.DB2Adapter"><![CDATA[INSERT INTO 
PAINTING (PAINTING_ID, PAINTING_TITLE, ESTIMATED_PRICE) values (#bind($id), 
#bind($title), #bind($price))]]></sql>
+       </query>
+       <query name="ParameterizedQueryWithLocalCache" 
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" 
root-name="Artist">
+               <property name="cayenne.GenericSelectQuery.cacheStrategy" 
value="LOCAL_CACHE"/>
+               <qualifier><![CDATA[artistName like $name]]></qualifier>
+       </query>
+       <query name="ParameterizedQueryWithSharedCache" 
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" 
root-name="Artist">
+               <property name="cayenne.GenericSelectQuery.cacheStrategy" 
value="SHARED_CACHE"/>
+               <qualifier><![CDATA[artistName like $name]]></qualifier>
+       </query>
+       <query name="ProcedureQuery" 
factory="org.apache.cayenne.map.ProcedureQueryBuilder" root="procedure" 
root-name="cayenne_test_select_proc" result-entity="Artist">
+       </query>
+       <query name="QueryWithLocalCache" 
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" 
root-name="Artist">
+               <property name="cayenne.GenericSelectQuery.cacheStrategy" 
value="LOCAL_CACHE"/>
+       </query>
+       <query name="QueryWithOrdering" 
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" 
root-name="Artist">
+               <ordering descending="true" 
ignore-case="true"><![CDATA[artistName]]></ordering>
+               <ordering><![CDATA[dateOfBirth]]></ordering>
+       </query>
+       <query name="QueryWithPrefetch" 
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" 
root-name="Gallery">
+               <prefetch>paintingArray</prefetch>
+       </query>
+       <query name="QueryWithQualifier" 
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" 
root-name="Artist">
+               <qualifier><![CDATA[artistName = $param1]]></qualifier>
+       </query>
+       <query name="QueryWithSharedCache" 
factory="org.apache.cayenne.map.SelectQueryBuilder" root="obj-entity" 
root-name="Artist">
+               <property name="cayenne.GenericSelectQuery.cacheStrategy" 
value="SHARED_CACHE"/>
+       </query>
+       <query name="SelectTestLower" 
factory="org.apache.cayenne.map.SQLTemplateBuilder" root="data-map" 
root-name="testmap">
+               <property name="cayenne.GenericSelectQuery.fetchingDataRows" 
value="true"/>
+               <property name="cayenne.SQLTemplate.columnNameCapitalization" 
value="LOWER"/>
+               <sql><![CDATA[select * from ARTIST]]></sql>
+       </query>
+       <query name="SelectTestUpper" 
factory="org.apache.cayenne.map.SQLTemplateBuilder" root="data-map" 
root-name="testmap">
+               <property name="cayenne.GenericSelectQuery.fetchingDataRows" 
value="true"/>
+               <property name="cayenne.SQLTemplate.columnNameCapitalization" 
value="UPPER"/>
+               <sql><![CDATA[select * from ARTIST]]></sql>
+       </query>
+</data-map>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/535ecb88/cayenne-server/src/test/resources/things.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/things.map.xml 
b/cayenne-server/src/test/resources/things.map.xml
new file mode 100644
index 0000000..8cbe47c
--- /dev/null
+++ b/cayenne-server/src/test/resources/things.map.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/7/modelMap";
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+          xsi:schemaLocation="http://cayenne.apache.org/schema/7/modelMap 
http://cayenne.apache.org/schema/7/modelMap.xsd";
+          project-version="7">
+    <property name="defaultPackage" value="org.apache.cayenne.testdo.things"/>
+    <property name="defaultSuperclass" 
value="org.apache.cayenne.CayenneDataObject"/>
+    <property name="clientSupported" value="true"/>
+    <property name="defaultClientPackage" value="test.client"/>
+    <property name="defaultClientSuperclass" 
value="org.apache.cayenne.PersistentObject"/>
+    <db-entity name="BAG">
+        <db-attribute name="ID" type="BIGINT" isPrimaryKey="true" 
isGenerated="true" isMandatory="true"/>
+        <db-attribute name="NAME" type="VARCHAR" length="200"/>
+    </db-entity>
+    <db-entity name="BALL">
+        <db-attribute name="BOX_ID" type="BIGINT" isMandatory="true"/>
+        <db-attribute name="ID" type="BIGINT" isPrimaryKey="true" 
isGenerated="true" isMandatory="true"/>
+        <db-attribute name="THING_VOLUME" type="INTEGER" isMandatory="true"/>
+        <db-attribute name="THING_WEIGHT" type="INTEGER" isMandatory="true"/>
+    </db-entity>
+    <db-entity name="BOX">
+        <db-attribute name="BAG_ID" type="BIGINT" isMandatory="true"/>
+        <db-attribute name="ID" type="BIGINT" isPrimaryKey="true" 
isMandatory="true"/>
+        <db-attribute name="NAME" type="VARCHAR" length="200"/>
+    </db-entity>
+    <db-entity name="BOX_INFO">
+        <db-attribute name="BOX_ID" type="BIGINT" isMandatory="true"/>
+        <db-attribute name="COLOR" type="VARCHAR" isMandatory="true" 
length="200"/>
+        <db-attribute name="ID" type="BIGINT" isPrimaryKey="true" 
isGenerated="true" isMandatory="true"/>
+    </db-entity>
+    <db-entity name="BOX_THING">
+        <db-attribute name="BOX_ID" type="BIGINT" isMandatory="true"/>
+        <db-attribute name="THING_VOLUME" type="INTEGER" isMandatory="true"/>
+        <db-attribute name="THING_WEIGHT" type="INTEGER" isMandatory="true"/>
+    </db-entity>
+    <db-entity name="THING">
+        <db-attribute name="ID" type="BIGINT" isPrimaryKey="true" 
isGenerated="true" isMandatory="true"/>
+        <db-attribute name="VOLUME" type="INTEGER" isMandatory="true"/>
+        <db-attribute name="WEIGHT" type="INTEGER" isMandatory="true"/>
+    </db-entity>
+    <obj-entity name="Bag" className="org.apache.cayenne.testdo.things.Bag" 
clientClassName="test.client.Bag" dbEntityName="BAG" 
superClassName="org.apache.cayenne.CayenneDataObject" 
clientSuperClassName="org.apache.cayenne.PersistentObject">
+        <obj-attribute name="name" type="java.lang.String" 
db-attribute-path="NAME"/>
+    </obj-entity>
+    <obj-entity name="Ball" className="org.apache.cayenne.testdo.things.Ball" 
clientClassName="test.client.Ball" dbEntityName="BALL" 
superClassName="org.apache.cayenne.CayenneDataObject" 
clientSuperClassName="org.apache.cayenne.PersistentObject">
+        <obj-attribute name="thingVolume" type="java.lang.Integer" 
db-attribute-path="THING_VOLUME"/>
+        <obj-attribute name="thingWeight" type="java.lang.Integer" 
db-attribute-path="THING_WEIGHT"/>
+    </obj-entity>
+    <obj-entity name="Box" className="org.apache.cayenne.testdo.things.Box" 
clientClassName="test.client.Box" dbEntityName="BOX" 
superClassName="org.apache.cayenne.CayenneDataObject" 
clientSuperClassName="org.apache.cayenne.PersistentObject">
+        <obj-attribute name="name" type="java.lang.String" 
db-attribute-path="NAME"/>
+    </obj-entity>
+    <obj-entity name="BoxInfo" 
className="org.apache.cayenne.testdo.things.BoxInfo" 
clientClassName="test.client.BoxInfo" dbEntityName="BOX_INFO" 
superClassName="org.apache.cayenne.CayenneDataObject" 
clientSuperClassName="org.apache.cayenne.PersistentObject">
+        <obj-attribute name="color" type="java.lang.String" 
db-attribute-path="COLOR"/>
+    </obj-entity>
+    <obj-entity name="Thing" 
className="org.apache.cayenne.testdo.things.Thing" 
clientClassName="test.client.Thing" dbEntityName="THING" 
superClassName="org.apache.cayenne.CayenneDataObject" 
clientSuperClassName="org.apache.cayenne.PersistentObject">
+        <obj-attribute name="volume" type="java.lang.Integer" 
db-attribute-path="VOLUME"/>
+        <obj-attribute name="weight" type="java.lang.Integer" 
db-attribute-path="WEIGHT"/>
+    </obj-entity>
+    <db-relationship name="BOXES" source="BAG" target="BOX" toMany="true">
+        <db-attribute-pair source="ID" target="BAG_ID"/>
+    </db-relationship>
+    <db-relationship name="BOX" source="BALL" target="BOX" toMany="false">
+        <db-attribute-pair source="BOX_ID" target="ID"/>
+    </db-relationship>
+    <db-relationship name="THING" source="BALL" target="THING" toMany="false">
+        <db-attribute-pair source="THING_VOLUME" target="VOLUME"/>
+        <db-attribute-pair source="THING_WEIGHT" target="WEIGHT"/>
+    </db-relationship>
+    <db-relationship name="BAG" source="BOX" target="BAG" toMany="false">
+        <db-attribute-pair source="BAG_ID" target="ID"/>
+    </db-relationship>
+    <db-relationship name="BALLS" source="BOX" target="BALL" toMany="true">
+        <db-attribute-pair source="ID" target="BOX_ID"/>
+    </db-relationship>
+    <db-relationship name="BOX_INFO" source="BOX" target="BOX_INFO" 
toMany="false">
+        <db-attribute-pair source="ID" target="BOX_ID"/>
+    </db-relationship>
+    <db-relationship name="BOX_THING" source="BOX" target="BOX_THING" 
toMany="true">
+        <db-attribute-pair source="ID" target="BOX_ID"/>
+    </db-relationship>
+    <db-relationship name="BOX" source="BOX_INFO" target="BOX" toMany="false">
+        <db-attribute-pair source="BOX_ID" target="ID"/>
+    </db-relationship>
+    <db-relationship name="BOX" source="BOX_THING" target="BOX" toMany="false">
+        <db-attribute-pair source="BOX_ID" target="ID"/>
+    </db-relationship>
+    <db-relationship name="THING" source="BOX_THING" target="THING" 
toMany="false">
+        <db-attribute-pair source="THING_VOLUME" target="VOLUME"/>
+        <db-attribute-pair source="THING_WEIGHT" target="WEIGHT"/>
+    </db-relationship>
+    <db-relationship name="BALL" source="THING" target="BALL" toMany="false">
+        <db-attribute-pair source="VOLUME" target="THING_VOLUME"/>
+        <db-attribute-pair source="WEIGHT" target="THING_WEIGHT"/>
+    </db-relationship>
+    <db-relationship name="BOX_THING" source="THING" target="BOX_THING" 
toMany="true">
+        <db-attribute-pair source="VOLUME" target="THING_VOLUME"/>
+        <db-attribute-pair source="WEIGHT" target="THING_WEIGHT"/>
+    </db-relationship>
+    <obj-relationship name="balls" source="Bag" target="Ball" 
deleteRule="Deny" db-relationship-path="BOXES.BALLS"/>
+    <obj-relationship name="boxes" source="Bag" target="Box" deleteRule="Deny" 
db-relationship-path="BOXES"/>
+    <obj-relationship name="things" source="Bag" target="Thing" 
deleteRule="Deny" db-relationship-path="BOXES.BOX_THING.THING"/>
+    <obj-relationship name="box" source="Ball" target="Box" 
deleteRule="Nullify" db-relationship-path="BOX"/>
+    <obj-relationship name="thing" source="Ball" target="Thing" 
deleteRule="Nullify" db-relationship-path="THING"/>
+    <obj-relationship name="bag" source="Box" target="Bag" 
deleteRule="Nullify" db-relationship-path="BAG"/>
+    <obj-relationship name="balls" source="Box" target="Ball" 
deleteRule="Deny" db-relationship-path="BALLS"/>
+    <obj-relationship name="boxInfo" source="Box" target="BoxInfo" 
deleteRule="Deny" db-relationship-path="BOX_INFO"/>
+    <obj-relationship name="things" source="Box" target="Thing" 
deleteRule="Deny" db-relationship-path="BOX_THING.THING"/>
+    <obj-relationship name="box" source="BoxInfo" target="Box" 
deleteRule="Nullify" db-relationship-path="BOX"/>
+    <obj-relationship name="ball" source="Thing" target="Ball" 
deleteRule="Nullify" db-relationship-path="BALL"/>
+    <obj-relationship name="box" source="Thing" target="Box" deleteRule="Deny" 
db-relationship-path="BOX_THING.BOX"/>
+</data-map>
\ No newline at end of file

Reply via email to