package org.radargun.service; import org.radargun.traits.Transactional; import org.radargun.traits.Transactional.Configuration; /** * Provides transactional operations for Hazelcast * * @author Radim Vansa <rvansa@redhat.com> */ public class HazelcastTransactional implements Transactional { protected final HazelcastService service; public HazelcastTransactional(HazelcastService service) { this.service = service; } @Override public Configuration getConfiguration(String cacheName) { if (service.useTransactions) { return Configuration.TRANSACTIONAL; } else { // Use transactions, if the stage requests it return Configuration.TRANSACTIONS_ENABLED; } } @Override public Transaction getTransaction() { return new Tx(); } protected class Tx implements Transactional.Transaction { private final com.hazelcast.core.Transaction tx; public Tx() { this.tx = service.hazelcastInstance.getTransaction(); } @Override public <T> T wrap(T resource) { return resource; } @Override public void begin() { tx.begin(); } @Override public void commit() { tx.commit(); } @Override public void rollback() { tx.rollback(); } } }