package com.lordofthejars.nosqlunit.infinispan; import java.io.InputStream; import org.infinispan.commons.api.BasicCache; import com.lordofthejars.nosqlunit.core.AbstractCustomizableDatabaseOperation; import com.lordofthejars.nosqlunit.core.NoSqlAssertionError; public class InfinispanOperation extends AbstractCustomizableDatabaseOperation<InfinispanConnectionCallback, BasicCache<Object, Object>> { private BasicCache<Object, Object> cache; public InfinispanOperation(BasicCache<Object, Object> cache) { this.cache = cache; setInsertionStrategy(new DefaultInfinispanInsertionStrategy()); setComparisonStrategy(new DefaultInfinispanComparisonStrategy()); } @Override public void insert(InputStream dataScript) { insertData(dataScript); } private void insertData(InputStream dataScript) { try { executeInsertion(new InfinispanConnectionCallback() { @Override public BasicCache<Object, Object> basicCache() { return cache; } }, dataScript); } catch (Throwable e) { throw new IllegalArgumentException(e); } } @Override public void deleteAll() { this.cache.clear(); } @Override public boolean databaseIs(InputStream expectedData) { return compareData(expectedData); } private boolean compareData(InputStream expectedData) throws NoSqlAssertionError { try { return executeComparison(new InfinispanConnectionCallback() { @Override public BasicCache<Object, Object> basicCache() { return cache; } }, expectedData); } catch (NoSqlAssertionError e) { throw e; } catch (Throwable e) { throw new IllegalStateException(e); } } @Override public BasicCache connectionManager() { return this.cache; } }