You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by mg...@apache.org on 2010/11/01 14:57:57 UTC
svn commit: r1029662 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/access/
test/java/org/apache/cayenne/query/
Author: mgentry
Date: Mon Nov 1 13:57:56 2010
New Revision: 1029662
URL: http://svn.apache.org/viewvc?rev=1029662&view=rev
Log:
Updates for CAY-1499, Deprecate DataContext.objectFromDataRow methods with unused "refresh" parameters.
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextExtrasTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ObjectStoreTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java?rev=1029662&r1=1029661&r2=1029662&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java Mon Nov 1 13:57:56 2010
@@ -95,7 +95,7 @@ public class DataContext extends BaseCon
/**
* Creates a new DataContext with parent DataChannel and ObjectStore.
- *
+ *
* @since 1.2
*/
public DataContext(DataChannel channel, ObjectStore objectStore) {
@@ -117,7 +117,7 @@ public class DataContext extends BaseCon
* Returns {@link QueryCache} used by this DataContext, creating it on the fly if
* needed. Uses parent DataDomain {@link QueryCacheFactory} to initialize the cache
* for the first time, passing parent DataDomain's properties.
- *
+ *
* @since 3.0
*/
@Override
@@ -138,7 +138,7 @@ public class DataContext extends BaseCon
/**
* Creates and returns a new child ObjectContext.
- *
+ *
* @since 3.0
*/
public ObjectContext createChildContext() {
@@ -207,7 +207,7 @@ public class DataContext extends BaseCon
* Returns a DataDomain used by this DataContext. DataDomain is looked up in the
* DataChannel hierarchy. If a channel is not a DataDomain or a DataContext, null is
* returned.
- *
+ *
* @return DataDomain that is a direct or indirect parent of this DataContext in the
* DataChannel hierarchy.
* @since 1.1
@@ -237,7 +237,7 @@ public class DataContext extends BaseCon
/**
* Sets a DataContextDelegate for this context. Delegate is notified of certain events
* in the DataContext lifecycle and can customize DataContext behavior.
- *
+ *
* @since 1.1
*/
public void setDelegate(DataContextDelegate delegate) {
@@ -246,7 +246,7 @@ public class DataContext extends BaseCon
/**
* Returns a delegate currently associated with this DataContext.
- *
+ *
* @since 1.1
*/
public DataContextDelegate getDelegate() {
@@ -307,7 +307,7 @@ public class DataContext extends BaseCon
/**
* Returns a collection of all uncommitted registered objects.
- *
+ *
* @since 1.2
*/
@Override
@@ -344,7 +344,7 @@ public class DataContext extends BaseCon
* temporary ids. DO NOT USE this method if you expect a DataRow to represent a
* complete object state.
* </p>
- *
+ *
* @since 1.1
*/
public DataRow currentSnapshot(final Persistent object) {
@@ -452,7 +452,7 @@ public class DataContext extends BaseCon
/**
* Converts a list of DataRows to a List of DataObject registered with this
* DataContext.
- *
+ *
* @since 3.0
*/
public List objectsFromDataRows(
@@ -479,14 +479,27 @@ public class DataContext extends BaseCon
/**
* Creates a DataObject from DataRow.
- *
+ *
+ * @deprecated Use objectFromDataRow(Class<T> objectClass, DataRow dataRow) instead.
* @see DataRow
*/
+ @Deprecated
public <T extends DataObject> T objectFromDataRow(
Class<T> objectClass,
DataRow dataRow,
boolean refresh) {
+ return objectFromDataRow(objectClass, dataRow);
+ }
+ /**
+ * Creates a DataObject from DataRow.
+ *
+ * @see DataRow
+ * @since 3.1
+ */
+ public <T extends DataObject> T objectFromDataRow(
+ Class<T> objectClass,
+ DataRow dataRow) {
ObjEntity entity = this.getEntityResolver().lookupObjEntity(objectClass);
if (entity == null) {
@@ -502,15 +515,29 @@ public class DataContext extends BaseCon
/**
* Creates a DataObject from DataRow. This variety of the 'objectFromDataRow' method
* is normally used for generic classes.
- *
+ *
+ * @deprecated Use objectFromDataRow(String entityName, DataRow dataRow) instead.
* @see DataRow
* @since 3.0
*/
+ @Deprecated
public DataObject objectFromDataRow(
String entityName,
DataRow dataRow,
boolean refresh) {
+ return objectFromDataRow(entityName, dataRow);
+ }
+ /**
+ * Creates a DataObject from DataRow. This variety of the 'objectFromDataRow' method
+ * is normally used for generic classes.
+ *
+ * @see DataRow
+ * @since 3.1
+ */
+ public DataObject objectFromDataRow(
+ String entityName,
+ DataRow dataRow) {
ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(entityName);
List<?> list = objectsFromDataRows(descriptor, Collections.singletonList(dataRow));
@@ -519,7 +546,7 @@ public class DataContext extends BaseCon
/**
* Creates and registers a new persistent object.
- *
+ *
* @since 1.2
*/
@Override
@@ -543,7 +570,7 @@ public class DataContext extends BaseCon
* <p/>
* <i>Note: in most cases {@link #newObject(Class)} method should be used, however
* this method is helpful when generic persistent classes are used.</i>
- *
+ *
* @since 3.0
*/
public Persistent newObject(String entityName) {
@@ -580,7 +607,7 @@ public class DataContext extends BaseCon
* <p/>
* <i>Note that since 3.0 this method takes Object as an argument instead of a
* {@link DataObject}.</i>
- *
+ *
* @param object new object that needs to be made persistent.
*/
@Override
@@ -684,7 +711,7 @@ public class DataContext extends BaseCon
* Unregisters a Collection of DataObjects from the DataContext and the underlying
* ObjectStore. This operation also unsets DataContext and ObjectId for each object
* and changes its state to TRANSIENT.
- *
+ *
* @see #invalidateObjects(Collection)
*/
public void unregisterObjects(Collection dataObjects) {
@@ -694,7 +721,7 @@ public class DataContext extends BaseCon
/**
* If the parent channel is a DataContext, reverts local changes to make this context
* look like the parent, if the parent channel is a DataDomain, reverts all changes.
- *
+ *
* @since 1.2
*/
@Override
@@ -744,7 +771,7 @@ public class DataContext extends BaseCon
* update. If it is a DataDomain (the most common case), the changes are written to
* the database. To cause cascading commit all the way to the database, one must use
* {@link #commitChanges()}.
- *
+ *
* @since 1.2
* @see #commitChanges()
*/
@@ -788,7 +815,7 @@ public class DataContext extends BaseCon
/**
* Synchronizes with the parent channel, performing a flush or a commit.
- *
+ *
* @since 1.2
*/
GraphDiff flushToParent(boolean cascade) {
@@ -922,7 +949,7 @@ public class DataContext extends BaseCon
/**
* Runs an iterated query in transactional context provided by the caller.
- *
+ *
* @since 1.2
*/
ResultIterator internalPerformIteratedQuery(Query query) throws CayenneException {
@@ -935,7 +962,7 @@ public class DataContext extends BaseCon
/**
* Executes a query returning a generic response.
- *
+ *
* @since 1.2
*/
@Override
@@ -969,7 +996,7 @@ public class DataContext extends BaseCon
* <p>
* <i>Since 1.2 takes any Query parameter, not just GenericSelectQuery</i>
* </p>
- *
+ *
* @return A list of DataObjects or a DataRows, depending on the value returned by
* {@link QueryMetadata#isFetchingDataRows()}.
*/
@@ -988,7 +1015,7 @@ public class DataContext extends BaseCon
/**
* An implementation of a {@link DataChannel} method that is used by child contexts to
* execute queries. Not intended for direct use.
- *
+ *
* @since 1.2
*/
public QueryResponse onQuery(ObjectContext context, Query query) {
@@ -998,7 +1025,7 @@ public class DataContext extends BaseCon
/**
* Performs a single database query that does not select rows. Returns an array of
* update counts.
- *
+ *
* @since 1.1
*/
public int[] performNonSelectingQuery(Query query) {
@@ -1009,7 +1036,7 @@ public class DataContext extends BaseCon
/**
* Performs a named mapped query that does not select rows. Returns an array of update
* counts.
- *
+ *
* @since 1.1
*/
public int[] performNonSelectingQuery(String queryName) {
@@ -1019,7 +1046,7 @@ public class DataContext extends BaseCon
/**
* Performs a named mapped non-selecting query using a map of parameters. Returns an
* array of update counts.
- *
+ *
* @since 1.1
*/
public int[] performNonSelectingQuery(String queryName, Map<String, ?> parameters) {
@@ -1030,7 +1057,7 @@ public class DataContext extends BaseCon
* Returns a list of objects or DataRows for a named query stored in one of the
* DataMaps. Internally Cayenne uses a caching policy defined in the named query. If
* refresh flag is true, a refresh is forced no matter what the caching policy is.
- *
+ *
* @param queryName a name of a GenericSelectQuery defined in one of the DataMaps. If
* no such query is defined, this method will throw a
* CayenneRuntimeException.
@@ -1046,7 +1073,7 @@ public class DataContext extends BaseCon
* Returns a list of objects or DataRows for a named query stored in one of the
* DataMaps. Internally Cayenne uses a caching policy defined in the named query. If
* refresh flag is true, a refresh is forced no matter what the caching policy is.
- *
+ *
* @param queryName a name of a GenericSelectQuery defined in one of the DataMaps. If
* no such query is defined, this method will throw a
* CayenneRuntimeException.
@@ -1077,13 +1104,13 @@ public class DataContext extends BaseCon
/**
* Returns <code>true</code> if the ObjectStore uses shared cache of a parent
* DataDomain.
- *
+ *
* @since 1.1
*/
public boolean isUsingSharedSnapshotCache() {
return usingSharedSnaphsotCache;
}
-
+
/**
* @since 3.1
*/
@@ -1094,7 +1121,7 @@ public class DataContext extends BaseCon
/**
* Returns whether this DataContext performs object validation before commit is
* executed.
- *
+ *
* @since 1.1
*/
public boolean isValidatingObjectsOnCommit() {
@@ -1104,7 +1131,7 @@ public class DataContext extends BaseCon
/**
* Sets the property defining whether this DataContext should perform object
* validation before commit is executed.
- *
+ *
* @since 1.1
*/
public void setValidatingObjectsOnCommit(boolean flag) {
@@ -1166,7 +1193,7 @@ public class DataContext extends BaseCon
/**
* Returns this context's ObjectStore.
- *
+ *
* @since 1.2
*/
@Override
@@ -1182,7 +1209,7 @@ public class DataContext extends BaseCon
* In case you pass a non-null second parameter, you are responsible for setting
* correct persistence state of the returned local object, as generally there is no
* way for Cayenne to determine the resulting local object state.
- *
+ *
* @since 1.2
*/
@Override
@@ -1260,6 +1287,7 @@ public class DataContext extends BaseCon
}
}
+ @Override
protected void fireDataChannelChanged(Object postedBy, GraphDiff changes) {
super.fireDataChannelChanged(postedBy, changes);
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextExtrasTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextExtrasTest.java?rev=1029662&r1=1029661&r2=1029662&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextExtrasTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextExtrasTest.java Mon Nov 1 13:57:56 2010
@@ -130,7 +130,7 @@ public class DataContextExtrasTest exten
DataContext context = createDataContext();
DataRow row = new DataRow(10);
row.put("ARTIST_ID", new Integer(100000));
- DataObject obj = context.objectFromDataRow(Artist.class, row, false);
+ DataObject obj = context.objectFromDataRow(Artist.class, row);
assertNotNull(obj);
assertTrue(context.getGraphManager().registeredNodes().contains(obj));
assertEquals(PersistenceState.HOLLOW, obj.getPersistenceState());
@@ -143,7 +143,7 @@ public class DataContextExtrasTest exten
DataRow row = new DataRow(10);
row.put("ARTIST_ID", new Integer(100001));
row.put("ARTIST_NAME", "ArtistXYZ");
- DataObject obj = context.objectFromDataRow(Artist.class, row, false);
+ DataObject obj = context.objectFromDataRow(Artist.class, row);
assertNotNull(obj);
assertTrue(context.getGraphManager().registeredNodes().contains(obj));
assertEquals(PersistenceState.HOLLOW, obj.getPersistenceState());
@@ -156,7 +156,7 @@ public class DataContextExtrasTest exten
row.put("ARTIST_ID", new Integer(123456));
row.put("ARTIST_NAME", "ArtistXYZ");
row.put("DATE_OF_BIRTH", new Date());
- Artist obj = context.objectFromDataRow(Artist.class, row, false);
+ Artist obj = context.objectFromDataRow(Artist.class, row);
assertTrue(context.getGraphManager().registeredNodes().contains(obj));
assertEquals(PersistenceState.COMMITTED, obj.getPersistenceState());
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java?rev=1029662&r1=1029661&r2=1029662&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingTest.java Mon Nov 1 13:57:56 2010
@@ -35,7 +35,7 @@ import org.apache.cayenne.unit.CayenneCa
/**
* Tests objects registration in DataContext, transferring objects between contexts and
* such.
- *
+ *
*/
public class DataContextObjectTrackingTest extends CayenneCase {
@@ -47,7 +47,7 @@ public class DataContextObjectTrackingTe
row.put("ARTIST_ID", new Integer(1));
row.put("ARTIST_NAME", "ArtistXYZ");
row.put("DATE_OF_BIRTH", new Date());
- DataObject obj = context.objectFromDataRow(Artist.class, row, false);
+ DataObject obj = context.objectFromDataRow(Artist.class, row);
ObjectId oid = obj.getObjectId();
assertEquals(PersistenceState.COMMITTED, obj.getPersistenceState());
@@ -70,7 +70,7 @@ public class DataContextObjectTrackingTe
row.put("ARTIST_ID", new Integer(1));
row.put("ARTIST_NAME", "ArtistXYZ");
row.put("DATE_OF_BIRTH", new Date());
- DataObject obj = context.objectFromDataRow(Artist.class, row, false);
+ DataObject obj = context.objectFromDataRow(Artist.class, row);
ObjectId oid = obj.getObjectId();
assertEquals(PersistenceState.COMMITTED, obj.getPersistenceState());
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java?rev=1029662&r1=1029661&r2=1029662&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java Mon Nov 1 13:57:56 2010
@@ -22,7 +22,6 @@ package org.apache.cayenne.access;
import java.math.BigDecimal;
import java.sql.Types;
import java.util.Collections;
-import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -150,10 +149,7 @@ public class DataContextProcedureQueryTe
assertNotNull("Null result from StoredProcedure.", artists);
assertEquals(1, artists.size());
DataRow artistRow = (DataRow) artists.get(0);
- Artist a = ctxt.objectFromDataRow(
- Artist.class,
- uppercaseConverter(artistRow),
- false);
+ Artist a = ctxt.objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
Painting p = a.getPaintingArray().get(0);
// invalidate painting, it may have been updated in the proc
@@ -179,10 +175,7 @@ public class DataContextProcedureQueryTe
assertNotNull("Null result from StoredProcedure.", artists);
assertEquals(1, artists.size());
DataRow artistRow = (DataRow) artists.get(0);
- Artist a = ctxt.objectFromDataRow(
- Artist.class,
- uppercaseConverter(artistRow),
- false);
+ Artist a = ctxt.objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
Painting p = a.getPaintingArray().get(0);
// invalidate painting, it may have been updated in the proc
@@ -210,10 +203,7 @@ public class DataContextProcedureQueryTe
assertNotNull("Null result from StoredProcedure.", artists);
assertEquals(1, artists.size());
DataRow artistRow = (DataRow) artists.get(0);
- Artist a = ctxt.objectFromDataRow(
- Artist.class,
- uppercaseConverter(artistRow),
- false);
+ Artist a = ctxt.objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
Painting p = a.getPaintingArray().get(0);
// invalidate painting, it may have been updated in the proc
@@ -239,7 +229,7 @@ public class DataContextProcedureQueryTe
assertEquals(2, artists.size());
}
-
+
public void testFetchOffset() throws Exception {
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
@@ -263,27 +253,27 @@ public class DataContextProcedureQueryTe
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
}
-
+
// create an artist with painting in the database
createArtist(1000.0);
ProcedureQuery q = new ProcedureQuery(SELECT_STORED_PROCEDURE);
-
+
q.setColumnNamesCapitalization(CapsStrategy.LOWER);
q.addParameter("aName", "An Artist");
List<DataRow> artists = runProcedureSelect(q);
-
+
ProcedureQuery q1 = new ProcedureQuery(SELECT_STORED_PROCEDURE);
-
+
q1.setColumnNamesCapitalization(CapsStrategy.UPPER);
q1.addParameter("aName", "An Artist");
List<DataRow> artists1 = runProcedureSelect(q1);
-
+
assertTrue(artists.get(0).containsKey("date_of_birth"));
assertFalse(artists.get(0).containsKey("DATE_OF_BIRTH"));
-
+
assertFalse(artists1.get(0).containsKey("date_of_birth"));
assertTrue(artists1.get(0).containsKey("DATE_OF_BIRTH"));
-
+
}
public void testOutParams() throws Exception {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java?rev=1029662&r1=1029661&r2=1029662&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java Mon Nov 1 13:57:56 2010
@@ -405,9 +405,9 @@ public class DataContextTest extends Ser
}
public void testPerformNonSelectingQueryCounts2() throws Exception {
-
+
createArtistsDataSet();
-
+
SQLTemplate query = new SQLTemplate(
Painting.class,
"INSERT INTO PAINTING (PAINTING_ID, PAINTING_TITLE, ARTIST_ID, ESTIMATED_PRICE) "
@@ -612,7 +612,7 @@ public class DataContextTest extends Ser
DataRow row = (DataRow) it.nextRow();
// try instantiating an object and fetching its relationships
- Artist artist = context.objectFromDataRow(Artist.class, row, false);
+ Artist artist = context.objectFromDataRow(Artist.class, row);
List<?> paintings = artist.getPaintingArray();
assertNotNull(paintings);
assertEquals("Expected one painting for artist: " + artist, 1, paintings
@@ -665,7 +665,7 @@ public class DataContextTest extends Ser
row.put("ARTIST_ID", new Integer(1));
row.put("ARTIST_NAME", "ArtistXYZ");
row.put("DATE_OF_BIRTH", new Date());
- DataObject object = context.objectFromDataRow(Artist.class, row, false);
+ DataObject object = context.objectFromDataRow(Artist.class, row);
ObjectId oid = object.getObjectId();
// insert object into the ObjectStore
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ObjectStoreTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ObjectStoreTest.java?rev=1029662&r1=1029661&r2=1029662&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ObjectStoreTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ObjectStoreTest.java Mon Nov 1 13:57:56 2010
@@ -65,7 +65,7 @@ public class ObjectStoreTest extends Cay
row.put("ARTIST_ID", new Integer(1));
row.put("ARTIST_NAME", "ArtistXYZ");
row.put("DATE_OF_BIRTH", new Date());
- DataObject object = context.objectFromDataRow(Artist.class, row, false);
+ DataObject object = context.objectFromDataRow(Artist.class, row);
ObjectId oid = object.getObjectId();
// insert object into the ObjectStore
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java?rev=1029662&r1=1029661&r2=1029662&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java Mon Nov 1 13:57:56 2010
@@ -108,10 +108,7 @@ public class EJBQLQueryTest extends Caye
assertTrue(row instanceof DataRow);
- Artist artist = (Artist) createDataContext().objectFromDataRow(
- "Artist",
- (DataRow) row,
- true);
+ Artist artist = (Artist) createDataContext().objectFromDataRow("Artist", (DataRow) row);
assertEquals(artistName, artist.getArtistName());
}
@@ -196,8 +193,8 @@ public class EJBQLQueryTest extends Caye
insertPaintValue();
DataContext contex = createDataContext();
-
- String ejbql = "SELECT p.toArtist FROM Painting p";
+
+ String ejbql = "SELECT p.toArtist FROM Painting p";
EJBQLQuery query = new EJBQLQuery(ejbql);
List result = contex.performQuery(query);
@@ -207,8 +204,8 @@ public class EJBQLQueryTest extends Caye
assertEquals(Artist.class, result.get(0).getClass());
-
- String ejbql2 = "SELECT p.toArtist, p FROM Painting p";
+
+ String ejbql2 = "SELECT p.toArtist, p FROM Painting p";
EJBQLQuery query2 = new EJBQLQuery(ejbql2);
List result2 = contex.performQuery(query2);
@@ -216,11 +213,11 @@ public class EJBQLQueryTest extends Caye
assertNotNull(result2);
assertEquals(2, result2.size());
assertEquals(2, ((Object[])result2.get(0)).length);
-
+
assertEquals(Artist.class,((Object[])result2.get(0))[0].getClass());
assertEquals(Painting.class,((Object[])result2.get(0))[1].getClass());
-
- String ejbql3 = "SELECT p.toArtist, p.paintingTitle FROM Painting p";
+
+ String ejbql3 = "SELECT p.toArtist, p.paintingTitle FROM Painting p";
EJBQLQuery query3 = new EJBQLQuery(ejbql3);
List result3 = contex.performQuery(query3);
@@ -228,7 +225,7 @@ public class EJBQLQueryTest extends Caye
assertNotNull(result3);
assertEquals(2, result3.size());
assertEquals(2, ((Object[])result3.get(0)).length);
-
+
assertEquals(Artist.class,((Object[])result3.get(0))[0].getClass());
assertEquals(String.class,((Object[])result3.get(0))[1].getClass());
}
@@ -265,45 +262,45 @@ public class EJBQLQueryTest extends Caye
assertEquals(w.getBuffer().toString(), s.toString());
}
-
+
public void testNullParameter() {
EJBQLQuery query = new EJBQLQuery("select p from Painting p WHERE p.toArtist=:x");
query.setParameter("x", null);
createDataContext().performQuery(query);
}
-
+
public void testNullNotEqualsParameter() {
EJBQLQuery query = new EJBQLQuery("select p from Painting p WHERE p.toArtist<>:x");
query.setParameter("x", null);
createDataContext().performQuery(query);
}
-
+
public void testNullPositionalParameter() {
EJBQLQuery query = new EJBQLQuery("select p from Painting p WHERE p.toArtist=?1");
query.setParameter(1, null);
createDataContext().performQuery(query);
}
-
+
public void testNullAndNotNullParameter() {
EJBQLQuery query = new EJBQLQuery("select p from Painting p WHERE p.toArtist=:x OR p.toArtist.artistName=:b");
query.setParameter("x", null);
query.setParameter("b", "Y");
createDataContext().performQuery(query);
}
-
+
public void testJoinToJoined() {
ObjectContext context = createDataContext();
-
+
EJBQLQuery query = new EJBQLQuery(
"select g from Gallery g inner join g.paintingArray p where p.toArtist.artistName like '%a%'");
context.performQuery(query);
}
-
-
-
+
+
+
public void testJoinAndCount() {
ObjectContext context = createDataContext();
-
+
EJBQLQuery query = new EJBQLQuery(
"select count(p) from Painting p where p.toGallery.galleryName LIKE '%a%' AND (" +
"p.paintingTitle like '%a%' or " +
@@ -311,7 +308,7 @@ public class EJBQLQueryTest extends Caye
")");
context.performQuery(query);
}
-
+
// SELECT COUNT(p) from Product p where p.vsCatalog.id = 1 and
// (
// p.displayName like '%rimadyl%'
@@ -321,65 +318,65 @@ public class EJBQLQueryTest extends Caye
// or p.longdescription2 like '%rimadyl%'
// or p.manufacturerPartNumber like '%rimadyl%'
// or p.partNumber like '%rimadyl%'
-// )
-
+// )
+
public void testRelationshipWhereClause() throws Exception {
deleteTestData();
ObjectContext context = createDataContext();
-
+
Artist a = context.newObject(Artist.class);
a.setArtistName("a");
Painting p = context.newObject(Painting.class);
p.setPaintingTitle("p");
p.setToArtist(a);
context.commitChanges();
-
+
EJBQLQuery query = new EJBQLQuery(
"select p from Painting p where p.toArtist=:a");
query.setParameter("a", a);
-
+
List<Painting> paintings = context.performQuery(query);
assertEquals(1, paintings.size());
assertSame(p, paintings.get(0));
}
-
+
public void testRelationshipWhereClause2() throws Exception {
ObjectContext context = createDataContext();
-
+
Expression exp = ExpressionFactory.matchExp(Painting.TO_GALLERY_PROPERTY, null);
EJBQLQuery query = new EJBQLQuery("select p.toArtist from Painting p where " + exp.toEJBQL("p"));
-
+
context.performQuery(query);
}
-
+
public void testOrBrackets() throws Exception {
deleteTestData();
ObjectContext context = createDataContext();
-
+
Artist a = context.newObject(Artist.class);
a.setArtistName("testOrBrackets");
context.commitChanges();
-
+
//this query is equivalent to (false and (false or true)) and
//should always return 0 rows
EJBQLQuery query = new EJBQLQuery("select a from Artist a " +
"where a.artistName <> a.artistName and " +
"(a.artistName <> a.artistName or a.artistName = a.artistName)");
assertEquals(context.performQuery(query).size(), 0);
-
+
//on the other hand, the following is equivalent to (false and false) or true) and
//should return >0 rows
query = new EJBQLQuery("select a from Artist a " +
"where a.artistName <> a.artistName and " +
"a.artistName <> a.artistName or a.artistName = a.artistName");
assertTrue(context.performQuery(query).size() > 0);
-
+
//checking brackets around not
query = new EJBQLQuery("select a from Artist a " +
"where not(a.artistName <> a.artistName and " +
"a.artistName <> a.artistName or a.artistName = a.artistName)");
assertEquals(context.performQuery(query).size(), 0);
-
+
//not is first to process
query = new EJBQLQuery("select a from Artist a " +
"where not a.artistName <> a.artistName or " +