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 2011/04/22 22:14:31 UTC
svn commit: r1096017 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test:
java/org/apache/cayenne/access/DataContextPrefetchExtrasTest.java
resources/dml/access.DataContextPrefetchExtrasTest.xml
Author: aadamchik
Date: Fri Apr 22 20:14:31 2011
New Revision: 1096017
URL: http://svn.apache.org/viewvc?rev=1096017&view=rev
Log:
CAY-1560
patches by Dzmitry Kazimirchyk:
DataContextPrefetchExtrasTest.patch
Removed:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/dml/access.DataContextPrefetchExtrasTest.xml
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasTest.java?rev=1096017&r1=1096016&r2=1096017&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasTest.java Fri Apr 22 20:14:31 2011
@@ -23,45 +23,94 @@ import java.util.List;
import org.apache.cayenne.CayenneDataObject;
import org.apache.cayenne.DataObject;
+import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.PersistenceState;
import org.apache.cayenne.ValueHolder;
+import org.apache.cayenne.di.Inject;
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.query.SortOrder;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
import org.apache.cayenne.testdo.testmap.CharFkTestEntity;
import org.apache.cayenne.testdo.testmap.CharPkTestEntity;
import org.apache.cayenne.testdo.testmap.CompoundFkTestEntity;
import org.apache.cayenne.testdo.testmap.CompoundPkTestEntity;
-import org.apache.cayenne.unit.CayenneCase;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
/**
* Test prefetching of various obscure cases.
*/
-public class DataContextPrefetchExtrasTest extends CayenneCase {
+@UseServerRuntime(ServerCase.TESTMAP_PROJECT)
+public class DataContextPrefetchExtrasTest extends ServerCase {
- protected DataContext context;
+ @Inject
+ protected ObjectContext context;
+
+ @Inject
+ protected DBHelper dbHelper;
+
+ protected TableHelper tCharPkTest;
+ protected TableHelper tCharFkTest;
+ protected TableHelper tCompoundPkTest;
+ protected TableHelper tCompoundFkTest;
@Override
- protected void setUp() throws Exception {
- super.setUp();
- deleteTestData();
- context = createDataContext();
+ protected void setUpAfterInjection() throws Exception {
+ dbHelper.deleteAll("CHAR_PK_TEST");
+ dbHelper.deleteAll("CHAR_FK_TEST");
+ dbHelper.deleteAll("COMPOUND_PK_TEST");
+ dbHelper.deleteAll("COMPOUND_FK_TEST");
+
+ tCharPkTest = new TableHelper(dbHelper, "CHAR_PK_TEST");
+ tCharPkTest.setColumns("PK_COL", "OTHER_COL");
+
+ tCharFkTest = new TableHelper(dbHelper, "CHAR_FK_TEST");
+ tCharFkTest.setColumns("PK", "FK_COL", "NAME");
+
+ tCompoundPkTest = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+ tCompoundPkTest.setColumns("KEY1", "KEY2", "NAME");
+
+ tCompoundFkTest = new TableHelper(dbHelper, "COMPOUND_FK_TEST");
+ tCompoundFkTest.setColumns("PKEY", "F_KEY1", "F_KEY2", "NAME");
+ }
+
+ protected void createPrefetchToManyOnCharKeyDataSet() throws Exception {
+ tCharPkTest.insert("k1", "n1");
+ tCharPkTest.insert("k2", "n2");
+
+ tCharFkTest.insert(1, "k1", "fn1");
+ tCharFkTest.insert(2, "k1", "fn2");
+ tCharFkTest.insert(3, "k2", "fn3");
+ tCharFkTest.insert(4, "k2", "fn4");
+ tCharFkTest.insert(5, "k1", "fn5");
+ }
+
+ protected void createCompoundDataSet() throws Exception {
+ tCompoundPkTest.insert("101", "201", "CPK1");
+ tCompoundPkTest.insert("102", "202", "CPK2");
+ tCompoundPkTest.insert("103", "203", "CPK3");
+
+ tCompoundFkTest.insert(301, "102", "202", "CFK1");
+ tCompoundFkTest.insert(302, "102", "202", "CFK2");
+ tCompoundFkTest.insert(303, "101", "201", "CFK3");
}
public void testPrefetchToManyOnCharKey() throws Exception {
- createTestData("testPrefetchToManyOnCharKey");
+ createPrefetchToManyOnCharKeyDataSet();
SelectQuery q = new SelectQuery(CharPkTestEntity.class);
q.addPrefetch("charFKs");
q.addOrdering(CharPkTestEntity.OTHER_COL_PROPERTY, SortOrder.ASCENDING);
- List pks = context.performQuery(q);
+ List<?> pks = context.performQuery(q);
assertEquals(2, pks.size());
CharPkTestEntity pk1 = (CharPkTestEntity) pks.get(0);
assertEquals("n1", pk1.getOtherCol());
- List toMany = (List) pk1.readPropertyDirectly("charFKs");
+ List<?> toMany = (List<?>) pk1.readPropertyDirectly("charFKs");
assertNotNull(toMany);
assertFalse(((ValueHolder) toMany).isFault());
assertEquals(3, toMany.size());
@@ -75,49 +124,42 @@ public class DataContextPrefetchExtrasTe
* Tests to-one prefetching over relationships with compound keys.
*/
public void testPrefetch10() throws Exception {
- createTestData("testCompound");
+ createCompoundDataSet();
Expression e = ExpressionFactory.matchExp("name", "CFK2");
SelectQuery q = new SelectQuery(CompoundFkTestEntity.class, e);
q.addPrefetch("toCompoundPk");
- List objects = context.performQuery(q);
+ List<?> objects = context.performQuery(q);
assertEquals(1, objects.size());
CayenneDataObject fk1 = (CayenneDataObject) objects.get(0);
- blockQueries();
- try {
-
- Object toOnePrefetch = fk1.readNestedProperty("toCompoundPk");
- assertNotNull(toOnePrefetch);
- assertTrue(
- "Expected DataObject, got: " + toOnePrefetch.getClass().getName(),
- toOnePrefetch instanceof DataObject);
-
- DataObject pk1 = (DataObject) toOnePrefetch;
- assertEquals(PersistenceState.COMMITTED, pk1.getPersistenceState());
- assertEquals("CPK2", pk1.readPropertyDirectly("name"));
- }
- finally {
- unblockQueries();
- }
+ Object toOnePrefetch = fk1.readNestedProperty("toCompoundPk");
+ assertNotNull(toOnePrefetch);
+ assertTrue(
+ "Expected DataObject, got: " + toOnePrefetch.getClass().getName(),
+ toOnePrefetch instanceof DataObject);
+
+ DataObject pk1 = (DataObject) toOnePrefetch;
+ assertEquals(PersistenceState.COMMITTED, pk1.getPersistenceState());
+ assertEquals("CPK2", pk1.readPropertyDirectly("name"));
}
/**
* Tests to-many prefetching over relationships with compound keys.
*/
public void testPrefetch11() throws Exception {
- createTestData("testCompound");
+ createCompoundDataSet();
Expression e = ExpressionFactory.matchExp("name", "CPK2");
SelectQuery q = new SelectQuery(CompoundPkTestEntity.class, e);
q.addPrefetch("compoundFkArray");
- List pks = context.performQuery(q);
+ List<?> pks = context.performQuery(q);
assertEquals(1, pks.size());
CayenneDataObject pk1 = (CayenneDataObject) pks.get(0);
- List toMany = (List) pk1.readPropertyDirectly("compoundFkArray");
+ List<?> toMany = (List<?>) pk1.readPropertyDirectly("compoundFkArray");
assertNotNull(toMany);
assertFalse(((ValueHolder) toMany).isFault());
assertEquals(2, toMany.size());