/*
* 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.embedded.transaction.impl;
import org.hibernate.ConnectionAcquisitionMode;
import org.hibernate.ConnectionReleaseMode;
import org.hibernate.ogm.datastore.neo4j.embedded.impl.EmbeddedNeo4jDatastoreProvider;
import org.hibernate.resource.transaction.TransactionCoordinator;
import org.hibernate.resource.transaction.TransactionCoordinatorBuilder;
import org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner;
/**
* Builder for {@link EmbeddedNeo4jJtaTransactionCoordinator}.
*
* @author Davide D'Alto
*/
public class EmbeddedNeo4jTransactionCoordinatorBuilder implements TransactionCoordinatorBuilder {
private final EmbeddedNeo4jDatastoreProvider datastoreProvider;
private final TransactionCoordinatorBuilder delegate;
public EmbeddedNeo4jTransactionCoordinatorBuilder(TransactionCoordinatorBuilder delegate, EmbeddedNeo4jDatastoreProvider datastoreProvider) {
this.delegate = delegate;
this.datastoreProvider = datastoreProvider;
}
@Override
public TransactionCoordinator buildTransactionCoordinator(TransactionCoordinatorOwner owner, TransactionCoordinatorOptions options) {
if ( delegate.isJta() ) {
TransactionCoordinator coordinator = delegate.buildTransactionCoordinator( owner, options );
return new EmbeddedNeo4jJtaTransactionCoordinator( coordinator, datastoreProvider );
}
else {
return new EmbeddedNeo4jResourceLocalTransactionCoordinator( this, owner, datastoreProvider );
}
}
@Override
public boolean isJta() {
return delegate.isJta();
}
@Override
public ConnectionReleaseMode getDefaultConnectionReleaseMode() {
return delegate.getDefaultConnectionReleaseMode();
}
@Override
public ConnectionAcquisitionMode getDefaultConnectionAcquisitionMode() {
return delegate.getDefaultConnectionAcquisitionMode();
}
}