com.netflix.astyanax.cql.writes.StatementCache Maven / Gradle / Ivy
package com.netflix.astyanax.cql.writes;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import com.datastax.driver.core.PreparedStatement;
public class StatementCache {
private final ConcurrentHashMap statementCache = new ConcurrentHashMap();
private StatementCache() {
}
public PreparedStatement getStatement(Integer id) {
return statementCache.get(id);
}
public PreparedStatement getStatement(Integer id, Callable func) {
PreparedStatement stmt = statementCache.get(id);
if (stmt == null) {
try {
stmt = func.call();
statementCache.putIfAbsent(id, stmt);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return stmt;
}
private static final StatementCache Instance = new StatementCache();
public static StatementCache getInstance() {
return Instance;
}
}