diff --git a/spring-data-graph-parent/pom.xml b/spring-data-graph-parent/pom.xml
index 9ffb0772d..728c2483f 100644
--- a/spring-data-graph-parent/pom.xml
+++ b/spring-data-graph-parent/pom.xml
@@ -219,7 +219,7 @@
org.neo4j
- neo4j-community
+ neo4j
${neo4j.version}
diff --git a/spring-data-neo4j-rest/pom.xml b/spring-data-neo4j-rest/pom.xml
index b795d7539..457e5fe24 100644
--- a/spring-data-neo4j-rest/pom.xml
+++ b/spring-data-neo4j-rest/pom.xml
@@ -52,7 +52,7 @@
org.neo4j
- neo4j-community
+ neo4j
org.neo4j.app
diff --git a/spring-data-neo4j-rest/src/main/java/org/neo4j/kernel/RestConfig.java b/spring-data-neo4j-rest/src/main/java/org/neo4j/kernel/RestConfig.java
deleted file mode 100644
index 08b0ed784..000000000
--- a/spring-data-neo4j-rest/src/main/java/org/neo4j/kernel/RestConfig.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Copyright 2011 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.neo4j.kernel;
-
-import org.neo4j.graphdb.GraphDatabaseService;
-import org.neo4j.kernel.impl.core.*;
-import org.neo4j.kernel.impl.nioneo.store.FileSystemAbstraction;
-import org.neo4j.kernel.impl.nioneo.store.StoreId;
-import org.neo4j.kernel.impl.transaction.LockManager;
-import org.neo4j.kernel.impl.transaction.TxModule;
-import org.neo4j.kernel.impl.transaction.xaframework.LogBufferFactory;
-import org.neo4j.kernel.impl.transaction.xaframework.TxIdGenerator;
-
-import javax.transaction.*;
-import javax.transaction.xa.XAResource;
-import java.util.Collections;
-import java.util.Map;
-
-/**
-* @author mh
-* @since 23.02.11
-*/
-public class RestConfig extends Config {
- public RestConfig(GraphDatabaseService graphDb, String storeDir, StoreId storeId,
- Map inputParams, KernelPanicEventGenerator kpe,
- TxModule txModule, LockManager lockManager, LockReleaser lockReleaser,
- IdGeneratorFactory idGeneratorFactory,
- TxEventSyncHookFactory txSyncHookFactory, RelationshipTypeCreator relTypeCreator,
- TxIdGenerator txIdGenerator, LastCommittedTxIdSetter lastCommittedTxIdSetter,
- FileSystemAbstraction fileSystem, LogBufferFactory logBufferFactory) {
- super(graphDb, storeDir, storeId,
- inputParams, kpe, txModule, lockManager, lockReleaser, idGeneratorFactory, txSyncHookFactory, relTypeCreator, txIdGenerator, lastCommittedTxIdSetter, fileSystem);
- }
-
- public RestConfig(AbstractGraphDatabase restGraphDatabase) {
- super(restGraphDatabase, restGraphDatabase.getStoreDir(), null,
- Collections.emptyMap(),null,
- new TxModule(true,null){
- @Override
- public TransactionManager getTxManager() {
- return new NullTransactionManager();
- }
- },
- null,null,
- null,null,null,null,null,
- null);
- }
-
- private static class NullTransactionManager implements TransactionManager {
- private static final Transaction NULL_JAVA_TRANSACTION = new Transaction() {
- @Override
- public void commit() throws HeuristicMixedException, HeuristicRollbackException, RollbackException, SecurityException, SystemException {
-
- }
-
- @Override
- public boolean delistResource(XAResource xaResource, int i) throws IllegalStateException, SystemException {
- return false;
- }
-
- @Override
- public boolean enlistResource(XAResource xaResource) throws IllegalStateException, RollbackException, SystemException {
- return false;
- }
-
- @Override
- public int getStatus() throws SystemException {
- return Status.STATUS_NO_TRANSACTION;
- }
-
- @Override
- public void registerSynchronization(Synchronization synchronization) throws IllegalStateException, RollbackException, SystemException {
-
- }
-
- @Override
- public void rollback() throws IllegalStateException, SystemException {
-
- }
-
- @Override
- public void setRollbackOnly() throws IllegalStateException, SystemException {
-
- }
- };
-
- @Override
- public void begin() throws NotSupportedException, SystemException {
-
- }
-
- @Override
- public void commit() throws HeuristicMixedException, HeuristicRollbackException, IllegalStateException, RollbackException, SecurityException, SystemException {
-
- }
-
- @Override
- public int getStatus() throws SystemException {
- return 0;
- }
-
- @Override
- public Transaction getTransaction() throws SystemException {
- return NULL_JAVA_TRANSACTION;
- }
-
- @Override
- public void resume(Transaction transaction) throws IllegalStateException, InvalidTransactionException, SystemException {
-
- }
-
- @Override
- public void rollback() throws IllegalStateException, SecurityException, SystemException {
-
- }
-
- @Override
- public void setRollbackOnly() throws IllegalStateException, SystemException {
-
- }
-
- @Override
- public void setTransactionTimeout(int i) throws SystemException {
-
- }
-
- @Override
- public Transaction suspend() throws SystemException {
- return NULL_JAVA_TRANSACTION;
- }
- }
-}
\ No newline at end of file
diff --git a/spring-data-neo4j-rest/src/main/java/org/springframework/data/graph/neo4j/rest/support/RestEntity.java b/spring-data-neo4j-rest/src/main/java/org/springframework/data/graph/neo4j/rest/support/RestEntity.java
index dcaaa4239..8f813e47c 100644
--- a/spring-data-neo4j-rest/src/main/java/org/springframework/data/graph/neo4j/rest/support/RestEntity.java
+++ b/spring-data-neo4j-rest/src/main/java/org/springframework/data/graph/neo4j/rest/support/RestEntity.java
@@ -168,6 +168,7 @@ public class RestEntity implements PropertyContainer {
@Override
public boolean equals( Object o ) {
if (o == null) return false;
+ if (o == this) return true;
return getClass().equals( o.getClass() ) && getId() == ( (RestEntity) o ).getId();
}
diff --git a/spring-data-neo4j-rest/src/main/java/org/springframework/data/graph/neo4j/rest/support/RestGraphDatabase.java b/spring-data-neo4j-rest/src/main/java/org/springframework/data/graph/neo4j/rest/support/RestGraphDatabase.java
index 48da58067..a9d7a69cc 100644
--- a/spring-data-neo4j-rest/src/main/java/org/springframework/data/graph/neo4j/rest/support/RestGraphDatabase.java
+++ b/spring-data-neo4j-rest/src/main/java/org/springframework/data/graph/neo4j/rest/support/RestGraphDatabase.java
@@ -22,19 +22,15 @@ import org.neo4j.graphdb.event.KernelEventHandler;
import org.neo4j.graphdb.event.TransactionEventHandler;
import org.neo4j.graphdb.index.Index;
import org.neo4j.graphdb.traversal.TraversalDescription;
-import org.neo4j.kernel.AbstractGraphDatabase;
-import org.neo4j.kernel.Config;
-import org.neo4j.kernel.RestConfig;
-import org.springframework.data.graph.neo4j.rest.support.index.RestIndexManager;
import org.springframework.data.graph.core.GraphDatabase;
import org.springframework.data.graph.core.Property;
+import org.springframework.data.graph.neo4j.rest.support.index.RestIndexManager;
import javax.ws.rs.core.Response.Status;
-import java.io.Serializable;
import java.net.URI;
import java.util.Map;
-public class RestGraphDatabase extends AbstractGraphDatabase implements GraphDatabase {
+public class RestGraphDatabase implements GraphDatabaseService, GraphDatabase {
private RestRequest restRequest;
private long propertyRefetchTimeInMillis = 1000;
@@ -170,24 +166,4 @@ public class RestGraphDatabase extends AbstractGraphDatabase implements GraphDat
public KernelEventHandler unregisterKernelEventHandler(KernelEventHandler handler) {
return handler;
}
-
- @Override
- public String getStoreDir() {
- return getRestRequest().getUri().toString();
- }
-
- @Override
- public Config getConfig() {
- return new RestConfig(this);
- }
-
- @Override
- public T getManagementBean(Class type) {
- return null;
- }
-
- @Override
- public boolean isReadOnly() {
- return false;
- }
}
diff --git a/spring-data-neo4j-rest/src/test/java/org/springframework/data/graph/neo4j/rest/support/LocalTestServer.java b/spring-data-neo4j-rest/src/test/java/org/springframework/data/graph/neo4j/rest/support/LocalTestServer.java
index 463163d87..03afe55eb 100644
--- a/spring-data-neo4j-rest/src/test/java/org/springframework/data/graph/neo4j/rest/support/LocalTestServer.java
+++ b/spring-data-neo4j-rest/src/test/java/org/springframework/data/graph/neo4j/rest/support/LocalTestServer.java
@@ -16,6 +16,7 @@
package org.springframework.data.graph.neo4j.rest.support;
+import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.kernel.AbstractGraphDatabase;
import org.neo4j.kernel.ImpermanentGraphDatabase;
import org.neo4j.server.AddressResolver;
@@ -114,7 +115,7 @@ public class LocalTestServer {
cleaner.cleanDb();
}
- public AbstractGraphDatabase getGraphDatabase() {
+ public GraphDatabaseService getGraphDatabase() {
return getDatabase().graph;
}
}
diff --git a/spring-data-neo4j-rest/src/test/java/org/springframework/data/graph/neo4j/rest/support/Neo4jDatabaseCleaner.java b/spring-data-neo4j-rest/src/test/java/org/springframework/data/graph/neo4j/rest/support/Neo4jDatabaseCleaner.java
index 7d6dcda4d..63a05734f 100644
--- a/spring-data-neo4j-rest/src/test/java/org/springframework/data/graph/neo4j/rest/support/Neo4jDatabaseCleaner.java
+++ b/spring-data-neo4j-rest/src/test/java/org/springframework/data/graph/neo4j/rest/support/Neo4jDatabaseCleaner.java
@@ -16,12 +16,8 @@
package org.springframework.data.graph.neo4j.rest.support;
-import org.neo4j.graphdb.Direction;
-import org.neo4j.graphdb.Node;
-import org.neo4j.graphdb.Relationship;
-import org.neo4j.graphdb.Transaction;
+import org.neo4j.graphdb.*;
import org.neo4j.graphdb.index.IndexManager;
-import org.neo4j.kernel.AbstractGraphDatabase;
import java.util.Arrays;
import java.util.HashMap;
@@ -32,9 +28,9 @@ import java.util.Map;
* @since 02.03.11
*/
public class Neo4jDatabaseCleaner {
- private AbstractGraphDatabase graph;
+ private GraphDatabaseService graph;
- public Neo4jDatabaseCleaner(AbstractGraphDatabase graph) {
+ public Neo4jDatabaseCleaner(GraphDatabaseService graph) {
this.graph = graph;
}
diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml
index d12b00b12..e198c19fd 100644
--- a/spring-data-neo4j/pom.xml
+++ b/spring-data-neo4j/pom.xml
@@ -120,7 +120,7 @@
org.neo4j
- neo4j-community
+ neo4j
diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/Neo4jConfiguration.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/Neo4jConfiguration.java
index 1d3e3d08d..612bfc62e 100644
--- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/Neo4jConfiguration.java
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/Neo4jConfiguration.java
@@ -19,6 +19,7 @@ package org.springframework.data.graph.neo4j.config;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
+import org.neo4j.kernel.AbstractGraphDatabase;
import org.neo4j.kernel.impl.transaction.SpringTransactionManager;
import org.neo4j.kernel.impl.transaction.UserTransactionImpl;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,9 +32,9 @@ import org.springframework.data.graph.core.NodeBacked;
import org.springframework.data.graph.core.RelationshipBacked;
import org.springframework.data.graph.neo4j.fieldaccess.Neo4jConversionServiceFactoryBean;
import org.springframework.data.graph.neo4j.fieldaccess.NodeDelegatingFieldAccessorFactory;
+import org.springframework.data.graph.neo4j.repository.DirectGraphRepositoryFactory;
import org.springframework.data.graph.neo4j.state.NodeEntityStateFactory;
import org.springframework.data.graph.neo4j.state.RelationshipEntityStateFactory;
-import org.springframework.data.graph.neo4j.repository.DirectGraphRepositoryFactory;
import org.springframework.data.graph.neo4j.support.GraphDatabaseContext;
import org.springframework.data.graph.neo4j.support.TypeRepresentationStrategyFactory;
import org.springframework.data.graph.neo4j.support.node.Neo4jNodeBacking;
@@ -47,6 +48,7 @@ import org.springframework.data.persistence.EntityInstantiator;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.jta.JtaTransactionManager;
+import org.springframework.transaction.jta.UserTransactionAdapter;
import javax.persistence.EntityManagerFactory;
import javax.validation.Validator;
@@ -177,19 +179,28 @@ public class Neo4jConfiguration {
public PlatformTransactionManager transactionManager() {
if (isUsingCrossStorePersistence()) {
JpaTransactionManager jpaTm = new JpaTransactionManager(getEntityManagerFactory());
- JtaTransactionManager jtaTm = new JtaTransactionManager();
- jtaTm.setTransactionManager(new SpringTransactionManager(getGraphDatabaseService()));
- jtaTm.setUserTransaction(new UserTransactionImpl(getGraphDatabaseService()));
+ JtaTransactionManager jtaTm = createJtaTransactionManager();
return new ChainedTransactionManager(jpaTm, jtaTm);
}
else {
- PlatformTransactionManager transactionManager = new JtaTransactionManager();
- ((JtaTransactionManager)transactionManager).setTransactionManager(new SpringTransactionManager(getGraphDatabaseService()));
- ((JtaTransactionManager)transactionManager).setUserTransaction(new UserTransactionImpl(getGraphDatabaseService()));
- return transactionManager;
+ return createJtaTransactionManager();
}
}
+ private JtaTransactionManager createJtaTransactionManager() {
+ JtaTransactionManager jtaTm = new JtaTransactionManager();
+ final GraphDatabaseService gds = getGraphDatabaseService();
+ if (gds instanceof AbstractGraphDatabase) {
+ jtaTm.setTransactionManager(new SpringTransactionManager(gds));
+ jtaTm.setUserTransaction(new UserTransactionImpl(gds));
+ } else {
+ final NullTransactionManager tm = new NullTransactionManager();
+ jtaTm.setTransactionManager(tm);
+ jtaTm.setUserTransaction(new UserTransactionAdapter(tm));
+ }
+ return jtaTm;
+ }
+
@Bean
public ConfigurationCheck configurationCheck() throws Exception {
return new ConfigurationCheck(graphDatabaseContext(),transactionManager());
diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/NullTransactionManager.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/NullTransactionManager.java
new file mode 100644
index 000000000..a96660b74
--- /dev/null
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/config/NullTransactionManager.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright 2011 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.data.graph.neo4j.config;
+
+import javax.transaction.*;
+import javax.transaction.xa.XAResource;
+
+/**
+* @author mh
+* @since 09.04.11
+*/
+class NullTransactionManager implements TransactionManager {
+ private static final Transaction NULL_JAVA_TRANSACTION = new Transaction() {
+ @Override
+ public void commit() throws HeuristicMixedException, HeuristicRollbackException, RollbackException, SecurityException, SystemException {
+
+ }
+
+ @Override
+ public boolean delistResource(XAResource xaResource, int i) throws IllegalStateException, SystemException {
+ return false;
+ }
+
+ @Override
+ public boolean enlistResource(XAResource xaResource) throws IllegalStateException, RollbackException, SystemException {
+ return false;
+ }
+
+ @Override
+ public int getStatus() throws SystemException {
+ return Status.STATUS_NO_TRANSACTION;
+ }
+
+ @Override
+ public void registerSynchronization(Synchronization synchronization) throws IllegalStateException, RollbackException, SystemException {
+
+ }
+
+ @Override
+ public void rollback() throws IllegalStateException, SystemException {
+
+ }
+
+ @Override
+ public void setRollbackOnly() throws IllegalStateException, SystemException {
+
+ }
+ };
+
+ @Override
+ public void begin() throws NotSupportedException, SystemException {
+
+ }
+
+ @Override
+ public void commit() throws HeuristicMixedException, HeuristicRollbackException, IllegalStateException, RollbackException, SecurityException, SystemException {
+
+ }
+
+ @Override
+ public int getStatus() throws SystemException {
+ return 0;
+ }
+
+ @Override
+ public Transaction getTransaction() throws SystemException {
+ return NULL_JAVA_TRANSACTION;
+ }
+
+ @Override
+ public void resume(Transaction transaction) throws IllegalStateException, InvalidTransactionException, SystemException {
+
+ }
+
+ @Override
+ public void rollback() throws IllegalStateException, SecurityException, SystemException {
+
+ }
+
+ @Override
+ public void setRollbackOnly() throws IllegalStateException, SystemException {
+
+ }
+
+ @Override
+ public void setTransactionTimeout(int i) throws SystemException {
+
+ }
+
+ @Override
+ public Transaction suspend() throws SystemException {
+ return NULL_JAVA_TRANSACTION;
+ }
+}
diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/DelegatingGraphDatabase.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/DelegatingGraphDatabase.java
index cf31edb37..738f10f4b 100644
--- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/DelegatingGraphDatabase.java
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/DelegatingGraphDatabase.java
@@ -16,15 +16,11 @@
package org.springframework.data.graph.neo4j.support;
-import org.neo4j.graphdb.Node;
-import org.neo4j.graphdb.PropertyContainer;
-import org.neo4j.graphdb.Relationship;
-import org.neo4j.graphdb.RelationshipType;
+import org.neo4j.graphdb.*;
import org.neo4j.graphdb.index.Index;
import org.neo4j.graphdb.index.IndexManager;
import org.neo4j.graphdb.traversal.TraversalDescription;
import org.neo4j.index.impl.lucene.LuceneIndexImplementation;
-import org.neo4j.kernel.AbstractGraphDatabase;
import org.neo4j.kernel.Traversal;
import org.springframework.data.graph.core.GraphDatabase;
import org.springframework.data.graph.core.Property;
@@ -37,9 +33,9 @@ import java.util.Map;
*/
public class DelegatingGraphDatabase implements GraphDatabase {
- protected AbstractGraphDatabase delegate;
+ protected GraphDatabaseService delegate;
- public DelegatingGraphDatabase(final AbstractGraphDatabase delegate) {
+ public DelegatingGraphDatabase(final GraphDatabaseService delegate) {
this.delegate = delegate;
}
diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/GraphDatabaseContext.java b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/GraphDatabaseContext.java
index cb7297ab3..22f07954c 100644
--- a/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/GraphDatabaseContext.java
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/graph/neo4j/support/GraphDatabaseContext.java
@@ -80,8 +80,12 @@ public class GraphDatabaseContext {
* @return true if a transaction manager is available and a transaction is currently running
*/
public boolean transactionIsRunning() {
+ if (!(graphDatabaseService instanceof AbstractGraphDatabase)) {
+ return true; // assume always running tx (e.g. for REST or other remotes)
+ }
try {
- return getTxManager().getStatus() != Status.STATUS_NO_TRANSACTION;
+ final TransactionManager txManager = ((AbstractGraphDatabase) graphDatabaseService).getConfig().getTxModule().getTxManager();
+ return txManager.getStatus() != Status.STATUS_NO_TRANSACTION;
} catch (SystemException e) {
log.error("Error accessing TransactionManager", e);
return false;
@@ -194,14 +198,6 @@ public class GraphDatabaseContext {
}
-
- /**
- * @return Neo4j Transaction manager
- */
- public TransactionManager getTxManager() {
- return ((AbstractGraphDatabase) graphDatabaseService).getConfig().getTxModule().getTxManager();
- }
-
/**
* Delegates to {@link GraphDatabaseService}
*/
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/config/TestTransactionManagerFactoryBean.java b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/config/TestTransactionManagerFactoryBean.java
new file mode 100644
index 000000000..08e050416
--- /dev/null
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/config/TestTransactionManagerFactoryBean.java
@@ -0,0 +1,72 @@
+/**
+ * Copyright 2011 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.data.graph.neo4j.config;
+
+import org.neo4j.graphdb.GraphDatabaseService;
+import org.neo4j.kernel.AbstractGraphDatabase;
+import org.neo4j.kernel.impl.transaction.SpringTransactionManager;
+import org.neo4j.kernel.impl.transaction.UserTransactionImpl;
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.transaction.jta.JtaTransactionManager;
+import org.springframework.transaction.jta.UserTransactionAdapter;
+
+/**
+ * @author mh
+ * @since 09.04.11
+ */
+public class TestTransactionManagerFactoryBean implements FactoryBean {
+ private GraphDatabaseService graphDatabaseService;
+ private JtaTransactionManager transactionManager;
+
+ @Override
+ public JtaTransactionManager getObject() throws Exception {
+ return transactionManager;
+ }
+
+ @Override
+ public Class> getObjectType() {
+ return JtaTransactionManager.class;
+ }
+
+ @Override
+ public boolean isSingleton() {
+ return true;
+ }
+
+ private JtaTransactionManager createJtaTransactionManager(GraphDatabaseService gds) {
+ JtaTransactionManager jtaTm = new JtaTransactionManager();
+ if (gds instanceof AbstractGraphDatabase) {
+ jtaTm.setTransactionManager(new SpringTransactionManager(gds));
+ jtaTm.setUserTransaction(new UserTransactionImpl(gds));
+ } else {
+ final NullTransactionManager tm = new NullTransactionManager();
+ jtaTm.setTransactionManager(tm);
+ jtaTm.setUserTransaction(new UserTransactionAdapter(tm));
+ }
+ return jtaTm;
+ }
+
+ public GraphDatabaseService getGraphDatabaseService() {
+ return graphDatabaseService;
+ }
+
+ public void setGraphDatabaseService(GraphDatabaseService graphDatabaseService) {
+ this.graphDatabaseService = graphDatabaseService;
+ transactionManager = createJtaTransactionManager(graphDatabaseService);
+ }
+
+}
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/template/Neo4jTemplateApiTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/template/Neo4jTemplateApiTest.java
index aa3169e53..c9d65a3ae 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/template/Neo4jTemplateApiTest.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/template/Neo4jTemplateApiTest.java
@@ -22,13 +22,8 @@ import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.neo4j.graphdb.Direction;
-import org.neo4j.graphdb.DynamicRelationshipType;
-import org.neo4j.graphdb.Node;
-import org.neo4j.graphdb.Path;
-import org.neo4j.graphdb.Relationship;
+import org.neo4j.graphdb.*;
import org.neo4j.graphdb.index.Index;
-import org.neo4j.kernel.AbstractGraphDatabase;
import org.neo4j.kernel.ImpermanentGraphDatabase;
import org.neo4j.kernel.Traversal;
import org.neo4j.kernel.impl.transaction.SpringTransactionManager;
@@ -59,7 +54,7 @@ public class Neo4jTemplateApiTest {
private Relationship relationship1;
private Node node1;
private static PlatformTransactionManager transactionManager;
- private static AbstractGraphDatabase graphDatabaseService;
+ private static GraphDatabaseService graphDatabaseService;
diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/template/NeoApiTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/template/NeoApiTest.java
index ebed53532..b59f6f6b3 100644
--- a/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/template/NeoApiTest.java
+++ b/spring-data-neo4j/src/test/java/org/springframework/data/graph/neo4j/template/NeoApiTest.java
@@ -18,7 +18,7 @@ package org.springframework.data.graph.neo4j.template;
import org.junit.After;
import org.junit.Before;
-import org.neo4j.kernel.AbstractGraphDatabase;
+import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.kernel.ImpermanentGraphDatabase;
import org.neo4j.kernel.impl.transaction.SpringTransactionManager;
import org.springframework.data.graph.core.GraphDatabase;
@@ -30,7 +30,7 @@ public abstract class NeoApiTest {
protected GraphDatabase graph;
protected Neo4jTemplate template;
protected PlatformTransactionManager transactionManager;
- private AbstractGraphDatabase graphDatabaseService;
+ private GraphDatabaseService graphDatabaseService;
@Before
diff --git a/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest-context.xml b/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest-context.xml
index b107a15e5..23f864422 100644
--- a/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest-context.xml
+++ b/spring-data-neo4j/src/test/resources/org/springframework/data/graph/neo4j/support/Neo4jGraphPersistenceTest-context.xml
@@ -129,7 +129,7 @@
-
+
+
+
+