package org.infinispan.batch;

import net.jcip.annotations.NotThreadSafe;
import org.infinispan.commons.CacheConfigurationException;
import org.infinispan.configuration.cache.Configuration;

/**
 * Enables for automatic batching.
 *
 * @author Manik Surtani (<a href="mailto:manik AT jboss DOT org">manik AT jboss DOT org</a>)
 * @since 4.0
 */
@NotThreadSafe
public abstract class AutoBatchSupport {
   protected BatchContainer batchContainer;

   protected static void assertBatchingSupported(Configuration c) {
      if (!c.invocationBatching().enabled())
         throw new CacheConfigurationException("Invocation batching not enabled in current configuration! Please enable it.");
   }

   protected void startAtomic() {
      batchContainer.startBatch(true);
   }

   protected void endAtomic() {
      batchContainer.endBatch(true, true);
   }

   protected void failAtomic() {
      batchContainer.endBatch(true, false);
   }
}
