removed AbstractGraphDatabase as RestDB superclass, introduced appropriate check at GDC.transactionIsRunning, added neo4j-1.3 dependencies
This commit is contained in:
@@ -219,7 +219,7 @@
|
||||
<!-- Neo4J -->
|
||||
<dependency>
|
||||
<groupId>org.neo4j</groupId>
|
||||
<artifactId>neo4j-community</artifactId>
|
||||
<artifactId>neo4j</artifactId>
|
||||
<version>${neo4j.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.neo4j</groupId>
|
||||
<artifactId>neo4j-community</artifactId>
|
||||
<artifactId>neo4j</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.neo4j.app</groupId>
|
||||
|
||||
@@ -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<String, String> 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.<String,String>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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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> T getManagementBean(Class<T> type) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadOnly() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
<!-- Neo4J -->
|
||||
<dependency>
|
||||
<groupId>org.neo4j</groupId>
|
||||
<artifactId>neo4j-community</artifactId>
|
||||
<artifactId>neo4j</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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}
|
||||
*/
|
||||
|
||||
@@ -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<JtaTransactionManager> {
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
<constructor-arg ref="graphDatabaseContext" />
|
||||
</bean>
|
||||
|
||||
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
|
||||
<!--bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
|
||||
<property name="transactionManager">
|
||||
<bean class="org.neo4j.kernel.impl.transaction.SpringTransactionManager">
|
||||
<constructor-arg ref="graphDatabaseService"/>
|
||||
@@ -140,6 +140,10 @@
|
||||
<constructor-arg ref="graphDatabaseService"/>
|
||||
</bean>
|
||||
</property>
|
||||
</bean-->
|
||||
|
||||
<bean id="transactionManager" class="org.springframework.data.graph.neo4j.config.TestTransactionManagerFactoryBean">
|
||||
<property name="graphDatabaseService" ref="graphDatabaseService"/>
|
||||
</bean>
|
||||
|
||||
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
|
||||
|
||||
Reference in New Issue
Block a user