You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2014/11/02 08:10:35 UTC

[47/48] git commit: Installing Maven Failsafe Plugin

Installing Maven Failsafe Plugin


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/e42c376c
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/e42c376c
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/e42c376c

Branch: refs/heads/master
Commit: e42c376cd4a7652fde01569650217ad8ca25fc2c
Parents: fca0df5
Author: Savva Kolbechev <s....@gmail.com>
Authored: Tue Oct 28 12:11:16 2014 +0300
Committer: Savva Kolbechev <s....@gmail.com>
Committed: Tue Oct 28 12:11:18 2014 +0300

----------------------------------------------------------------------
 cayenne-client/pom.xml                          |   4 +
 .../query/SelectQueryAbstractEntityIT.java      | 110 +++
 .../query/SelectQueryAbstractEntityTest.java    | 110 ---
 cayenne-server/pom.xml                          |   4 +
 .../cayenne/CDOCollectionRelationshipIT.java    | 181 ++++
 .../cayenne/CDOCollectionRelationshipTest.java  | 181 ----
 .../java/org/apache/cayenne/CDOMany2OneIT.java  | 325 +++++++
 .../org/apache/cayenne/CDOMany2OneNoRevIT.java  |  56 ++
 .../apache/cayenne/CDOMany2OneNoRevTest.java    |  56 --
 .../org/apache/cayenne/CDOMany2OneTest.java     | 325 -------
 .../apache/cayenne/CDOMapRelationshipIT.java    | 234 +++++
 .../apache/cayenne/CDOMapRelationshipTest.java  | 234 -----
 .../java/org/apache/cayenne/CDOOne2ManyIT.java  | 299 +++++++
 .../org/apache/cayenne/CDOOne2ManyTest.java     | 299 -------
 .../org/apache/cayenne/CDOOne2OneDepIT.java     | 135 +++
 .../org/apache/cayenne/CDOOne2OneDepTest.java   | 135 ---
 .../org/apache/cayenne/CDOOneDep2OneIT.java     | 136 +++
 .../org/apache/cayenne/CDOOneDep2OneTest.java   | 136 ---
 .../org/apache/cayenne/CDOOneToManyFKIT.java    |  83 ++
 .../org/apache/cayenne/CDOOneToManyFKTest.java  |  83 --
 .../org/apache/cayenne/CDOOneToOneFKIT.java     | 197 +++++
 .../org/apache/cayenne/CDOOneToOneFKTest.java   | 197 -----
 .../apache/cayenne/CDOQualifiedEntitiesIT.java  | 126 +++
 .../cayenne/CDOQualifiedEntitiesTest.java       | 126 ---
 .../apache/cayenne/CDOReflexiveRelDeleteIT.java |  96 +++
 .../cayenne/CDOReflexiveRelDeleteTest.java      |  96 ---
 .../org/apache/cayenne/CDOReflexiveRelIT.java   | 120 +++
 .../org/apache/cayenne/CDOReflexiveRelTest.java | 120 ---
 .../apache/cayenne/CDOSetRelationshipIT.java    | 195 +++++
 .../apache/cayenne/CDOSetRelationshipTest.java  | 195 -----
 .../CayenneDataObjectFlattenedRelIT.java        | 280 ++++++
 .../CayenneDataObjectFlattenedRelTest.java      | 280 ------
 .../org/apache/cayenne/CayenneDataObjectIT.java | 153 ++++
 .../cayenne/CayenneDataObjectInContextIT.java   | 308 +++++++
 .../cayenne/CayenneDataObjectInContextTest.java | 308 -------
 .../CayenneDataObjectRelationshipsIT.java       | 293 +++++++
 .../CayenneDataObjectRelationshipsTest.java     | 293 -------
 .../apache/cayenne/CayenneDataObjectTest.java   | 153 ----
 .../cayenne/CayenneDataObjectValidationIT.java  | 121 +++
 .../CayenneDataObjectValidationTest.java        | 121 ---
 .../test/java/org/apache/cayenne/CayenneIT.java | 374 ++++++++
 .../java/org/apache/cayenne/CayenneTest.java    | 374 --------
 .../org/apache/cayenne/CompoundPkChangeIT.java  | 162 ++++
 .../apache/cayenne/CompoundPkChangeTest.java    | 162 ----
 .../cayenne/DataContextMaxIdQualifierIT.java    | 240 ++++++
 .../cayenne/DataContextMaxIdQualifierTest.java  | 240 ------
 .../cayenne/DataObjectSerializationIT.java      | 119 +++
 .../cayenne/DataObjectSerializationTest.java    | 119 ---
 .../cayenne/FlattenedRelationshipsIT.java       | 287 +++++++
 .../cayenne/FlattenedRelationshipsTest.java     | 287 -------
 .../org/apache/cayenne/GenericMappingIT.java    | 110 +++
 .../org/apache/cayenne/GenericMappingTest.java  | 110 ---
 .../org/apache/cayenne/ManyToManyNoJoinIT.java  |  59 ++
 .../apache/cayenne/ManyToManyNoJoinTest.java    |  59 --
 .../java/org/apache/cayenne/MeaningfulFKIT.java |  69 ++
 .../org/apache/cayenne/MeaningfulFKTest.java    |  69 --
 .../apache/cayenne/OneWayRelationshipsIT.java   | 217 +++++
 .../apache/cayenne/OneWayRelationshipsTest.java | 217 -----
 .../cayenne/PersistenceByReachabilityIT.java    | 103 +++
 .../cayenne/PersistenceByReachabilityTest.java  | 103 ---
 .../org/apache/cayenne/PersistentObjectIT.java  |  56 ++
 .../apache/cayenne/PersistentObjectTest.java    |  56 --
 .../org/apache/cayenne/PregeneratedPKIT.java    |  85 ++
 .../org/apache/cayenne/PregeneratedPKTest.java  |  85 --
 .../cayenne/access/DataContextBinaryPKIT.java   |  95 ++
 .../cayenne/access/DataContextBinaryPKTest.java |  95 --
 .../cayenne/access/DataContextBlobIT.java       | 189 ++++
 .../cayenne/access/DataContextBlobTest.java     | 189 ----
 .../cayenne/access/DataContextCallbacksIT.java  | 181 ++++
 .../access/DataContextCallbacksTest.java        | 181 ----
 .../cayenne/access/DataContextCharPKIT.java     | 120 +++
 .../cayenne/access/DataContextCharPKTest.java   | 120 ---
 .../cayenne/access/DataContextCharTypeIT.java   |  76 ++
 .../cayenne/access/DataContextCharTypeTest.java |  76 --
 .../cayenne/access/DataContextClobIT.java       | 158 ++++
 .../cayenne/access/DataContextClobTest.java     | 158 ----
 .../cayenne/access/DataContextCommitIT.java     | 116 +++
 .../cayenne/access/DataContextCommitTest.java   | 116 ---
 .../access/DataContextCompoundRelIT.java        | 153 ++++
 .../access/DataContextCompoundRelTest.java      | 153 ----
 .../cayenne/access/DataContextCrossDBIT.java    |  65 ++
 .../cayenne/access/DataContextCrossDBTest.java  |  65 --
 .../access/DataContextDataChannelEventsIT.java  | 190 ++++
 .../DataContextDataChannelEventsTest.java       | 190 ----
 .../access/DataContextDecoratedStackIT.java     | 131 +++
 .../access/DataContextDecoratedStackTest.java   | 131 ---
 .../cayenne/access/DataContextDelegateIT.java   | 163 ++++
 .../DataContextDelegateSharedCacheIT.java       | 216 +++++
 .../DataContextDelegateSharedCacheTest.java     | 216 -----
 .../cayenne/access/DataContextDelegateTest.java | 163 ----
 .../access/DataContextDeleteRulesIT.java        | 250 ++++++
 .../access/DataContextDeleteRulesTest.java      | 250 ------
 .../DataContextDisjointByIdPrefetchIT.java      | 219 +++++
 .../DataContextDisjointByIdPrefetchTest.java    | 219 -----
 ...ataContextDisjointByIdPrefetch_ExtrasIT.java | 373 ++++++++
 ...aContextDisjointByIdPrefetch_ExtrasTest.java | 373 --------
 .../access/DataContextEJBQLArrayResultIT.java   | 125 +++
 .../access/DataContextEJBQLArrayResultTest.java | 125 ---
 .../access/DataContextEJBQLConditionsIT.java    | 476 ++++++++++
 .../DataContextEJBQLConditionsPeopleIT.java     | 165 ++++
 .../DataContextEJBQLConditionsPeopleTest.java   | 165 ----
 .../access/DataContextEJBQLConditionsTest.java  | 476 ----------
 .../access/DataContextEJBQLDeleteIT.java        | 155 ++++
 .../access/DataContextEJBQLDeleteTest.java      | 155 ----
 .../access/DataContextEJBQLFetchJoinIT.java     | 417 +++++++++
 .../access/DataContextEJBQLFetchJoinTest.java   | 417 ---------
 ...ataContextEJBQLFlattenedRelationshipsIT.java | 319 +++++++
 ...aContextEJBQLFlattenedRelationshipsTest.java | 319 -------
 .../access/DataContextEJBQLGroupByHavingIT.java | 338 ++++++++
 .../DataContextEJBQLGroupByHavingTest.java      | 338 --------
 .../access/DataContextEJBQLInheritanceIT.java   |  90 ++
 .../access/DataContextEJBQLInheritanceTest.java |  90 --
 .../access/DataContextEJBQLIsNullIT.java        | 181 ++++
 .../access/DataContextEJBQLIsNullTest.java      | 181 ----
 .../cayenne/access/DataContextEJBQLJoinsIT.java | 234 +++++
 .../access/DataContextEJBQLJoinsTest.java       | 234 -----
 .../access/DataContextEJBQLOrderByIT.java       | 221 +++++
 .../access/DataContextEJBQLOrderByTest.java     | 221 -----
 .../cayenne/access/DataContextEJBQLQueryIT.java | 537 ++++++++++++
 .../access/DataContextEJBQLQueryTest.java       | 537 ------------
 .../access/DataContextEJBQLSubqueryIT.java      | 248 ++++++
 .../access/DataContextEJBQLSubqueryTest.java    | 248 ------
 .../access/DataContextEJBQLUpdateIT.java        | 333 +++++++
 .../access/DataContextEJBQLUpdateTest.java      | 333 -------
 .../DataContextEntityWithMeaningfulPKIT.java    | 130 +++
 .../DataContextEntityWithMeaningfulPKTest.java  | 130 ---
 .../DataContextExtendedTypeOperationsIT.java    | 100 +++
 .../DataContextExtendedTypeOperationsTest.java  | 100 ---
 .../cayenne/access/DataContextExtrasIT.java     | 421 +++++++++
 .../cayenne/access/DataContextExtrasTest.java   | 421 ---------
 .../DataContextFlattenedAttributesIT.java       | 385 +++++++++
 .../DataContextFlattenedAttributesTest.java     | 385 ---------
 .../apache/cayenne/access/DataContextIT.java    | 804 +++++++++++++++++
 .../access/DataContextJoinAliasesIT.java        | 115 +++
 .../access/DataContextJoinAliasesTest.java      | 115 ---
 .../access/DataContextLocalObjectIT.java        | 183 ++++
 .../access/DataContextLocalObjectTest.java      | 183 ----
 .../cayenne/access/DataContextNoPkIT.java       |  81 ++
 .../cayenne/access/DataContextNoPkTest.java     |  81 --
 .../access/DataContextObjectIdQueryIT.java      | 123 +++
 .../access/DataContextObjectIdQueryTest.java    | 123 ---
 .../access/DataContextObjectTrackingIT.java     | 139 +++
 .../access/DataContextObjectTrackingTest.java   | 139 ---
 .../cayenne/access/DataContextOrderingIT.java   | 127 +++
 .../cayenne/access/DataContextOrderingTest.java | 127 ---
 .../cayenne/access/DataContextOuterJoinsIT.java | 190 ++++
 .../access/DataContextOuterJoinsTest.java       | 190 ----
 .../access/DataContextPaginatedQueryIT.java     |  93 ++
 .../access/DataContextPaginatedQueryTest.java   |  93 --
 .../access/DataContextPerformQueryAPIIT.java    | 228 +++++
 .../access/DataContextPerformQueryAPITest.java  | 228 -----
 .../access/DataContextPrefetchExtras1IT.java    |  84 ++
 .../access/DataContextPrefetchExtras1Test.java  |  84 --
 .../access/DataContextPrefetchExtrasIT.java     | 174 ++++
 .../access/DataContextPrefetchExtrasTest.java   | 174 ----
 .../cayenne/access/DataContextPrefetchIT.java   | 801 +++++++++++++++++
 .../access/DataContextPrefetchMultistepIT.java  | 311 +++++++
 .../DataContextPrefetchMultistepTest.java       | 311 -------
 .../DataContextPrefetchQualifierOverlapIT.java  | 122 +++
 ...DataContextPrefetchQualifierOverlapTest.java | 122 ---
 .../cayenne/access/DataContextPrefetchTest.java | 801 -----------------
 .../access/DataContextProcedureQueryIT.java     | 429 ++++++++++
 .../access/DataContextProcedureQueryTest.java   | 429 ----------
 .../access/DataContextQualifiedEntityIT.java    | 119 +++
 .../access/DataContextQualifiedEntityTest.java  | 119 ---
 .../DataContextQueryCachingEhCacheIT.java       |  64 ++
 .../DataContextQueryCachingEhCacheTest.java     |  64 --
 .../access/DataContextQueryCachingIT.java       | 256 ++++++
 .../DataContextQueryCachingOSCacheIT.java       |  53 ++
 .../DataContextQueryCachingOSCacheTest.java     |  53 --
 .../access/DataContextQueryCachingTest.java     | 256 ------
 .../cayenne/access/DataContextQueryChainIT.java |  74 ++
 .../access/DataContextQueryChainTest.java       |  74 --
 .../access/DataContextRefreshQueryIT.java       | 440 ++++++++++
 .../access/DataContextRefreshQueryTest.java     | 440 ----------
 .../cayenne/access/DataContextRefreshingIT.java | 371 ++++++++
 .../access/DataContextRefreshingTest.java       | 371 --------
 .../access/DataContextRelationshipQueryIT.java  | 137 +++
 .../DataContextRelationshipQueryTest.java       | 137 ---
 .../cayenne/access/DataContextRollbackIT.java   | 224 +++++
 .../cayenne/access/DataContextRollbackTest.java | 224 -----
 .../access/DataContextSQLTemplateIT.java        | 635 ++++++++++++++
 .../access/DataContextSQLTemplateTest.java      | 635 --------------
 .../DataContextSelectQuerySplitAliasesIT.java   | 101 +++
 .../DataContextSelectQuerySplitAliasesTest.java | 101 ---
 .../access/DataContextSerializationIT.java      | 268 ++++++
 .../access/DataContextSerializationTest.java    | 268 ------
 .../access/DataContextSharedCacheEmpiricIT.java | 159 ++++
 .../DataContextSharedCacheEmpiricTest.java      | 159 ----
 .../access/DataContextSharedCacheIT.java        | 725 ++++++++++++++++
 .../access/DataContextSharedCacheTest.java      | 725 ----------------
 .../apache/cayenne/access/DataContextTest.java  | 804 -----------------
 .../cayenne/access/DataContextValidationIT.java | 104 +++
 .../access/DataContextValidationTest.java       | 104 ---
 .../cayenne/access/DataDomainCallbacksIT.java   | 471 ++++++++++
 .../cayenne/access/DataDomainCallbacksTest.java | 473 ----------
 .../cayenne/access/DataDomainFiltersIT.java     | 200 +++++
 .../cayenne/access/DataDomainFiltersTest.java   | 200 -----
 .../org/apache/cayenne/access/DataDomainIT.java | 256 ++++++
 .../cayenne/access/DataDomainQueryActionIT.java | 109 +++
 .../access/DataDomainQueryActionTest.java       | 109 ---
 .../apache/cayenne/access/DataDomainTest.java   | 256 ------
 .../org/apache/cayenne/access/DataNodeIT.java   |  86 ++
 .../cayenne/access/DataNodeQueriesIT.java       | 189 ++++
 .../cayenne/access/DataNodeQueriesTest.java     | 189 ----
 .../org/apache/cayenne/access/DataNodeTest.java |  88 --
 .../apache/cayenne/access/DataRowStoreIT.java   | 131 +++
 .../apache/cayenne/access/DataRowStoreTest.java | 131 ---
 .../apache/cayenne/access/DataRowUtilsIT.java   | 152 ++++
 .../apache/cayenne/access/DataRowUtilsTest.java | 152 ----
 .../apache/cayenne/access/DateTimeTypesIT.java  | 197 +++++
 .../cayenne/access/DateTimeTypesTest.java       | 197 -----
 .../apache/cayenne/access/DbGeneratorIT.java    |  96 +++
 .../apache/cayenne/access/DbGeneratorTest.java  |  96 ---
 .../org/apache/cayenne/access/DbLoaderIT.java   | 377 ++++++++
 .../cayenne/access/DbLoaderPartialIT.java       | 117 +++
 .../cayenne/access/DbLoaderPartialTest.java     | 118 ---
 .../org/apache/cayenne/access/DbLoaderTest.java | 377 --------
 .../apache/cayenne/access/DeleteObjectIT.java   | 225 +++++
 .../apache/cayenne/access/DeleteObjectTest.java | 225 -----
 .../apache/cayenne/access/DeleteRulesIT.java    | 374 ++++++++
 .../apache/cayenne/access/DeleteRulesTest.java  | 374 --------
 .../org/apache/cayenne/access/EmbeddingIT.java  | 179 ++++
 .../apache/cayenne/access/EmbeddingTest.java    | 179 ----
 .../java/org/apache/cayenne/access/EnumIT.java  |  89 ++
 .../org/apache/cayenne/access/EnumTest.java     |  89 --
 .../cayenne/access/FlattenedArcKeyIT.java       |  89 ++
 .../cayenne/access/FlattenedArcKeyTest.java     |  89 --
 .../cayenne/access/FlattenedPrefetchIT.java     | 267 ++++++
 .../cayenne/access/FlattenedPrefetchTest.java   | 267 ------
 .../FlattenedRelationshipInContextIT.java       | 100 +++
 .../FlattenedRelationshipInContextTest.java     | 100 ---
 .../cayenne/access/IdentityColumnsIT.java       | 331 +++++++
 .../cayenne/access/IdentityColumnsTest.java     | 331 -------
 .../cayenne/access/IncrementalFaultListIT.java  |  46 +
 .../access/IncrementalFaultListTest.java        |  46 -
 .../apache/cayenne/access/JointPrefetchIT.java  | 495 +++++++++++
 .../cayenne/access/JointPrefetchTest.java       | 495 -----------
 .../org/apache/cayenne/access/MiscTypesIT.java  | 186 ++++
 .../apache/cayenne/access/MiscTypesTest.java    | 186 ----
 .../access/NestedDataContextLocalCacheIT.java   |  77 ++
 .../access/NestedDataContextLocalCacheTest.java |  77 --
 .../access/NestedDataContextParentEventsIT.java |  61 ++
 .../NestedDataContextParentEventsTest.java      |  61 --
 .../NestedDataContextParentPeerEventsIT.java    | 141 +++
 .../NestedDataContextParentPeerEventsTest.java  | 141 ---
 .../access/NestedDataContextPeerEventsIT.java   | 181 ++++
 .../access/NestedDataContextPeerEventsTest.java | 181 ----
 .../cayenne/access/NestedDataContextReadIT.java | 376 ++++++++
 .../access/NestedDataContextReadTest.java       | 376 --------
 .../access/NestedDataContextRollbackIT.java     |  70 ++
 .../access/NestedDataContextRollbackTest.java   |  70 --
 .../access/NestedDataContextValidationIT.java   |  74 ++
 .../access/NestedDataContextValidationTest.java |  74 --
 .../access/NestedDataContextWriteIT.java        | 676 +++++++++++++++
 .../access/NestedDataContextWriteTest.java      | 676 ---------------
 .../access/NestedDataContext_DeadlockIT.java    | 128 +++
 .../access/NestedDataContext_DeadlockTest.java  | 128 ---
 .../apache/cayenne/access/NumericTypesIT.java   | 295 +++++++
 .../apache/cayenne/access/NumericTypesTest.java | 295 -------
 .../access/ObjectStoreDiffRetainingIT.java      | 107 +++
 .../access/ObjectStoreDiffRetainingTest.java    | 107 ---
 .../apache/cayenne/access/ObjectStoreGCIT.java  | 130 +++
 .../cayenne/access/ObjectStoreGCTest.java       | 130 ---
 .../apache/cayenne/access/ObjectStoreIT.java    | 133 +++
 .../apache/cayenne/access/ObjectStoreTest.java  | 133 ---
 .../cayenne/access/OptimisticLockingIT.java     | 498 +++++++++++
 .../cayenne/access/OptimisticLockingTest.java   | 498 -----------
 .../access/PrefetchProcessorTreeBuilderIT.java  | 207 +++++
 .../PrefetchProcessorTreeBuilderTest.java       | 207 -----
 .../cayenne/access/PrimitiveAttributesIT.java   |  47 +
 .../cayenne/access/PrimitiveAttributesTest.java |  47 -
 .../cayenne/access/QuotedIdentifiersIT.java     | 156 ++++
 .../cayenne/access/QuotedIdentifiersTest.java   | 156 ----
 .../cayenne/access/ReturnTypesMappingIT.java    | 858 +++++++++++++++++++
 .../cayenne/access/ReturnTypesMappingTest.java  | 858 -------------------
 .../SimpleIdIncrementalFaultListDataRowsIT.java | 219 +++++
 ...impleIdIncrementalFaultListDataRowsTest.java | 219 -----
 .../access/SimpleIdIncrementalFaultListIT.java  | 292 +++++++
 .../SimpleIdIncrementalFaultListPrefetchIT.java | 204 +++++
 ...impleIdIncrementalFaultListPrefetchTest.java | 204 -----
 .../SimpleIdIncrementalFaultListTest.java       | 292 -------
 .../access/SingleTableInheritance1IT.java       | 102 +++
 .../access/SingleTableInheritance1Test.java     | 102 ---
 .../access/SingleTableInheritanceIT.java        | 533 ++++++++++++
 .../access/SingleTableInheritanceTest.java      | 533 ------------
 .../org/apache/cayenne/access/ToManyListIT.java | 263 ++++++
 .../apache/cayenne/access/ToManyListTest.java   | 263 ------
 .../cayenne/access/TransactionThreadIT.java     | 118 +++
 .../cayenne/access/TransactionThreadTest.java   | 118 ---
 .../java/org/apache/cayenne/access/UUIDIT.java  |  93 ++
 .../org/apache/cayenne/access/UUIDTest.java     |  93 --
 .../cayenne/access/UserTransactionIT.java       | 103 +++
 .../cayenne/access/UserTransactionTest.java     | 103 ---
 .../cayenne/access/VerticalInheritanceIT.java   | 528 ++++++++++++
 .../cayenne/access/VerticalInheritanceTest.java | 528 ------------
 .../access/dbsync/SchemaUpdateStrategyIT.java   | 346 ++++++++
 .../access/dbsync/SchemaUpdateStrategyTest.java | 346 --------
 .../cayenne/access/jdbc/BatchActionIT.java      |  90 ++
 .../access/jdbc/BatchActionLockingIT.java       | 154 ++++
 .../access/jdbc/BatchActionLockingTest.java     | 155 ----
 .../cayenne/access/jdbc/BatchActionTest.java    |  90 --
 .../cayenne/access/jdbc/BindDirectiveIT.java    | 267 ++++++
 .../cayenne/access/jdbc/BindDirectiveTest.java  | 267 ------
 .../cayenne/access/jdbc/ResultDirectiveIT.java  | 187 ++++
 .../access/jdbc/ResultDirectiveTest.java        | 187 ----
 .../access/jdbc/SQLTemplateActionIT.java        | 365 ++++++++
 .../access/jdbc/SQLTemplateActionTest.java      | 365 --------
 .../cayenne/access/jdbc/SelectActionIT.java     |  98 +++
 .../cayenne/access/jdbc/SelectActionTest.java   |  98 ---
 .../batch/DefaultBatchTranslatorIT.java         | 136 +++
 .../batch/DefaultBatchTranslatorTest.java       | 136 ---
 .../batch/DeleteBatchTranslatorIT.java          | 153 ++++
 .../batch/DeleteBatchTranslatorTest.java        | 154 ----
 .../batch/InsertBatchTranslatorIT.java          |  93 ++
 .../batch/InsertBatchTranslatorTest.java        |  94 --
 .../batch/SoftDeleteBatchTranslatorIT.java      | 173 ++++
 .../batch/SoftDeleteBatchTranslatorTest.java    | 176 ----
 .../batch/UpdateBatchTranslatorIT.java          | 159 ++++
 .../batch/UpdateBatchTranslatorTest.java        | 160 ----
 .../ejbql/EJBQLSelectTranslatorIT.java          | 313 +++++++
 .../ejbql/EJBQLSelectTranslatorTest.java        | 316 -------
 .../translator/select/OrderingTranslatorIT.java | 178 ++++
 .../select/OrderingTranslatorTest.java          | 179 ----
 .../select/QualifierTranslatorIT.java           | 138 +++
 .../select/QualifierTranslatorTest.java         | 139 ---
 .../translator/select/QueryAssemblerIT.java     |  73 ++
 .../translator/select/QueryAssemblerTest.java   |  73 --
 .../translator/select/SelectTranslatorIT.java   | 770 +++++++++++++++++
 .../translator/select/SelectTranslatorTest.java | 771 -----------------
 .../access/util/DefaultOperationObserverIT.java |  42 +
 .../util/DefaultOperationObserverTest.java      |  42 -
 .../cayenne/ashwood/AshwoodEntitySorterIT.java  |  85 ++
 .../ashwood/AshwoodEntitySorterTest.java        |  85 --
 .../org/apache/cayenne/cache/QueryCacheIT.java  |  55 ++
 .../apache/cayenne/cache/QueryCacheTest.java    |  55 --
 .../server/JNDIDataSourceFactoryIT.java         | 102 +++
 .../server/JNDIDataSourceFactoryTest.java       | 104 ---
 .../ServerRuntimeBuilder_InAction_IT.java       |  90 ++
 .../ServerRuntimeBuilder_InAction_Test.java     |  91 --
 .../org/apache/cayenne/conn/PoolManagerIT.java  | 118 +++
 .../apache/cayenne/conn/PoolManagerTest.java    | 118 ---
 .../org/apache/cayenne/dba/AutoAdapterIT.java   |  67 ++
 .../org/apache/cayenne/dba/AutoAdapterTest.java |  67 --
 .../cayenne/dba/ConcurrentPkGeneratorIT.java    | 115 +++
 .../cayenne/dba/ConcurrentPkGeneratorTest.java  | 115 ---
 .../org/apache/cayenne/dba/JdbcAdapterIT.java   |  85 ++
 .../org/apache/cayenne/dba/JdbcAdapterTest.java |  85 --
 .../apache/cayenne/dba/JdbcPkGeneratorIT.java   |  88 ++
 .../apache/cayenne/dba/JdbcPkGeneratorTest.java |  88 --
 .../org/apache/cayenne/dba/PkGeneratorIT.java   |  84 ++
 .../org/apache/cayenne/dba/PkGeneratorTest.java |  84 --
 .../org/apache/cayenne/dba/TypesMappingIT.java  | 138 +++
 .../apache/cayenne/dba/TypesMappingTest.java    | 138 ---
 .../cayenne/dba/hsqldb/HSQLDBAdapterIT.java     |  68 ++
 .../cayenne/dba/hsqldb/HSQLDBAdapterTest.java   |  68 --
 .../cayenne/dba/mysql/MySQLAdapterIT.java       |  65 ++
 .../cayenne/dba/mysql/MySQLAdapterTest.java     |  65 --
 .../cayenne/dba/oracle/Oracle8AdapterIT.java    |  59 ++
 .../cayenne/dba/oracle/Oracle8AdapterTest.java  |  59 --
 .../cayenne/dba/oracle/OracleAdapterIT.java     |  62 ++
 .../cayenne/dba/oracle/OracleAdapterTest.java   |  62 --
 .../cayenne/dba/oracle/OraclePkGeneratorIT.java |  68 ++
 .../dba/oracle/OraclePkGeneratorTest.java       |  68 --
 .../cayenne/dba/postgres/PostgresAdapterIT.java |  56 ++
 .../dba/postgres/PostgresAdapterTest.java       |  56 --
 .../dba/sqlserver/SQLServerAdapterIT.java       |  55 ++
 .../dba/sqlserver/SQLServerAdapterTest.java     |  55 --
 .../dba/sqlserver/SQLServerSnifferIT.java       |  72 ++
 .../dba/sqlserver/SQLServerSnifferTest.java     |  72 --
 .../ejbql/EJBQLCompiledExpressionIT.java        | 111 +++
 .../ejbql/EJBQLCompiledExpressionTest.java      | 111 ---
 .../exp/ExpressionFactory_InContextIT.java      | 319 +++++++
 .../exp/ExpressionFactory_InContextTest.java    | 319 -------
 .../cayenne/exp/Expression_InContextIT.java     | 132 +++
 .../cayenne/exp/Expression_InContextTest.java   | 132 ---
 .../cayenne/exp/ParsedExpQualifierCompatIT.java | 289 +++++++
 .../exp/ParsedExpQualifierCompatTest.java       | 289 -------
 .../parser/ExpressionEvaluateInMemoryIT.java    | 576 +++++++++++++
 .../parser/ExpressionEvaluateInMemoryTest.java  | 576 -------------
 .../cayenne/map/ClientEntityResolverIT.java     |  93 ++
 .../cayenne/map/ClientEntityResolverTest.java   |  93 --
 .../java/org/apache/cayenne/map/DbEntityIT.java | 254 ++++++
 .../org/apache/cayenne/map/DbEntityTest.java    | 254 ------
 .../apache/cayenne/map/DbRelationshipIT.java    | 110 +++
 .../apache/cayenne/map/DbRelationshipTest.java  | 110 ---
 .../java/org/apache/cayenne/map/EntityIT.java   | 204 +++++
 .../map/EntityResolverClassDescriptorIT.java    |  95 ++
 .../map/EntityResolverClassDescriptorTest.java  |  95 --
 .../map/EntityResolverGenericStackIT.java       |  57 ++
 .../map/EntityResolverGenericStackTest.java     |  57 --
 .../apache/cayenne/map/EntityResolverIT.java    | 171 ++++
 .../map/EntityResolverInheritanceIT.java        |  78 ++
 .../map/EntityResolverInheritanceTest.java      |  78 --
 .../apache/cayenne/map/EntityResolverTest.java  | 171 ----
 .../java/org/apache/cayenne/map/EntityTest.java | 204 -----
 .../org/apache/cayenne/map/ObjEntityIT.java     | 431 ++++++++++
 .../org/apache/cayenne/map/ObjEntityTest.java   | 431 ----------
 .../apache/cayenne/map/ObjRelationshipIT.java   | 495 +++++++++++
 .../apache/cayenne/map/ObjRelationshipTest.java | 495 -----------
 .../cayenne/merge/AddColumnToModelIT.java       |  94 ++
 .../cayenne/merge/AddColumnToModelTest.java     |  94 --
 .../cayenne/merge/CreateTableToModelIT.java     |  97 +++
 .../cayenne/merge/CreateTableToModelTest.java   |  97 ---
 .../cayenne/merge/DropColumnToModelIT.java      | 226 +++++
 .../cayenne/merge/DropColumnToModelTest.java    | 226 -----
 .../merge/DropRelationshipToModelIT.java        | 177 ++++
 .../merge/DropRelationshipToModelTest.java      | 177 ----
 .../cayenne/merge/DropTableToModelIT.java       |  90 ++
 .../cayenne/merge/DropTableToModelTest.java     |  90 --
 .../apache/cayenne/merge/MergerFactoryIT.java   | 306 +++++++
 .../apache/cayenne/merge/MergerFactoryTest.java | 306 -------
 .../cayenne/merge/SetAllowNullToDbIT.java       |  66 ++
 .../cayenne/merge/SetAllowNullToDbTest.java     |  66 --
 .../apache/cayenne/merge/SetNotNullToDbIT.java  |  76 ++
 .../cayenne/merge/SetNotNullToDbTest.java       |  76 --
 .../cayenne/merge/SetPrimaryKeyToDbIT.java      |  59 ++
 .../cayenne/merge/SetPrimaryKeyToDbTest.java    |  59 --
 .../apache/cayenne/merge/ValueForNullIT.java    | 126 +++
 .../apache/cayenne/merge/ValueForNullTest.java  | 127 ---
 .../org/apache/cayenne/query/EJBQLQueryIT.java  | 492 +++++++++++
 .../apache/cayenne/query/EJBQLQueryTest.java    | 492 -----------
 .../cayenne/query/ProcedureQueryCacheKeyIT.java | 107 +++
 .../query/ProcedureQueryCacheKeyTest.java       | 107 ---
 .../org/apache/cayenne/query/QueryChainIT.java  |  63 ++
 .../apache/cayenne/query/QueryChainTest.java    |  63 --
 .../org/apache/cayenne/query/SQLSelectIT.java   | 213 +++++
 .../org/apache/cayenne/query/SQLSelectTest.java | 213 -----
 .../cayenne/query/SQLTemplateCacheKeyIT.java    |  96 +++
 .../cayenne/query/SQLTemplateCacheKeyTest.java  |  96 ---
 .../org/apache/cayenne/query/SQLTemplateIT.java | 211 +++++
 .../apache/cayenne/query/SQLTemplateTest.java   | 211 -----
 .../org/apache/cayenne/query/SelectByIdIT.java  | 193 +++++
 .../apache/cayenne/query/SelectByIdTest.java    | 193 -----
 .../cayenne/query/SelectQueryCacheKeyIT.java    | 181 ++++
 .../cayenne/query/SelectQueryCacheKeyTest.java  | 181 ----
 .../query/SelectQueryFetchLimitOrderingIT.java  |  81 ++
 .../SelectQueryFetchLimitOrderingTest.java      |  81 --
 .../org/apache/cayenne/query/SelectQueryIT.java | 796 +++++++++++++++++
 .../SelectQueryPrefetchRouterActionIT.java      |  90 ++
 ...ryPrefetchRouterActionQualifiedEntityIT.java |  75 ++
 ...PrefetchRouterActionQualifiedEntityTest.java |  75 --
 .../SelectQueryPrefetchRouterActionTest.java    |  90 --
 .../apache/cayenne/query/SelectQueryTest.java   | 796 -----------------
 .../cayenne/query/StatementFetchSizeIT.java     |  73 ++
 .../cayenne/query/StatementFetchSizeTest.java   |  73 --
 .../reflect/LifecycleCallbackRegistryIT.java    | 115 +++
 .../reflect/LifecycleCallbackRegistryTest.java  | 115 ---
 ...LifecycleCallbackRegistry_InheritanceIT.java |  79 ++
 ...fecycleCallbackRegistry_InheritanceTest.java |  79 --
 .../reflect/MixedPersistenceStrategyIT.java     | 106 +++
 .../reflect/MixedPersistenceStrategyTest.java   | 106 ---
 .../generic/DataObjectDescriptorFactoryIT.java  | 138 +++
 .../DataObjectDescriptorFactoryTest.java        | 138 ---
 ...jectDescriptorFactory_InheritanceMapsIT.java |  78 ++
 ...ctDescriptorFactory_InheritanceMapsTest.java |  78 --
 .../cayenne/tx/DefaultTransactionManagerIT.java |  75 ++
 .../tx/DefaultTransactionManagerTest.java       |  75 --
 .../cayenne/unit/OracleUnitDbAdapter.java       |  18 +-
 .../apache/cayenne/unit/di/DICaseSelfIT.java    |  81 ++
 .../apache/cayenne/unit/di/DICaseSelfTest.java  |  81 --
 .../unit/di/server/ServerCaseSelfIT.java        |  52 ++
 .../unit/di/server/ServerCaseSelfTest.java      |  52 --
 .../org/apache/cayenne/unit/jira/CAY_115IT.java | 115 +++
 .../apache/cayenne/unit/jira/CAY_115Test.java   | 115 ---
 .../org/apache/cayenne/unit/jira/CAY_191IT.java |  79 ++
 .../apache/cayenne/unit/jira/CAY_191Test.java   |  79 --
 .../org/apache/cayenne/unit/jira/CAY_194IT.java | 107 +++
 .../apache/cayenne/unit/jira/CAY_194Test.java   | 107 ---
 .../cayenne/util/DeepMergeOperationIT.java      |  85 ++
 .../util/DeepMergeOperationInheritanceIT.java   | 140 +++
 .../util/DeepMergeOperationInheritanceTest.java | 140 ---
 .../cayenne/util/DeepMergeOperationTest.java    |  85 --
 .../cayenne/util/EntityMergeSupportIT.java      |  99 +++
 .../cayenne/util/EntityMergeSupportTest.java    |  99 ---
 .../cayenne/util/ShallowMergeOperationIT.java   | 210 +++++
 .../cayenne/util/ShallowMergeOperationTest.java | 210 -----
 pom.xml                                         |  14 +
 478 files changed, 46325 insertions(+), 46325 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-client/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-client/pom.xml b/cayenne-client/pom.xml
