upgrade the version of neo4j (#1691)

This commit is contained in:
Jyoti Wadhwani 2020-06-04 22:14:57 -07:00 committed by GitHub
parent 867dbd0d36
commit 90e449d25e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 41 additions and 40 deletions

View File

@ -56,7 +56,7 @@ project.ext.externalDependency = [
'mockito': 'org.mockito:mockito-core:3.0.0', 'mockito': 'org.mockito:mockito-core:3.0.0',
'mysqlConnector': 'mysql:mysql-connector-java:5.1.47', 'mysqlConnector': 'mysql:mysql-connector-java:5.1.47',
"neo4jHarness": "org.neo4j.test:neo4j-harness:3.4.11", "neo4jHarness": "org.neo4j.test:neo4j-harness:3.4.11",
"neo4jJavaDriver": "org.neo4j.driver:neo4j-java-driver:1.7.2", "neo4jJavaDriver": "org.neo4j.driver:neo4j-java-driver:4.0.0",
'parseqTest': 'com.linkedin.parseq:parseq:3.0.7:test', 'parseqTest': 'com.linkedin.parseq:parseq:3.0.7:test',
'playDocs': 'com.typesafe.play:play-docs_2.11:2.6.18', 'playDocs': 'com.typesafe.play:play-docs_2.11:2.6.18',
'playGuice': 'com.typesafe.play:play-guice_2.11:2.6.18', 'playGuice': 'com.typesafe.play:play-guice_2.11:2.6.18',

View File

@ -1,8 +1,8 @@
package com.linkedin.common.factory; package com.linkedin.common.factory;
import org.neo4j.driver.v1.AuthTokens; import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.v1.Driver; import org.neo4j.driver.Driver;
import org.neo4j.driver.v1.GraphDatabase; import org.neo4j.driver.GraphDatabase;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;

View File

@ -1,7 +1,7 @@
package com.linkedin.dataset.factory; package com.linkedin.dataset.factory;
import com.linkedin.metadata.dao.Neo4jQueryDAO; import com.linkedin.metadata.dao.Neo4jQueryDAO;
import org.neo4j.driver.v1.Driver; import org.neo4j.driver.Driver;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;

View File

@ -11,14 +11,14 @@ import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.javatuples.Triplet; import org.javatuples.Triplet;
import org.neo4j.driver.v1.Driver; import org.neo4j.driver.Driver;
import org.neo4j.driver.v1.Record; import org.neo4j.driver.Record;
import org.neo4j.driver.v1.Session; import org.neo4j.driver.Session;
import org.neo4j.driver.v1.StatementResult; import org.neo4j.driver.Value;
import org.neo4j.driver.v1.Value;
import static com.linkedin.metadata.dao.Neo4jUtil.*; import static com.linkedin.metadata.dao.Neo4jUtil.*;
@ -49,13 +49,13 @@ public class Neo4jQueryDAO extends BaseQueryDAO {
@Nonnull Statement queryStatement) { @Nonnull Statement queryStatement) {
EntityValidator.validateEntitySchema(entityClass); EntityValidator.validateEntitySchema(entityClass);
return runQuery(queryStatement).list(record -> nodeRecordToEntity(entityClass, record)); return runQuery(queryStatement, record -> nodeRecordToEntity(entityClass, record));
} }
@Nonnull @Nonnull
@Override @Override
public List<RecordTemplate> findMixedTypesEntities(@Nonnull Statement queryStatement) { public List<RecordTemplate> findMixedTypesEntities(@Nonnull Statement queryStatement) {
return runQuery(queryStatement).list(this::nodeRecordToEntity); return runQuery(queryStatement, this::nodeRecordToEntity);
} }
@Nonnull @Nonnull
@ -96,7 +96,7 @@ public class Neo4jQueryDAO extends BaseQueryDAO {
final Statement statement = buildStatement(statementString, offset, count); final Statement statement = buildStatement(statementString, offset, count);
return runQuery(statement).list(this::nodeRecordToEntity); return runQuery(statement, this::nodeRecordToEntity);
} }
@Nonnull @Nonnull
@ -145,7 +145,7 @@ public class Neo4jQueryDAO extends BaseQueryDAO {
final String statementString = String.format(matchTemplate.toString(), srcType, srcCriteria); final String statementString = String.format(matchTemplate.toString(), srcType, srcCriteria);
final Statement statement = buildStatement(statementString, offset, count); final Statement statement = buildStatement(statementString, offset, count);
return runQuery(statement).list(this::nodeRecordToEntity); return runQuery(statement, this::nodeRecordToEntity);
} }
@Nonnull @Nonnull
@ -163,8 +163,7 @@ public class Neo4jQueryDAO extends BaseQueryDAO {
RelationshipValidator.validateRelationshipSchema(relationshipType); RelationshipValidator.validateRelationshipSchema(relationshipType);
return runQuery(findEdges(sourceEntityClass, sourceEntityFilter, destinationEntityClass, destinationEnityFilter, return runQuery(findEdges(sourceEntityClass, sourceEntityFilter, destinationEntityClass, destinationEnityFilter,
relationshipType, relationshipFilter, offset, count)).list( relationshipType, relationshipFilter, offset, count), record -> edgeRecordToRelationship(relationshipType, record));
record -> edgeRecordToRelationship(relationshipType, record));
} }
@Nonnull @Nonnull
@ -173,24 +172,26 @@ public class Neo4jQueryDAO extends BaseQueryDAO {
@Nonnull Class<RELATIONSHIP> relationshipClass, @Nonnull Statement queryStatement) { @Nonnull Class<RELATIONSHIP> relationshipClass, @Nonnull Statement queryStatement) {
RelationshipValidator.validateRelationshipSchema(relationshipClass); RelationshipValidator.validateRelationshipSchema(relationshipClass);
return runQuery(queryStatement).list(record -> edgeRecordToRelationship(relationshipClass, record)); return runQuery(queryStatement, record -> edgeRecordToRelationship(relationshipClass, record));
} }
@Nonnull @Nonnull
@Override @Override
public List<RecordTemplate> findMixedTypesRelationships(@Nonnull Statement queryStatement) { public List<RecordTemplate> findMixedTypesRelationships(@Nonnull Statement queryStatement) {
return runQuery(queryStatement).list(this::edgeRecordToRelationship); return runQuery(queryStatement, this::edgeRecordToRelationship);
} }
/** /**
* Runs a query statement with parameters and return StatementResult * Runs a query statement with parameters and return StatementResult
* *
* @param statement a statement with parameters to be executed * @param statement a statement with parameters to be executed
* @param mapperFunction lambda to transform query result
* @return List<T> list of elements in the query result
*/ */
@Nonnull @Nonnull
private StatementResult runQuery(@Nonnull Statement statement) { private <T> List<T> runQuery(@Nonnull Statement statement, @Nonnull Function<Record, T> mapperFunction) {
try (final Session session = _driver.session()) { try (final Session session = _driver.session()) {
return session.run(statement.getCommandText(), statement.getParams()); return session.run(statement.getCommandText(), statement.getParams()).list(mapperFunction);
} }
} }

