DATAGRAPH-176 Added debug log output for cypher and gremlin query as well as derived query methods
This commit is contained in:
@@ -17,6 +17,8 @@ package org.springframework.data.neo4j.rest;
|
||||
|
||||
|
||||
import org.neo4j.rest.graphdb.query.RestCypherQueryEngine;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.neo4j.support.query.QueryEngine;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -24,7 +26,9 @@ import java.util.Map;
|
||||
|
||||
public class SpringRestCypherQueryEngine implements QueryEngine<Map<String,Object>> {
|
||||
|
||||
org.neo4j.rest.graphdb.query.RestCypherQueryEngine restCypherQueryEngine;
|
||||
public static final Logger log = LoggerFactory.getLogger(SpringRestCypherQueryEngine.class);
|
||||
|
||||
private final RestCypherQueryEngine restCypherQueryEngine;
|
||||
|
||||
public SpringRestCypherQueryEngine(RestCypherQueryEngine restCypherQueryEngine) {
|
||||
this.restCypherQueryEngine = restCypherQueryEngine;
|
||||
@@ -32,6 +36,8 @@ public class SpringRestCypherQueryEngine implements QueryEngine<Map<String,Objec
|
||||
|
||||
@Override
|
||||
public SpringRestResult<Map<String,Object>> query(String statement, Map<String, Object> params) {
|
||||
if (log.isDebugEnabled()) log.debug(String.format("Executing remote cypher query: %s params %s",statement,params));
|
||||
|
||||
return new SpringRestResult<Map<String, Object>>(restCypherQueryEngine.query(statement, params));
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ package org.springframework.data.neo4j.rest;
|
||||
|
||||
|
||||
import org.neo4j.rest.graphdb.query.RestGremlinQueryEngine;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.neo4j.support.query.QueryEngine;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -24,7 +26,9 @@ import java.util.Map;
|
||||
|
||||
public class SpringRestGremlinQueryEngine implements QueryEngine<Object> {
|
||||
|
||||
RestGremlinQueryEngine restGremlinQueryEngine;
|
||||
public static final Logger log = LoggerFactory.getLogger(SpringRestGremlinQueryEngine.class);
|
||||
|
||||
private final RestGremlinQueryEngine restGremlinQueryEngine;
|
||||
|
||||
public SpringRestGremlinQueryEngine(RestGremlinQueryEngine restGremlinQueryEngine) {
|
||||
this.restGremlinQueryEngine = restGremlinQueryEngine;
|
||||
@@ -32,6 +36,8 @@ public class SpringRestGremlinQueryEngine implements QueryEngine<Object> {
|
||||
|
||||
@Override
|
||||
public SpringRestResult<Object> query(String statement, Map<String, Object> params) {
|
||||
if (log.isDebugEnabled()) log.debug(String.format("Executing remote gremlin query: %s params %s",statement,params));
|
||||
|
||||
return new SpringRestResult<Object>(restGremlinQueryEngine.query(statement, params));
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package org.springframework.data.neo4j.repository.query;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.mapping.context.MappingContext;
|
||||
@@ -33,6 +35,7 @@ import org.springframework.util.Assert;
|
||||
*/
|
||||
public class DerivedCypherRepositoryQuery extends CypherGraphRepositoryQuery {
|
||||
|
||||
public static final Logger log = LoggerFactory.getLogger(DerivedCypherRepositoryQuery.class);
|
||||
private final CypherQueryDefinition query;
|
||||
|
||||
/**
|
||||
@@ -51,6 +54,7 @@ public class DerivedCypherRepositoryQuery extends CypherGraphRepositoryQuery {
|
||||
PartTree tree = new PartTree(queryMethod.getName(), info.getJavaType());
|
||||
|
||||
this.query = new CypherQueryCreator(tree, mappingContext, info.getJavaType()).createQuery();
|
||||
if (log.isDebugEnabled()) log.debug("Derived query: "+query+ "from method "+queryMethod);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -143,4 +143,9 @@ public class GraphQueryMethod extends QueryMethod {
|
||||
public boolean isCollectionResult() {
|
||||
return hasResultOfType(Collection.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Repository-Graph-Query-Method for "+method;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,15 +16,15 @@
|
||||
|
||||
package org.springframework.data.neo4j.support.query;
|
||||
|
||||
import org.neo4j.cypher.commands.Query;
|
||||
import org.neo4j.cypher.javacompat.CypherParser;
|
||||
import org.neo4j.cypher.javacompat.ExecutionEngine;
|
||||
import org.neo4j.cypher.javacompat.ExecutionResult;
|
||||
import org.neo4j.graphdb.GraphDatabaseService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.dao.InvalidDataAccessResourceUsageException;
|
||||
import org.springframework.data.neo4j.conversion.DefaultConverter;
|
||||
import org.springframework.data.neo4j.conversion.Result;
|
||||
import org.springframework.data.neo4j.conversion.QueryResultBuilder;
|
||||
import org.springframework.data.neo4j.conversion.Result;
|
||||
import org.springframework.data.neo4j.conversion.ResultConverter;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -32,6 +32,7 @@ import java.util.Map;
|
||||
|
||||
public class CypherQueryEngine implements QueryEngine<Map<String,Object>> {
|
||||
|
||||
private final static Logger log = LoggerFactory.getLogger(CypherQueryEngine.class);
|
||||
final ExecutionEngine executionEngine;
|
||||
private ResultConverter resultConverter;
|
||||
|
||||
@@ -58,11 +59,16 @@ public class CypherQueryEngine implements QueryEngine<Map<String,Object>> {
|
||||
|
||||
private ExecutionResult parseAndExecuteQuery(String statement, Map<String, Object> params) {
|
||||
try {
|
||||
CypherParser parser = new CypherParser();
|
||||
Query query = parser.parse(statement);
|
||||
return executionEngine.execute(query,params==null ? Collections.<String,Object>emptyMap() : params);
|
||||
final Map<String, Object> queryParams = queryParams(params);
|
||||
if (log.isDebugEnabled()) log.debug(String.format("Executing cypher query: %s params %s",statement,queryParams));
|
||||
|
||||
return executionEngine.execute(statement, queryParams);
|
||||
} catch(Exception e) {
|
||||
throw new InvalidDataAccessResourceUsageException("Error executing statement " + statement, e);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Object> queryParams(Map<String, Object> params) {
|
||||
return params == null ? Collections.<String, Object>emptyMap() : params;
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,8 @@ import com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex;
|
||||
import com.tinkerpop.pipes.util.Table;
|
||||
import org.neo4j.graphdb.GraphDatabaseService;
|
||||
import org.neo4j.helpers.collection.IterableWrapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.script.*;
|
||||
import java.util.Collections;
|
||||
@@ -33,6 +35,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public class GremlinExecutor {
|
||||
|
||||
public static final Logger log = LoggerFactory.getLogger(GremlinExecutor.class);
|
||||
public static final int REFRESH_ENGINE_COUNT = 10000;
|
||||
private static final String GRAPH_VARIABLE = "g";
|
||||
private volatile ScriptEngine engine;
|
||||
@@ -51,6 +54,8 @@ public class GremlinExecutor {
|
||||
@SuppressWarnings("unchecked")
|
||||
public Iterable<Object> query(String statement, Map<String,Object> params) {
|
||||
try {
|
||||
if (log.isDebugEnabled()) log.debug(String.format("Executing gremlin query: %s params %s",statement,params));
|
||||
|
||||
final Bindings bindings = createBindings(params);
|
||||
final ScriptEngine engine = engine();
|
||||
final Object result = engine.eval(statement, bindings);
|
||||
|
||||
Reference in New Issue
Block a user