use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class DataContextQueryCachingIT method testLocalCacheRefreshObjectsRefresh.
@Test
public void testLocalCacheRefreshObjectsRefresh() throws Exception {
createInsertDataSet();
SelectQuery<Artist> select = new SelectQuery<>(Artist.class);
select.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE_REFRESH);
// no cache yet...
List<Artist> objects1 = context.performQuery(select);
assertEquals(1, objects1.size());
Artist a1 = objects1.get(0);
assertEquals("aaa", a1.getArtistName());
// cache, but force refresh
createUpdateDataSet1();
List<?> objects2 = context.performQuery(select);
assertEquals(1, objects2.size());
Artist a2 = (Artist) objects2.get(0);
assertSame(a1, a2);
assertEquals("bbb", a2.getArtistName());
}
use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class DataContextRefreshQueryIT method testRefreshCollection.
@Test
public void testRefreshCollection() throws Exception {
createRefreshCollectionDataSet();
SelectQuery<Artist> q = new SelectQuery<>(Artist.class);
q.addOrdering("db:ARTIST_ID", SortOrder.ASCENDING);
List<?> artists = context.performQuery(q);
Artist a1 = (Artist) artists.get(0);
Artist a2 = (Artist) artists.get(1);
assertEquals(2, a1.getPaintingArray().size());
assertEquals(0, a2.getPaintingArray().size());
assertNotNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(a1.getObjectId()));
assertNotNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(a2.getObjectId()));
RefreshQuery refresh = new RefreshQuery(artists);
context.performQuery(refresh);
assertNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(a1.getObjectId()));
assertNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(a2.getObjectId()));
assertEquals(PersistenceState.HOLLOW, a1.getPersistenceState());
assertEquals(PersistenceState.HOLLOW, a2.getPersistenceState());
assertTrue(((ValueHolder) a1.readProperty(Artist.PAINTING_ARRAY.getName())).isFault());
assertTrue(((ValueHolder) a2.readProperty(Artist.PAINTING_ARRAY.getName())).isFault());
}
use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class DataContextRefreshQueryIT method testRefreshQueryResultsLocalCache.
@Test
public void testRefreshQueryResultsLocalCache() throws Exception {
createRefreshCollectionDataSet();
Expression qual = Painting.PAINTING_TITLE.eq("P2");
SelectQuery<Painting> q = new SelectQuery<>(Painting.class, qual);
q.addOrdering("db:PAINTING_ID", SortOrder.ASCENDING);
q.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
q.setCacheGroup("X");
List<?> paints = context.performQuery(q);
// fetch P1 separately from cached query
Painting p1 = Cayenne.objectForPK(context, Painting.class, 33001);
Painting p2 = (Painting) paints.get(0);
Artist a1 = p2.getToArtist();
assertSame(a1, p1.getToArtist());
assertNotNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(p1.getObjectId()));
assertNotNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(p2.getObjectId()));
createRefreshCollectionToOneUpdateDataSet();
RefreshQuery refresh = new RefreshQuery(q);
context.performQuery(refresh);
assertNotNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(p1.getObjectId()));
// probably refreshed eagerly
assertNotNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(p2.getObjectId()));
assertEquals(PersistenceState.COMMITTED, p1.getPersistenceState());
assertEquals(PersistenceState.COMMITTED, p2.getPersistenceState());
assertSame(a1, p1.getToArtist());
assertNotSame(a1, p2.getToArtist());
assertEquals("c", p1.getToArtist().getArtistName());
assertEquals("b", p2.getToArtist().getArtistName());
}
use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class DataContextRefreshQueryIT method testRefreshQueryResultGroupLocal.
@Test
public void testRefreshQueryResultGroupLocal() throws Exception {
createRefreshCollectionDataSet();
Expression qual = Painting.PAINTING_TITLE.eq("P2");
SelectQuery<Painting> q = new SelectQuery<>(Painting.class, qual);
q.addOrdering("db:PAINTING_ID", SortOrder.ASCENDING);
q.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
q.setCacheGroup("X");
List<?> paints = context.performQuery(q);
// fetch P1 separately from cached query
Painting p1 = Cayenne.objectForPK(context, Painting.class, 33001);
Painting p2 = (Painting) paints.get(0);
Artist a1 = p2.getToArtist();
assertSame(a1, p1.getToArtist());
assertNotNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(p1.getObjectId()));
assertNotNull(context.getParentDataDomain().getSharedSnapshotCache().getCachedSnapshot(p2.getObjectId()));
createRefreshCollectionToOneUpdateDataSet();
// results are served from cache and therefore are not refreshed
context.performQuery(q);
assertSame(a1, p1.getToArtist());
assertSame(a1, p2.getToArtist());
assertEquals("c", p1.getToArtist().getArtistName());
assertEquals("c", p2.getToArtist().getArtistName());
RefreshQuery refresh = new RefreshQuery("X");
// this should invalidate results for the next query run
context.performQuery(refresh);
// this should force a refresh
context.performQuery(q);
assertEquals(PersistenceState.COMMITTED, p1.getPersistenceState());
assertEquals(PersistenceState.COMMITTED, p2.getPersistenceState());
assertSame(a1, p1.getToArtist());
assertNotSame(a1, p2.getToArtist());
assertEquals("c", p1.getToArtist().getArtistName());
assertEquals("b", p2.getToArtist().getArtistName());
}
use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class DataContextRefreshingIT method testRefetchRootWithAddedToMany.
@Test
public void testRefetchRootWithAddedToMany() throws Exception {
createSingleArtistDataSet();
Artist artist = (Artist) context.performQuery(new SelectQuery(Artist.class)).get(0);
assertEquals(artist.getPaintingArray().size(), 0);
tPainting.insert(5, "p", 5, 1000);
// select without prefetch
SelectQuery query = new SelectQuery(Artist.class);
artist = (Artist) context.performQuery(query).get(0);
assertEquals(artist.getPaintingArray().size(), 0);
// select using relationship prefetching
query.addPrefetch(Artist.PAINTING_ARRAY.disjoint());
artist = (Artist) context.performQuery(query).get(0);
assertEquals(artist.getPaintingArray().size(), 1);
}
Aggregations