/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.ogm.datastore.neo4j.remote.bolt.transaction.impl;
import org.hibernate.ogm.datastore.neo4j.remote.bolt.impl.BoltNeo4jDatastoreProvider;
import org.hibernate.ogm.transaction.impl.ForwardingTransactionCoordinatorBuilder;
import org.hibernate.resource.transaction.TransactionCoordinator;
import org.hibernate.resource.transaction.TransactionCoordinatorBuilder;
import org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner;
/**
* Builder for a Neo4j remote {@link TransactionCoordinator}.
*
* @author Davide D'Alto
*/
public class BoltNeo4jTransactionCoordinatorBuilder extends ForwardingTransactionCoordinatorBuilder {
private final BoltNeo4jDatastoreProvider datastoreProvider;
public BoltNeo4jTransactionCoordinatorBuilder(TransactionCoordinatorBuilder delegate, BoltNeo4jDatastoreProvider datastoreProvider) {
super( delegate );
this.datastoreProvider = datastoreProvider;
}
@Override
public TransactionCoordinator buildTransactionCoordinator(TransactionCoordinatorOwner owner, TransactionCoordinatorOptions options) {
if ( isJta() ) {
TransactionCoordinator coordinator = super.buildTransactionCoordinator( owner, options );
return new BoltNeo4jJtaTransactionCoordinator( coordinator, datastoreProvider );
}
else {
return new BoltNeo4jResourceLocalTransactionCoordinator( this, owner, datastoreProvider );
}
}
}