Upgrade to neo4j-java-driver 2.0 alpha01.

This commit is contained in:
Michael Simons
2019-04-02 09:06:39 +02:00
parent f0b3172c85
commit 8048caaa05
13 changed files with 69 additions and 51 deletions

View File

@@ -98,7 +98,7 @@
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<mockito.version>2.23.4</mockito.version>
<neo4j-java-driver.version>1.7.2</neo4j-java-driver.version>
<neo4j-java-driver.version>2.0.0-alpha01</neo4j-java-driver.version>
<neo4j.version>3.5.2</neo4j.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<reactive-streams.version>1.2.1</reactive-streams.version>

View File

@@ -19,8 +19,8 @@
package org.springframework.data.neo4j.core;
import org.apiguardian.api.API;
import org.neo4j.driver.v1.StatementRunner;
import org.neo4j.driver.v1.Transaction;
import org.neo4j.driver.StatementRunner;
import org.neo4j.driver.Transaction;
import org.springframework.data.neo4j.core.context.DefaultPersistenceContext;
import org.springframework.data.neo4j.core.context.PersistenceContext;
import org.springframework.data.neo4j.core.schema.Schema;

View File

@@ -20,9 +20,9 @@ package org.springframework.data.neo4j.core;
import java.util.function.Supplier;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.StatementResult;
import org.neo4j.driver.v1.StatementRunner;
import org.neo4j.driver.Driver;
import org.neo4j.driver.StatementResult;
import org.neo4j.driver.StatementRunner;
import org.springframework.data.neo4j.core.transaction.Neo4jTransactionUtils;
/**

View File

@@ -19,7 +19,7 @@
package org.springframework.data.neo4j.core;
import org.apiguardian.api.API;
import org.neo4j.driver.v1.Transaction;
import org.neo4j.driver.Transaction;
import org.springframework.lang.Nullable;
/**

View File

@@ -18,6 +18,8 @@
*/
package org.springframework.data.neo4j.core;
import static org.springframework.data.neo4j.core.transaction.Neo4jTransactionUtils.*;
import lombok.extern.slf4j.Slf4j;
import java.util.Arrays;
@@ -29,9 +31,8 @@ import java.util.Set;
import java.util.function.Function;
import org.apiguardian.api.API;
import org.neo4j.driver.v1.AccessMode;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.StatementRunner;
import org.neo4j.driver.Driver;
import org.neo4j.driver.StatementRunner;
import org.springframework.data.neo4j.core.schema.Scanner;
import org.springframework.data.neo4j.core.schema.Schema;
import org.springframework.lang.Nullable;
@@ -63,7 +64,7 @@ public final class NodeManagerFactory {
private Schema schema;
private Function<Driver, StatementRunner> statementRunnerProvider = sourceDriver -> sourceDriver
.session(AccessMode.WRITE, Collections.emptyList()).beginTransaction();
.session(defaultSessionParameters(null)).beginTransaction();
/**
* Creates a new instance of a factory producing {@link NodeManager node managers}. When used in a transactional setup,

View File

@@ -18,14 +18,14 @@
*/
package org.springframework.data.neo4j.core.transaction;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.Transaction;
import org.neo4j.driver.v1.TransactionConfig;
import org.neo4j.driver.Session;
import org.neo4j.driver.Transaction;
import org.neo4j.driver.TransactionConfig;
import org.springframework.transaction.support.ResourceHolderSupport;
import org.springframework.util.Assert;
/**
* Neo4j specific {@link ResourceHolderSupport resource holder}, wrapping a {@link org.neo4j.driver.v1.Transaction}.
* Neo4j specific {@link ResourceHolderSupport resource holder}, wrapping a {@link org.neo4j.driver.Transaction}.
* {@link Neo4jTransactionManager} binds instances of this class to the thread.
* <p>
* <strong>Note:</strong> Intended for internal usage only.

View File

@@ -18,7 +18,7 @@
*/
package org.springframework.data.neo4j.core.transaction;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.Driver;
import org.springframework.transaction.support.ResourceHolderSynchronization;
import org.springframework.transaction.support.TransactionSynchronization;

View File

@@ -26,10 +26,10 @@ import java.util.List;
import java.util.Optional;
import org.apiguardian.api.API;
import org.neo4j.driver.v1.AccessMode;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.TransactionConfig;
import org.neo4j.driver.AccessMode;
import org.neo4j.driver.Driver;
import org.neo4j.driver.Session;
import org.neo4j.driver.TransactionConfig;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
@@ -106,11 +106,13 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager
boolean readOnly = definition.isReadOnly();
AccessMode accessMode = readOnly ? AccessMode.READ : AccessMode.WRITE;
List<String> bookmarks = Collections.emptyList(); // TODO Bookmarksupport
String database = ""; // TODO Database selection
TransactionSynchronizationManager.setCurrentTransactionReadOnly(readOnly);
try {
Session session = this.driver.session(accessMode, bookmarks);
Session session = this.driver
.session(t -> t.withDefaultAccessMode(accessMode).withBookmarks(bookmarks).withDatabase(database));
Neo4jConnectionHolder connectionHolder = new Neo4jConnectionHolder(session, transactionConfig);
connectionHolder.setSynchronizedWithTransaction(true);

View File

@@ -19,12 +19,16 @@
package org.springframework.data.neo4j.core.transaction;
import java.util.Collections;
import java.util.Optional;
import java.util.function.Consumer;
import org.neo4j.driver.v1.AccessMode;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.StatementRunner;
import org.neo4j.driver.AccessMode;
import org.neo4j.driver.Driver;
import org.neo4j.driver.SessionParametersTemplate;
import org.neo4j.driver.StatementRunner;
import org.springframework.data.neo4j.core.NodeManager;
import org.springframework.data.neo4j.core.NodeManagerFactory;
import org.springframework.lang.Nullable;
import org.springframework.transaction.support.TransactionSynchronizationManager;
/**
@@ -32,6 +36,19 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
*/
public final class Neo4jTransactionUtils {
/**
* The default session uses {@link AccessMode#WRITE} and an empty list of bookmarks.
*
* @param database The database to use. May be null, which then designates the default database.
* @return Session parameters to configure the default session used
*/
public static Consumer<SessionParametersTemplate> defaultSessionParameters(@Nullable String database) {
return t -> t
.withDefaultAccessMode(AccessMode.WRITE)
.withBookmarks(Collections.EMPTY_LIST)
.withDatabase(Optional.ofNullable(database).orElse(""));
}
public static StatementRunner retrieveTransactionalStatementRunner(Driver driver) {
if (!TransactionSynchronizationManager.isSynchronizationActive()) {
@@ -48,7 +65,7 @@ public final class Neo4jTransactionUtils {
}
// Manually create a new synchronization
connectionHolder = new Neo4jConnectionHolder(driver.session(AccessMode.WRITE, Collections.emptyList()));
connectionHolder = new Neo4jConnectionHolder(driver.session(defaultSessionParameters(null)));
connectionHolder.setSynchronizedWithTransaction(true);
TransactionSynchronizationManager.registerSynchronization(

View File

@@ -20,18 +20,17 @@ package org.springframework.data.neo4j.core.transaction;
import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.function.Consumer;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.neo4j.driver.v1.AccessMode;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.StatementResult;
import org.neo4j.driver.v1.Transaction;
import org.neo4j.driver.v1.TransactionConfig;
import org.neo4j.driver.Driver;
import org.neo4j.driver.Session;
import org.neo4j.driver.StatementResult;
import org.neo4j.driver.Transaction;
import org.neo4j.driver.TransactionConfig;
import org.springframework.data.neo4j.core.Neo4jTemplate;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
@@ -54,7 +53,7 @@ class Neo4jTransactionManagerTest {
@Test
public void triggerCommitCorrectly() {
when(driver.session(AccessMode.WRITE, Collections.emptyList())).thenReturn(session);
when(driver.session(any(Consumer.class))).thenReturn(session);
when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(transaction);
when(transaction.run(anyString())).thenReturn(statementResult);
when(session.isOpen()).thenReturn(true);
@@ -68,7 +67,7 @@ class Neo4jTransactionManagerTest {
txManager.commit(txStatus);
verify(driver).session(AccessMode.WRITE, Collections.emptyList());
verify(driver).session(any(Consumer.class));
verify(session).isOpen();
verify(session).beginTransaction(any(TransactionConfig.class));

View File

@@ -22,8 +22,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import javax.transaction.Status;
import javax.transaction.UserTransaction;
@@ -37,12 +37,11 @@ import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
import org.neo4j.driver.v1.AccessMode;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.Session;
import org.neo4j.driver.v1.StatementRunner;
import org.neo4j.driver.v1.Transaction;
import org.neo4j.driver.v1.TransactionConfig;
import org.neo4j.driver.Driver;
import org.neo4j.driver.Session;
import org.neo4j.driver.StatementRunner;
import org.neo4j.driver.Transaction;
import org.neo4j.driver.TransactionConfig;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.jta.JtaTransactionManager;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
@@ -72,7 +71,7 @@ class Neo4jTransactionUtilsTest {
AtomicBoolean transactionIsOpen = new AtomicBoolean(true);
when(driver.session()).thenReturn(session);
when(driver.session(AccessMode.WRITE, Collections.emptyList())).thenReturn(session);
when(driver.session(any(Consumer.class))).thenReturn(session);
when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(transaction);
doAnswer(invocation -> {
@@ -122,7 +121,7 @@ class Neo4jTransactionUtilsTest {
}
});
verify(driver).session(AccessMode.WRITE, Collections.emptyList());
verify(driver).session(any(Consumer.class));
verify(session).isOpen();
verify(session).beginTransaction(any(TransactionConfig.class));
@@ -166,7 +165,7 @@ class Neo4jTransactionUtilsTest {
}
});
verify(driver).session(AccessMode.WRITE, Collections.emptyList());
verify(driver).session(any(Consumer.class));
verify(session).isOpen();
verify(session).beginTransaction(any(TransactionConfig.class));
@@ -209,7 +208,7 @@ class Neo4jTransactionUtilsTest {
verify(userTransaction).begin();
verify(driver).session(AccessMode.WRITE, Collections.emptyList());
verify(driver).session(any(Consumer.class));
verify(session, times(2)).isOpen();
verify(session).beginTransaction(any(TransactionConfig.class));
@@ -251,7 +250,7 @@ class Neo4jTransactionUtilsTest {
verify(userTransaction).begin();
verify(userTransaction).rollback();
verify(driver).session(AccessMode.WRITE, Collections.emptyList());
verify(driver).session(any(Consumer.class));
verify(session, times(2)).isOpen();
verify(session).beginTransaction(any(TransactionConfig.class));

View File

@@ -20,7 +20,7 @@ package org.springframework.data.neo4j.integration;
import java.util.List;
import org.neo4j.driver.v1.Record;
import org.neo4j.driver.Record;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.neo4j.repository.query.Query;
import org.springframework.transaction.annotation.Transactional;

View File

@@ -24,10 +24,10 @@ import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.neo4j.driver.v1.AuthTokens;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.GraphDatabase;
import org.neo4j.driver.v1.Record;
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.Record;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;