Upgrade to neo4j-java-driver 2.0 alpha01.
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user