use of org.apache.cayenne.query.Query in project cayenne by apache.
the class CayenneContextQueryAction method interceptRefreshQuery.
@Override
protected boolean interceptRefreshQuery() {
if (query instanceof RefreshQuery) {
RefreshQuery refreshQuery = (RefreshQuery) query;
CayenneContext context = (CayenneContext) actingContext;
// 1. refresh all
if (refreshQuery.isRefreshAll()) {
invalidateLocally(context.internalGraphManager(), context.internalGraphManager().registeredNodes().iterator());
context.getQueryCache().clear();
// cascade
return !DONE;
}
// 2. invalidate object collection
Collection<?> objects = refreshQuery.getObjects();
if (objects != null && !objects.isEmpty()) {
invalidateLocally(context.internalGraphManager(), objects.iterator());
// cascade
return !DONE;
}
// 3. refresh query - have to do it eagerly to refresh the objects involved
if (refreshQuery.getQuery() != null) {
Query cachedQuery = refreshQuery.getQuery();
String cacheKey = cachedQuery.getMetaData(context.getEntityResolver()).getCacheKey();
context.getQueryCache().remove(cacheKey);
this.response = context.performGenericQuery(cachedQuery);
// do not cascade to avoid running query twice
return DONE;
}
// 4. refresh groups...
if (refreshQuery.getGroupKeys() != null && refreshQuery.getGroupKeys().length > 0) {
String[] groups = refreshQuery.getGroupKeys();
for (String group : groups) {
context.getQueryCache().removeGroup(group);
}
// cascade group invalidation
return !DONE;
}
}
return !DONE;
}
use of org.apache.cayenne.query.Query in project cayenne by apache.
the class ClientServerChannelIT method testOnQuery.
@Test
public void testOnQuery() {
final boolean[] genericDone = new boolean[1];
MockDataChannel parent = new MockDataChannel(new EntityResolver()) {
@Override
public QueryResponse onQuery(ObjectContext context, Query query) {
genericDone[0] = true;
return super.onQuery(context, query);
}
};
DataContext context = (DataContext) runtime.newContext(parent);
QueryMessage message = new QueryMessage(new MockQuery());
new ClientServerChannel(context).onQuery(null, message.getQuery());
assertTrue(genericDone[0]);
}
use of org.apache.cayenne.query.Query in project cayenne by apache.
the class ClientServerChannelIT method testPerformQueryObjectIDInjection.
@Test
public void testPerformQueryObjectIDInjection() throws Exception {
tMtTable1.insert(55, "g1", "s1");
Query query = new SelectQuery("MtTable1");
QueryResponse response = clientServerChannel.onQuery(null, query);
assertNotNull(response);
List<?> results = response.firstList();
assertNotNull(results);
assertEquals(1, results.size());
Object result = results.get(0);
assertTrue(result instanceof ClientMtTable1);
ClientMtTable1 clientObject = (ClientMtTable1) result;
assertNotNull(clientObject.getObjectId());
assertEquals(new ObjectId("MtTable1", MtTable1.TABLE1_ID_PK_COLUMN, 55), clientObject.getObjectId());
}
use of org.apache.cayenne.query.Query in project cayenne by apache.
the class ClientServerChannelIT method testPerformQueryValuePropagation.
@Test
public void testPerformQueryValuePropagation() throws Exception {
byte[] bytes = new byte[] { 1, 2, 3 };
tMtTable3.insert(1, bytes, "abc", 4);
Query query = new SelectQuery("MtTable3");
QueryResponse response = clientServerChannel.onQuery(null, query);
assertNotNull(response);
List<?> results = response.firstList();
assertNotNull(results);
assertEquals(1, results.size());
Object result = results.get(0);
assertTrue("Result is of wrong type: " + result, result instanceof ClientMtTable3);
ClientMtTable3 clientObject = (ClientMtTable3) result;
assertEquals("abc", clientObject.getCharColumn());
assertEquals(new Integer(4), clientObject.getIntColumn());
assertTrue(new EqualsBuilder().append(clientObject.getBinaryColumn(), bytes).isEquals());
}
use of org.apache.cayenne.query.Query in project cayenne by apache.
the class SchemaUpdateStrategyIT method testNoStandardSchema.
@Test
public void testNoStandardSchema() throws Exception {
String template = "SELECT #result('ARTIST_ID' 'int') FROM ARTIST ORDER BY ARTIST_ID";
SQLTemplate query = new SQLTemplate(Object.class, template);
MockOperationObserver observer = new MockOperationObserver();
setStrategy(TstSchemaUpdateStrategy.class);
node.performQueries(Collections.singletonList((Query) query), observer);
assertTrue(node.getSchemaUpdateStrategy() instanceof TstSchemaUpdateStrategy);
}
Aggregations