index 103790a..9e1f38c 100644
--- a/cayenne-client/pom.xml
+++ b/cayenne-client/pom.xml
@@ -97,6 +97,10 @@
             <plugin>
                 <artifactId>maven-pmd-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+            </plugin>
         </plugins>
 	</build>
 </project>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-client/src/test/java/org/apache/cayenne/query/SelectQueryAbstractEntityIT.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/query/SelectQueryAbstractEntityIT.java b/cayenne-client/src/test/java/org/apache/cayenne/query/SelectQueryAbstractEntityIT.java
new file mode 100644
index 0000000..66d3b94
--- /dev/null
+++ b/cayenne-client/src/test/java/org/apache/cayenne/query/SelectQueryAbstractEntityIT.java
@@ -0,0 +1,110 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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 org.apache.cayenne.query;
+
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.testdo.mt.MtTable1;
+import org.apache.cayenne.testdo.mt.MtTable1Subclass1;
+import org.apache.cayenne.testdo.mt.MtTable1Subclass2;
+import org.apache.cayenne.unit.di.client.ClientCase;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+import java.util.List;
+
+@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT)
+public class SelectQueryAbstractEntityIT extends ServerCase {
+    
+    @Inject
+    private ObjectContext context;
+
+    @Inject
+    private DBHelper dbHelper;
+    
+    private TableHelper mtTable;
+    
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("MT_TABLE1");
+        
+        mtTable = new TableHelper(dbHelper, "MT_TABLE1");
+        mtTable.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1", "SUBCLASS_ATTRIBUTE1");
+    }
+    
+    protected void createDataSet() throws Exception{     
+
+        for (int i = 1; i <= 10; i++){
+            mtTable.insert(i, "sub2", "sub2_" + i, "sub2attr");
+        }
+        
+        for (int i = 11; i <= 20; i++){
+            mtTable.insert(i, "sub1", "sub1_" + i, "sub1attr");
+        }
+       
+    }
+    
+    public void testSublclassEntitySelect() throws Exception{
+        createDataSet();
+        
+        SelectQuery<MtTable1Subclass1> query = 
+                new SelectQuery<MtTable1Subclass1>(MtTable1Subclass1.class);
+        final List<MtTable1Subclass1> sub1List = context.select(query);
+        
+        SelectQuery<MtTable1Subclass2> query2 = 
+                new SelectQuery<MtTable1Subclass2>(MtTable1Subclass2.class);
+        final List<MtTable1Subclass2> sub2List = context.select(query2);
+        
+        assertNotNull(sub1List);
+        assertNotNull(sub2List);
+    }
+    
+    public void test1AbstractEntitySelect() throws Exception{
+        createDataSet();
+
+        SelectQuery<MtTable1> query = new SelectQuery<MtTable1>(MtTable1.class);
+        final List<MtTable1> list = context.select(query);
+
+        assertNotNull(list);
+
+        for (MtTable1 sub : list){
+            if(sub instanceof MtTable1Subclass1){
+                assertNotNull(((MtTable1Subclass1) sub).getSubclass1Attribute1());
+            }
+        }
+    }
+    
+    public void test2AbstractEntitySelect() throws Exception{
+        createDataSet();
+        
+        SelectQuery<MtTable1> query = new SelectQuery<MtTable1>(MtTable1.class);
+        final List<MtTable1> list = context.select(query);
+        
+        assertNotNull(list);
+        
+        for (MtTable1 sub : list){
+            if(sub instanceof MtTable1Subclass2){
+                assertNotNull(((MtTable1Subclass2) sub).getSubclass2Attribute1());
+            }
+        }
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-client/src/test/java/org/apache/cayenne/query/SelectQueryAbstractEntityTest.java
----------------------------------------------------------------------
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/query/SelectQueryAbstractEntityTest.java b/cayenne-client/src/test/java/org/apache/cayenne/query/SelectQueryAbstractEntityTest.java
deleted file mode 100644
index 9353fc9..0000000
--- a/cayenne-client/src/test/java/org/apache/cayenne/query/SelectQueryAbstractEntityTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you 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 org.apache.cayenne.query;
-
-import java.util.List;
-
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.test.jdbc.DBHelper;
-import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.testdo.mt.MtTable1;
-import org.apache.cayenne.testdo.mt.MtTable1Subclass1;
-import org.apache.cayenne.testdo.mt.MtTable1Subclass2;
-import org.apache.cayenne.unit.di.client.ClientCase;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-
-@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT)
-public class SelectQueryAbstractEntityTest extends ServerCase {
-    
-    @Inject
-    private ObjectContext context;
-
-    @Inject
-    private DBHelper dbHelper;
-    
-    private TableHelper mtTable;
-    
-    @Override
-    protected void setUpAfterInjection() throws Exception {
-        dbHelper.deleteAll("MT_TABLE1");
-        
-        mtTable = new TableHelper(dbHelper, "MT_TABLE1");
-        mtTable.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1", "SUBCLASS_ATTRIBUTE1");
-    }
-    
-    protected void createDataSet() throws Exception{     
-
-        for (int i = 1; i <= 10; i++){
-            mtTable.insert(i, "sub2", "sub2_" + i, "sub2attr");
-        }
-        
-        for (int i = 11; i <= 20; i++){
-            mtTable.insert(i, "sub1", "sub1_" + i, "sub1attr");
-        }
-       
-    }
-    
-    public void testSublclassEntitySelect() throws Exception{
-        createDataSet();
-        
-        SelectQuery<MtTable1Subclass1> query = 
-                new SelectQuery<MtTable1Subclass1>(MtTable1Subclass1.class);
-        final List<MtTable1Subclass1> sub1List = context.select(query);
-        
-        SelectQuery<MtTable1Subclass2> query2 = 
-                new SelectQuery<MtTable1Subclass2>(MtTable1Subclass2.class);
-        final List<MtTable1Subclass2> sub2List = context.select(query2);
-        
-        assertNotNull(sub1List);
-        assertNotNull(sub2List);
-    }
-    
-    public void test1AbstractEntitySelect() throws Exception{
-        createDataSet();
-
-        SelectQuery<MtTable1> query = new SelectQuery<MtTable1>(MtTable1.class);
-        final List<MtTable1> list = context.select(query);
-
-        assertNotNull(list);
-
-        for (MtTable1 sub : list){
-            if(sub instanceof MtTable1Subclass1){
-                assertNotNull(((MtTable1Subclass1) sub).getSubclass1Attribute1());
-            }
-        }
-    }
-    
-    public void test2AbstractEntitySelect() throws Exception{
-        createDataSet();
-        
-        SelectQuery<MtTable1> query = new SelectQuery<MtTable1>(MtTable1.class);
-        final List<MtTable1> list = context.select(query);
-        
-        assertNotNull(list);
-        
-        for (MtTable1 sub : list){
-            if(sub instanceof MtTable1Subclass2){
-                assertNotNull(((MtTable1Subclass2) sub).getSubclass2Attribute1());
-            }
-        }
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/pom.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/pom.xml b/cayenne-server/pom.xml
index 80b83dd..47bc27e 100644
--- a/cayenne-server/pom.xml
+++ b/cayenne-server/pom.xml
@@ -272,6 +272,10 @@
                     </excludes>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+            </plugin>
         </plugins>
 	</build>
 </project>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
new file mode 100644
index 0000000..dc9c133
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
@@ -0,0 +1,181 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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 org.apache.cayenne;
+
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.exp.ExpressionFactory;
+import org.apache.cayenne.query.RefreshQuery;
+import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.testdo.relationship.CollectionToMany;
+import org.apache.cayenne.testdo.relationship.CollectionToManyTarget;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+import java.util.Collection;
+
+@UseServerRuntime(ServerCase.RELATIONSHIPS_PROJECT)
+public class CDOCollectionRelationshipIT extends ServerCase {
+
+    @Inject
+    private ObjectContext context;
+
+    @Inject
+    private DBHelper dbHelper;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("COLLECTION_TO_MANY_TARGET");
+        dbHelper.deleteAll("COLLECTION_TO_MANY");
+
+        TableHelper tCollectionToMany = new TableHelper(dbHelper, "COLLECTION_TO_MANY");
+        tCollectionToMany.setColumns("ID");
+
+        TableHelper tCollectionToManyTarget = new TableHelper(
+                dbHelper,
+                "COLLECTION_TO_MANY_TARGET");
+        tCollectionToManyTarget.setColumns("ID", "COLLECTION_TO_MANY_ID");
+
+        // single data set for all tests
+        tCollectionToMany.insert(1).insert(2);
+        tCollectionToManyTarget.insert(1, 1).insert(2, 1).insert(3, 1).insert(4, 2);
+    }
+
+    public void testReadToMany() throws Exception {
+
+        CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1);
+
+        Collection<?> targets = o1.getTargets();
+
+        assertNotNull(targets);
+        assertTrue(((ValueHolder) targets).isFault());
+
+        assertEquals(3, targets.size());
+
+        assertTrue(targets.contains(Cayenne.objectForPK(
+                o1.getObjectContext(),
+                CollectionToManyTarget.class,
+                1)));
+        assertTrue(targets.contains(Cayenne.objectForPK(
+                o1.getObjectContext(),
+                CollectionToManyTarget.class,
+                2)));
+        assertTrue(targets.contains(Cayenne.objectForPK(
+                o1.getObjectContext(),
+                CollectionToManyTarget.class,
+                3)));
+    }
+
+    public void testReadToManyPrefetching() throws Exception {
+
+        SelectQuery query = new SelectQuery(CollectionToMany.class, ExpressionFactory
+                .matchDbExp(CollectionToMany.ID_PK_COLUMN, new Integer(1)));
+        query.addPrefetch(CollectionToMany.TARGETS_PROPERTY);
+        CollectionToMany o1 = (CollectionToMany) Cayenne.objectForQuery(context, query);
+
+        Collection<?> targets = o1.getTargets();
+
+        assertFalse(((ValueHolder) targets).isFault());
+
+        assertNotNull(targets);
+        assertEquals(3, targets.size());
+
+        assertTrue(targets.contains(Cayenne.objectForPK(
+                o1.getObjectContext(),
+                CollectionToManyTarget.class,
+                1)));
+        assertTrue(targets.contains(Cayenne.objectForPK(
+                o1.getObjectContext(),
+                CollectionToManyTarget.class,
+                2)));
+        assertTrue(targets.contains(Cayenne.objectForPK(
+                o1.getObjectContext(),
+                CollectionToManyTarget.class,
+                3)));
+    }
+
+    public void testAddToMany() throws Exception {
+
+        CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1);
+
+        Collection<?> targets = o1.getTargets();
+        assertNotNull(targets);
+        assertEquals(3, targets.size());
+
+        CollectionToManyTarget newTarget = o1.getObjectContext().newObject(
+                CollectionToManyTarget.class);
+
+        o1.addToTargets(newTarget);
+        assertEquals(4, targets.size());
+        assertTrue(o1.getTargets().contains(newTarget));
+        assertSame(o1, newTarget.getCollectionToMany());
+
+        o1.getObjectContext().commitChanges();
+
+        o1.getObjectContext().performGenericQuery(new RefreshQuery());
+        assertEquals(4, o1.getTargets().size());
+    }
+
+    public void testRemoveToMany() throws Exception {
+
+        CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1);
+
+        Collection<?> targets = o1.getTargets();
+        assertEquals(3, targets.size());
+
+        CollectionToManyTarget target = Cayenne.objectForPK(
+                o1.getObjectContext(),
+                CollectionToManyTarget.class,
+                2);
+        o1.removeFromTargets(target);
+
+        assertEquals(2, targets.size());
+        assertFalse(o1.getTargets().contains(target));
+        assertNull(target.getCollectionToMany());
+
+        o1.getObjectContext().commitChanges();
+
+        o1.getObjectContext().performGenericQuery(new RefreshQuery());
+        assertEquals(2, o1.getTargets().size());
+        assertFalse(o1.getTargets().contains(target));
+    }
+
+    public void testAddToManyViaReverse() throws Exception {
+
+        CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1);
+
+        Collection<?> targets = o1.getTargets();
+        assertNotNull(targets);
+        assertEquals(3, targets.size());
+
+        CollectionToManyTarget newTarget = o1.getObjectContext().newObject(
+                CollectionToManyTarget.class);
+
+        newTarget.setCollectionToMany(o1);
+        assertEquals(4, targets.size());
+        assertTrue(o1.getTargets().contains(newTarget));
+        assertSame(o1, newTarget.getCollectionToMany());
+
+        o1.getObjectContext().commitChanges();
+
+        o1.getObjectContext().performGenericQuery(new RefreshQuery());
+        assertEquals(4, o1.getTargets().size());
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipTest.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipTest.java
deleted file mode 100644
index 5fd4c08..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/CDOCollectionRelationshipTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you 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 org.apache.cayenne;
-
-import java.util.Collection;
-
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.query.RefreshQuery;
-import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
-import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.testdo.relationship.CollectionToMany;
-import org.apache.cayenne.testdo.relationship.CollectionToManyTarget;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-
-@UseServerRuntime(ServerCase.RELATIONSHIPS_PROJECT)
-public class CDOCollectionRelationshipTest extends ServerCase {
-
-    @Inject
-    private ObjectContext context;
-
-    @Inject
-    private DBHelper dbHelper;
-
-    @Override
-    protected void setUpAfterInjection() throws Exception {
-        dbHelper.deleteAll("COLLECTION_TO_MANY_TARGET");
-        dbHelper.deleteAll("COLLECTION_TO_MANY");
-
-        TableHelper tCollectionToMany = new TableHelper(dbHelper, "COLLECTION_TO_MANY");
-        tCollectionToMany.setColumns("ID");
-
-        TableHelper tCollectionToManyTarget = new TableHelper(
-                dbHelper,
-                "COLLECTION_TO_MANY_TARGET");
-        tCollectionToManyTarget.setColumns("ID", "COLLECTION_TO_MANY_ID");
-
-        // single data set for all tests
-        tCollectionToMany.insert(1).insert(2);
-        tCollectionToManyTarget.insert(1, 1).insert(2, 1).insert(3, 1).insert(4, 2);
-    }
-
-    public void testReadToMany() throws Exception {
-
-        CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1);
-
-        Collection<?> targets = o1.getTargets();
-
-        assertNotNull(targets);
-        assertTrue(((ValueHolder) targets).isFault());
-
-        assertEquals(3, targets.size());
-
-        assertTrue(targets.contains(Cayenne.objectForPK(
-                o1.getObjectContext(),
-                CollectionToManyTarget.class,
-                1)));
-        assertTrue(targets.contains(Cayenne.objectForPK(
-                o1.getObjectContext(),
-                CollectionToManyTarget.class,
-                2)));
-        assertTrue(targets.contains(Cayenne.objectForPK(
-                o1.getObjectContext(),
-                CollectionToManyTarget.class,
-                3)));
-    }
-
-    public void testReadToManyPrefetching() throws Exception {
-
-        SelectQuery query = new SelectQuery(CollectionToMany.class, ExpressionFactory
-                .matchDbExp(CollectionToMany.ID_PK_COLUMN, new Integer(1)));
-        query.addPrefetch(CollectionToMany.TARGETS_PROPERTY);
-        CollectionToMany o1 = (CollectionToMany) Cayenne.objectForQuery(context, query);
-
-        Collection<?> targets = o1.getTargets();
-
-        assertFalse(((ValueHolder) targets).isFault());
-
-        assertNotNull(targets);
-        assertEquals(3, targets.size());
-
-        assertTrue(targets.contains(Cayenne.objectForPK(
-                o1.getObjectContext(),
-                CollectionToManyTarget.class,
-                1)));
-        assertTrue(targets.contains(Cayenne.objectForPK(
-                o1.getObjectContext(),
-                CollectionToManyTarget.class,
-                2)));
-        assertTrue(targets.contains(Cayenne.objectForPK(
-                o1.getObjectContext(),
-                CollectionToManyTarget.class,
-                3)));
-    }
-
-    public void testAddToMany() throws Exception {
-
-        CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1);
-
-        Collection<?> targets = o1.getTargets();
-        assertNotNull(targets);
-        assertEquals(3, targets.size());
-
-        CollectionToManyTarget newTarget = o1.getObjectContext().newObject(
-                CollectionToManyTarget.class);
-
-        o1.addToTargets(newTarget);
-        assertEquals(4, targets.size());
-        assertTrue(o1.getTargets().contains(newTarget));
-        assertSame(o1, newTarget.getCollectionToMany());
-
-        o1.getObjectContext().commitChanges();
-
-        o1.getObjectContext().performGenericQuery(new RefreshQuery());
-        assertEquals(4, o1.getTargets().size());
-    }
-
-    public void testRemoveToMany() throws Exception {
-
-        CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1);
-
-        Collection<?> targets = o1.getTargets();
-        assertEquals(3, targets.size());
-
-        CollectionToManyTarget target = Cayenne.objectForPK(
-                o1.getObjectContext(),
-                CollectionToManyTarget.class,
-                2);
-        o1.removeFromTargets(target);
-
-        assertEquals(2, targets.size());
-        assertFalse(o1.getTargets().contains(target));
-        assertNull(target.getCollectionToMany());
-
-        o1.getObjectContext().commitChanges();
-
-        o1.getObjectContext().performGenericQuery(new RefreshQuery());
-        assertEquals(2, o1.getTargets().size());
-        assertFalse(o1.getTargets().contains(target));
-    }
-
-    public void testAddToManyViaReverse() throws Exception {
-
-        CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1);
-
-        Collection<?> targets = o1.getTargets();
-        assertNotNull(targets);
-        assertEquals(3, targets.size());
-
-        CollectionToManyTarget newTarget = o1.getObjectContext().newObject(
-                CollectionToManyTarget.class);
-
-        newTarget.setCollectionToMany(o1);
-        assertEquals(4, targets.size());
-        assertTrue(o1.getTargets().contains(newTarget));
-        assertSame(o1, newTarget.getCollectionToMany());
-
-        o1.getObjectContext().commitChanges();
-
-        o1.getObjectContext().performGenericQuery(new RefreshQuery());
-        assertEquals(4, o1.getTargets().size());
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
new file mode 100644
index 0000000..899ad6f
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
@@ -0,0 +1,325 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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 org.apache.cayenne;
+
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
+import org.apache.cayenne.query.CapsStrategy;
+import org.apache.cayenne.query.SQLTemplate;
+import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.testdo.testmap.Artist;
+import org.apache.cayenne.testdo.testmap.Gallery;
+import org.apache.cayenne.testdo.testmap.Painting;
+import org.apache.cayenne.testdo.testmap.ROPainting;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+import java.sql.Types;
+import java.util.List;
+import java.util.Map;
+
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class CDOMany2OneIT extends ServerCase {
+
+    @Inject
+    private ServerRuntime runtime;
+
+    @Inject
+    private ObjectContext context;
+
+    @Inject
+    private DBHelper dbHelper;
+
+    protected TableHelper tArtist;
+    protected TableHelper tPainting;
+    protected TableHelper tGallery;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        dbHelper.deleteAll("PAINTING_INFO");
+        dbHelper.deleteAll("PAINTING");
+        dbHelper.deleteAll("ARTIST_EXHIBIT");
+        dbHelper.deleteAll("ARTIST_GROUP");
+        dbHelper.deleteAll("ARTIST");
+        dbHelper.deleteAll("EXHIBIT");
+        dbHelper.deleteAll("GALLERY");
+
+        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
+
+        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting
+                .setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID")
+                .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.BIGINT, Types.INTEGER);
+
+        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
+    }
+
+    private void createArtistWithPaintingDataSet() throws Exception {
+        tArtist.insert(8, "aX");
+        tPainting.insert(6, "pW", 8, null);
+    }
+
+    private void createArtistWithPaintingsInGalleryDataSet() throws Exception {
+        tArtist.insert(8, "aX");
+        tGallery.insert(11, "Ge");
+        tPainting.insert(6, "pW1", 8, 11);
+        tPainting.insert(7, "pW2", 8, 11);
+
+    }
+
+    public void testMultipleToOneDeletion() throws Exception {
+
+        // was a problem per CAY-901
+
+        Painting p = context.newObject(Painting.class);
+        p.setPaintingTitle("P1");
+
+        Artist a = context.newObject(Artist.class);
+        a.setArtistName("A1");
+
+        Gallery g = context.newObject(Gallery.class);
+        g.setGalleryName("G1");
+
+        p.setToArtist(a);
+        p.setToGallery(g);
+        context.commitChanges();
+
+        p.setToArtist(null);
+        p.setToGallery(null);
+
+        context.commitChanges();
+
+        SQLTemplate q = new SQLTemplate(Painting.class, "SELECT * from PAINTING");
+        q.setColumnNamesCapitalization(CapsStrategy.UPPER);
+        q.setFetchingDataRows(true);
+
+        Map<String, ?> row = (Map<String, ?>) Cayenne.objectForQuery(context, q);
+        assertEquals("P1", row.get("PAINTING_TITLE"));
+        assertEquals(null, row.get("ARTIST_ID"));
+        assertEquals(null, row.get("GALLERY_ID"));
+    }
+
+    public void testReadRO1() throws Exception {
+
+        createArtistWithPaintingDataSet();
+
+        Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
+
+        Expression e = ExpressionFactory.matchExp(ROPainting.TO_ARTIST_PROPERTY, a1);
+        SelectQuery q = new SelectQuery(ROPainting.class, e);
+
+        List<ROPainting> paints = context.performQuery(q);
+        assertEquals(1, paints.size());
+
+        ROPainting rop1 = paints.get(0);
+        assertSame(a1, rop1.getToArtist());
+    }
+
+    public void testReadRO2() throws Exception {
+
+        createArtistWithPaintingDataSet();
+
+        Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
+
+        Expression e = ExpressionFactory.matchExp(ROPainting.TO_ARTIST_PROPERTY, a1);
+        SelectQuery q = new SelectQuery(ROPainting.class, e);
+
+        List<ROPainting> paints = context.performQuery(q);
+        assertEquals(1, paints.size());
+
+        ROPainting rop1 = paints.get(0);
+        assertNotNull(rop1.getToArtist());
+
+        // trigger fetch
+        rop1.getToArtist().getArtistName();
+        assertEquals(PersistenceState.COMMITTED, rop1.getToArtist().getPersistenceState());
+    }
+
+    public void testSelectViaRelationship() throws Exception {
+
+        createArtistWithPaintingDataSet();
+        Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
+        Painting p1 = Cayenne.objectForPK(context, Painting.class, 6);
+
+        Expression e = ExpressionFactory.matchExp(Painting.TO_ARTIST_PROPERTY, a1);
+        SelectQuery q = new SelectQuery(Painting.class, e);
+
+        List<Painting> paints = context.performQuery(q);
+        assertEquals(1, paints.size());
+        assertSame(p1, paints.get(0));
+    }
+
+    public void testSelectViaMultiRelationship() throws Exception {
+
+        createArtistWithPaintingsInGalleryDataSet();
+
+        Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
+        Gallery g1 = Cayenne.objectForPK(context, Gallery.class, 11);
+
+        Expression e = ExpressionFactory.matchExp("paintingArray.toGallery", g1);
+        SelectQuery q = new SelectQuery("Artist", e);
+
+        List<Artist> artists = context.performQuery(q);
+        assertEquals(1, artists.size());
+        assertSame(a1, artists.get(0));
+    }
+
+    public void testNewAdd() throws Exception {
+        Artist a1 = context.newObject(Artist.class);
+        a1.setArtistName("bL");
+
+        Painting p1 = context.newObject(Painting.class);
+        p1.setPaintingTitle("xa");
+
+        p1.setToArtist(a1);
+
+        assertSame(a1, p1.getToArtist());
+        assertEquals(1, a1.getPaintingArray().size());
+        assertSame(p1, a1.getPaintingArray().get(0));
+
+        context.commitChanges();
+
+        assertEquals(Cayenne.longPKForObject(a1), tArtist.getLong("ARTIST_ID"));
+        assertEquals(Cayenne.longPKForObject(a1), tPainting.getLong("ARTIST_ID"));
+    }
+
+    public void testRemove() throws Exception {
+        Painting p1 = context.newObject(Painting.class);
+        p1.setPaintingTitle("xa");
+
+        Gallery g1 = context.newObject(Gallery.class);
+        g1.setGalleryName("yT");
+
+        p1.setToGallery(g1);
+
+        // do save
+        context.commitChanges();
+
+        ObjectContext context2 = runtime.newContext();
+
+        // test database data
+        Painting p2 = (Painting) Cayenne.objectForQuery(context2, new SelectQuery(
+                Painting.class));
+        Gallery g2 = p2.getToGallery();
+
+        p2.setToGallery(null);
+
+        // test before save
+        assertEquals(0, g2.getPaintingArray().size());
+        assertNull(p2.getToGallery());
+
+        // do save II
+        context2.commitChanges();
+
+        ObjectContext context3 = runtime.newContext();
+
+        Painting p3 = (Painting) Cayenne.objectForQuery(context3, new SelectQuery(
+                Painting.class));
+        assertNull(p3.getToGallery());
+    }
+
+    public void testReplace() throws Exception {
+
+        Painting p1 = context.newObject(Painting.class);
+        p1.setPaintingTitle("xa");
+
+        Gallery g1 = context.newObject(Gallery.class);
+        g1.setGalleryName("yTW");
+
+        p1.setToGallery(g1);
+
+        context.commitChanges();
+        ObjectContext context2 = runtime.newContext();
+
+        // test database data
+        Painting p2 = (Painting) Cayenne.objectForQuery(context2, new SelectQuery(
+                Painting.class));
+        Gallery g21 = p2.getToGallery();
+        assertNotNull(g21);
+        assertEquals("yTW", g21.getGalleryName());
+        assertEquals(1, g21.getPaintingArray().size());
+        assertSame(p2, g21.getPaintingArray().get(0));
+
+        Gallery g22 = context2.newObject(Gallery.class);
+        g22.setGalleryName("rE");
+        p2.setToGallery(g22);
+
+        // test before save
+        assertEquals(0, g21.getPaintingArray().size());
+        assertEquals(1, g22.getPaintingArray().size());
+        assertSame(p2, g22.getPaintingArray().get(0));
+
+        // do save II
+        context2.commitChanges();
+
+        ObjectContext context3 = runtime.newContext();
+
+        Painting p3 = (Painting) Cayenne.objectForQuery(context3, new SelectQuery(
+                Painting.class));
+        Gallery g3 = p3.getToGallery();
+        assertNotNull(g3);
+        assertEquals("rE", g3.getGalleryName());
+        assertEquals(1, g3.getPaintingArray().size());
+        assertSame(p3, g3.getPaintingArray().get(0));
+    }
+
+    public void testSavedAdd() throws Exception {
+        Painting p1 = context.newObject(Painting.class);
+        p1.setPaintingTitle("xa");
+
+        assertTrue(context.hasChanges());
+
+        // do save
+        context.commitChanges();
+        ObjectContext context2 = runtime.newContext();
+
+        // test database data
+        Painting p2 = (Painting) Cayenne.objectForQuery(context2, new SelectQuery(
+                Painting.class));
+        assertNull(p2.getToGallery());
+
+        Gallery g2 = context2.newObject(Gallery.class);
+        g2.setGalleryName("rE");
+
+        p2.setToGallery(g2);
+
+        // test before save
+        assertEquals(1, g2.getPaintingArray().size());
+        assertSame(p2, g2.getPaintingArray().get(0));
+
+        // do save II
+        context2.commitChanges();
+        ObjectContext context3 = runtime.newContext();
+
+        Painting p3 = (Painting) Cayenne.objectForQuery(context3, new SelectQuery(
+                Painting.class));
+        Gallery g3 = p3.getToGallery();
+        assertNotNull(g3);
+        assertEquals("rE", g3.getGalleryName());
+        assertEquals(1, g3.getPaintingArray().size());
+        assertSame(p3, g3.getPaintingArray().get(0));
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneNoRevIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneNoRevIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneNoRevIT.java
new file mode 100644
index 0000000..27a2298
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneNoRevIT.java
@@ -0,0 +1,56 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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 org.apache.cayenne;
+
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.testdo.testmap.Artist;
+import org.apache.cayenne.testdo.testmap.Painting1;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class CDOMany2OneNoRevIT extends ServerCase {
+
+    @Inject
+    private ObjectContext context;
+
+    public void testNewAdd() throws Exception {
+
+        Artist a1 = context.newObject(Artist.class);
+        a1.setArtistName("a");
+        Painting1 p1 = context.newObject(Painting1.class);
+        p1.setPaintingTitle("p");
+
+        // TESTING THIS
+        p1.setToArtist(a1);
+
+        assertSame(a1, p1.getToArtist());
+
+        context.commitChanges();
+        ObjectId aid = a1.getObjectId();
+        ObjectId pid = p1.getObjectId();
+        context.invalidateObjects(a1, p1);
+
+        Painting1 p2 = (Painting1) Cayenne.objectForPK(context, pid);
+        Artist a2 = p2.getToArtist();
+        assertNotNull(a2);
+        assertEquals(aid, a2.getObjectId());
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneNoRevTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneNoRevTest.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneNoRevTest.java
deleted file mode 100644
index bdbacea..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneNoRevTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you 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 org.apache.cayenne;
-
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.testdo.testmap.Painting1;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-
-@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
-public class CDOMany2OneNoRevTest extends ServerCase {
-
-    @Inject
-    private ObjectContext context;
-
-    public void testNewAdd() throws Exception {
-
-        Artist a1 = context.newObject(Artist.class);
-        a1.setArtistName("a");
-        Painting1 p1 = context.newObject(Painting1.class);
-        p1.setPaintingTitle("p");
-
-        // TESTING THIS
-        p1.setToArtist(a1);
-
-        assertSame(a1, p1.getToArtist());
-
-        context.commitChanges();
-        ObjectId aid = a1.getObjectId();
-        ObjectId pid = p1.getObjectId();
-        context.invalidateObjects(a1, p1);
-
-        Painting1 p2 = (Painting1) Cayenne.objectForPK(context, pid);
-        Artist a2 = p2.getToArtist();
-        assertNotNull(a2);
-        assertEquals(aid, a2.getObjectId());
-    }
-}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/e42c376c/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneTest.java b/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneTest.java
deleted file mode 100644
index 1333bd1..0000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/CDOMany2OneTest.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you 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 org.apache.cayenne;
-
-import java.sql.Types;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.Expression;
-import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.query.CapsStrategy;
-import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.query.SelectQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
-import org.apache.cayenne.test.jdbc.TableHelper;
-import org.apache.cayenne.testdo.testmap.Artist;
-import org.apache.cayenne.testdo.testmap.Gallery;
-import org.apache.cayenne.testdo.testmap.Painting;
-import org.apache.cayenne.testdo.testmap.ROPainting;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-
-@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
-public class CDOMany2OneTest extends ServerCase {
-
-    @Inject
-    private ServerRuntime runtime;
-
-    @Inject
-    private ObjectContext context;
-
-    @Inject
-    private DBHelper dbHelper;
-
-    protected TableHelper tArtist;
-    protected TableHelper tPainting;
-    protected TableHelper tGallery;
-
-    @Override
-    protected void setUpAfterInjection() throws Exception {
-        dbHelper.deleteAll("PAINTING_INFO");
-        dbHelper.deleteAll("PAINTING");
-        dbHelper.deleteAll("ARTIST_EXHIBIT");
-        dbHelper.deleteAll("ARTIST_GROUP");
-        dbHelper.deleteAll("ARTIST");
-        dbHelper.deleteAll("EXHIBIT");
-        dbHelper.deleteAll("GALLERY");
-
-        tArtist = new TableHelper(dbHelper, "ARTIST");
-        tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
-
-        tPainting = new TableHelper(dbHelper, "PAINTING");
-        tPainting
-                .setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID")
-                .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.BIGINT, Types.INTEGER);
-
-        tGallery = new TableHelper(dbHelper, "GALLERY");
-        tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
-    }
-
-    private void createArtistWithPaintingDataSet() throws Exception {
-        tArtist.insert(8, "aX");
-        tPainting.insert(6, "pW", 8, null);
-    }
-
-    private void createArtistWithPaintingsInGalleryDataSet() throws Exception {
-        tArtist.insert(8, "aX");
-        tGallery.insert(11, "Ge");
-        tPainting.insert(6, "pW1", 8, 11);
-        tPainting.insert(7, "pW2", 8, 11);
-
-    }
-
-    public void testMultipleToOneDeletion() throws Exception {
-
-        // was a problem per CAY-901
-
-        Painting p = context.newObject(Painting.class);
-        p.setPaintingTitle("P1");
-
-        Artist a = context.newObject(Artist.class);
-        a.setArtistName("A1");
-
-        Gallery g = context.newObject(Gallery.class);
-        g.setGalleryName("G1");
-
-        p.setToArtist(a);
-        p.setToGallery(g);
-        context.commitChanges();
-
-        p.setToArtist(null);
-        p.setToGallery(null);
-
-        context.commitChanges();
-
-        SQLTemplate q = new SQLTemplate(Painting.class, "SELECT * from PAINTING");
-        q.setColumnNamesCapitalization(CapsStrategy.UPPER);
-        q.setFetchingDataRows(true);
-
-        Map<String, ?> row = (Map<String, ?>) Cayenne.objectForQuery(context, q);
-        assertEquals("P1", row.get("PAINTING_TITLE"));
-        assertEquals(null, row.get("ARTIST_ID"));
-        assertEquals(null, row.get("GALLERY_ID"));
-    }
-
-    public void testReadRO1() throws Exception {
-
-        createArtistWithPaintingDataSet();
-
-        Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
-
-        Expression e = ExpressionFactory.matchExp(ROPainting.TO_ARTIST_PROPERTY, a1);
-        SelectQuery q = new SelectQuery(ROPainting.class, e);
-
-        List<ROPainting> paints = context.performQuery(q);
-        assertEquals(1, paints.size());
-
-        ROPainting rop1 = paints.get(0);
-        assertSame(a1, rop1.getToArtist());
-    }
-
-    public void testReadRO2() throws Exception {
-
-        createArtistWithPaintingDataSet();
-
-        Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
-
-        Expression e = ExpressionFactory.matchExp(ROPainting.TO_ARTIST_PROPERTY, a1);
-        SelectQuery q = new SelectQuery(ROPainting.class, e);
-
-        List<ROPainting> paints = context.performQuery(q);
-        assertEquals(1, paints.size());
-
-        ROPainting rop1 = paints.get(0);
-        assertNotNull(rop1.getToArtist());
-
-        // trigger fetch
-        rop1.getToArtist().getArtistName();
-        assertEquals(PersistenceState.COMMITTED, rop1.getToArtist().getPersistenceState());
-    }
-
-    public void testSelectViaRelationship() throws Exception {
-
-        createArtistWithPaintingDataSet();
-        Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
-        Painting p1 = Cayenne.objectForPK(context, Painting.class, 6);
-
-        Expression e = ExpressionFactory.matchExp(Painting.TO_ARTIST_PROPERTY, a1);
-        SelectQuery q = new SelectQuery(Painting.class, e);
-
-        List<Painting> paints = context.performQuery(q);
-        assertEquals(1, paints.size());
-        assertSame(p1, paints.get(0));
-    }
-
-    public void testSelectViaMultiRelationship() throws Exception {
-
-        createArtistWithPaintingsInGalleryDataSet();
-
-        Artist a1 = Cayenne.objectForPK(context, Artist.class, 8);
-        Gallery g1 = Cayenne.objectForPK(context, Gallery.class, 11);
-
-        Expression e = ExpressionFactory.matchExp("paintingArray.toGallery", g1);
-        SelectQuery q = new SelectQuery("Artist", e);
-
-        List<Artist> artists = context.performQuery(q);
-        assertEquals(1, artists.size());
-        assertSame(a1, artists.get(0));
-    }
-
-    public void testNewAdd() throws Exception {
-        Artist a1 = context.newObject(Artist.class);
-        a1.setArtistName("bL");
-
-        Painting p1 = context.newObject(Painting.class);
-        p1.setPaintingTitle("xa");
-
-        p1.setToArtist(a1);
-
-        assertSame(a1, p1.getToArtist());
-        assertEquals(1, a1.getPaintingArray().size());
-        assertSame(p1, a1.getPaintingArray().get(0));
-
-        context.commitChanges();
-
-        assertEquals(Cayenne.longPKForObject(a1), tArtist.getLong("ARTIST_ID"));
-        assertEquals(Cayenne.longPKForObject(a1), tPainting.getLong("ARTIST_ID"));
-    }
-
-    public void testRemove() throws Exception {
-        Painting p1 = context.newObject(Painting.class);
-        p1.setPaintingTitle("xa");
-
-        Gallery g1 = context.newObject(Gallery.class);
-        g1.setGalleryName("yT");
-
-        p1.setToGallery(g1);
-
-        // do save
-        context.commitChanges();
-
-        ObjectContext context2 = runtime.newContext();
-
-        // test database data
-        Painting p2 = (Painting) Cayenne.objectForQuery(context2, new SelectQuery(
-                Painting.class));
-        Gallery g2 = p2.getToGallery();
-
-        p2.setToGallery(null);
-
-        // test before save
-        assertEquals(0, g2.getPaintingArray().size());
-        assertNull(p2.getToGallery());
-
-        // do save II
-        context2.commitChanges();
-
-        ObjectContext context3 = runtime.newContext();
-
-        Painting p3 = (Painting) Cayenne.objectForQuery(context3, new SelectQuery(
-                Painting.class));
-        assertNull(p3.getToGallery());
-    }
-
-    public void testReplace() throws Exception {
-
-        Painting p1 = context.newObject(Painting.class);
-        p1.setPaintingTitle("xa");
-
-        Gallery g1 = context.newObject(Gallery.class);
-        g1.setGalleryName("yTW");
-
-        p1.setToGallery(g1);
-
-        context.commitChanges();
-        ObjectContext context2 = runtime.newContext();
-
-        // test database data
-        Painting p2 = (Painting) Cayenne.objectForQuery(context2, new SelectQuery(
-                Painting.class));
-        Gallery g21 = p2.getToGallery();
-        assertNotNull(g21);
-        assertEquals("yTW", g21.getGalleryName());
-        assertEquals(1, g21.getPaintingArray().size());
-        assertSame(p2, g21.getPaintingArray().get(0));
-
-        Gallery g22 = context2.newObject(Gallery.class);
-        g22.setGalleryName("rE");
-        p2.setToGallery(g22);
-
-        // test before save
-        assertEquals(0, g21.getPaintingArray().size());
-        assertEquals(1, g22.getPaintingArray().size());
-        assertSame(p2, g22.getPaintingArray().get(0));
-
-        // do save II
-        context2.commitChanges();
-
-        ObjectContext context3 = runtime.newContext();
-
-        Painting p3 = (Painting) Cayenne.objectForQuery(context3, new SelectQuery(
-                Painting.class));
-        Gallery g3 = p3.getToGallery();
-        assertNotNull(g3);
-        assertEquals("rE", g3.getGalleryName());
-        assertEquals(1, g3.getPaintingArray().size());
-        assertSame(p3, g3.getPaintingArray().get(0));
-    }
-
-    public void testSavedAdd() throws Exception {
-        Painting p1 = context.newObject(Painting.class);
-        p1.setPaintingTitle("xa");
-
-        assertTrue(context.hasChanges());
-
-        // do save
-        context.commitChanges();
-        ObjectContext context2 = runtime.newContext();
-
-        // test database data
-        Painting p2 = (Painting) Cayenne.objectForQuery(context2, new SelectQuery(
-                Painting.class));
-        assertNull(p2.getToGallery());
-
-        Gallery g2 = context2.newObject(Gallery.class);
-        g2.setGalleryName("rE");
-
-        p2.setToGallery(g2);
-
-        // test before save
-        assertEquals(1, g2.getPaintingArray().size());
-        assertSame(p2, g2.getPaintingArray().get(0));
-
-        // do save II
-        context2.commitChanges();
-        ObjectContext context3 = runtime.newContext();
-
-        Painting p3 = (Painting) Cayenne.objectForQuery(context3, new SelectQuery(
-                Painting.class));
-        Gallery g3 = p3.getToGallery();
-        assertNotNull(g3);
-        assertEquals("rE", g3.getGalleryName());
-        assertEquals(1, g3.getPaintingArray().size());
-        assertSame(p3, g3.getPaintingArray().get(0));
-    }
-}