View File

@ -24,8 +24,8 @@ import java.util.StringJoiner;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import org.apache.commons.lang3.ClassUtils; import org.apache.commons.lang3.ClassUtils;
import org.neo4j.driver.v1.types.Node; import org.neo4j.driver.types.Node;
import org.neo4j.driver.v1.types.Relationship; import org.neo4j.driver.types.Relationship;
public class Neo4jUtil { public class Neo4jUtil {

View File

@ -13,9 +13,9 @@ import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import org.neo4j.driver.v1.Driver; import org.neo4j.driver.Driver;
import org.neo4j.driver.v1.Session; import org.neo4j.driver.Record;
import org.neo4j.driver.v1.StatementResult; import org.neo4j.driver.Session;
import static com.linkedin.metadata.dao.Neo4jUtil.*; import static com.linkedin.metadata.dao.Neo4jUtil.*;
@ -79,9 +79,9 @@ public class Neo4jGraphWriterDAO extends BaseGraphWriterDAO {
* @param statement a statement with parameters to be executed * @param statement a statement with parameters to be executed
*/ */
@Nonnull @Nonnull
private StatementResult runQuery(@Nonnull Statement statement) throws Exception { private List<Record> runQuery(@Nonnull Statement statement) throws Exception {
try (final Session session = _driver.session()) { try (final Session session = _driver.session()) {
return session.run(statement.getCommandText(), statement.getParams()); return session.run(statement.getCommandText(), statement.getParams()).list();
} }
} }
@ -106,8 +106,8 @@ public class Neo4jGraphWriterDAO extends BaseGraphWriterDAO {
final Map<String, Object> params = new HashMap<>(); final Map<String, Object> params = new HashMap<>();
params.put("urn", urn.toString()); params.put("urn", urn.toString());
final StatementResult result = runQuery(buildStatement(statement, params)); final List<Record> result = runQuery(buildStatement(statement, params));
return result.list().stream().map(record -> record.values().get(0).asMap()).collect(Collectors.toList()); return result.stream().map(record -> record.values().get(0).asMap()).collect(Collectors.toList());
} }
// used in testing // used in testing
@ -129,8 +129,8 @@ public class Neo4jGraphWriterDAO extends BaseGraphWriterDAO {
params.put("sourceUrn", sourceUrn.toString()); params.put("sourceUrn", sourceUrn.toString());
params.put("destinationUrn", destinationUrn.toString()); params.put("destinationUrn", destinationUrn.toString());
final StatementResult result = runQuery(buildStatement(statement, params)); final List<Record> result = runQuery(buildStatement(statement, params));
return result.list().stream().map(record -> record.values().get(0).asMap()).collect(Collectors.toList()); return result.stream().map(record -> record.values().get(0).asMap()).collect(Collectors.toList());
} }
// used in testing // used in testing
@ -146,8 +146,8 @@ public class Neo4jGraphWriterDAO extends BaseGraphWriterDAO {
final Map<String, Object> params = new HashMap<>(); final Map<String, Object> params = new HashMap<>();
params.put("sourceUrn", sourceUrn.toString()); params.put("sourceUrn", sourceUrn.toString());
final StatementResult result = runQuery(buildStatement(statement, params)); final List<Record> result = runQuery(buildStatement(statement, params));
return result.list().stream().map(record -> record.values().get(0).asMap()).collect(Collectors.toList()); return result.stream().map(record -> record.values().get(0).asMap()).collect(Collectors.toList());
} }
@Nonnull @Nonnull

View File

@ -22,8 +22,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.javatuples.Triplet; import org.javatuples.Triplet;
import org.neo4j.driver.v1.Driver; import org.neo4j.driver.Driver;
import org.neo4j.driver.v1.GraphDatabase; import org.neo4j.driver.GraphDatabase;
import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;

View File

@ -12,7 +12,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import org.neo4j.driver.v1.GraphDatabase; import org.neo4j.driver.GraphDatabase;
import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;

View File

@ -1,6 +1,6 @@
package com.linkedin.metadata.kafka.config; package com.linkedin.metadata.kafka.config;
import org.neo4j.driver.v1.Driver; import org.neo4j.driver.Driver;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;

View File

@ -1,9 +1,9 @@
package com.linkedin.metadata.neo4j; package com.linkedin.metadata.neo4j;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import org.neo4j.driver.v1.AuthTokens; import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.v1.Driver; import org.neo4j.driver.Driver;
import org.neo4j.driver.v1.GraphDatabase; import org.neo4j.driver.GraphDatabase;
public class Neo4jDriverFactory { public class Neo4jDriverFactory {