Formatting.
This commit is contained in:
parent
7535e9ade7
commit
e5918cd1e8
9 changed files with 274 additions and 281 deletions
|
@ -17,10 +17,8 @@ package net.helenus.core;
|
||||||
|
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
import net.helenus.support.Either;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -35,6 +33,7 @@ import net.helenus.core.cache.Facet;
|
||||||
import net.helenus.core.operation.Operation;
|
import net.helenus.core.operation.Operation;
|
||||||
import net.helenus.mapping.value.ColumnValuePreparer;
|
import net.helenus.mapping.value.ColumnValuePreparer;
|
||||||
import net.helenus.mapping.value.ColumnValueProvider;
|
import net.helenus.mapping.value.ColumnValueProvider;
|
||||||
|
import net.helenus.support.Either;
|
||||||
import net.helenus.support.HelenusException;
|
import net.helenus.support.HelenusException;
|
||||||
|
|
||||||
public abstract class AbstractSessionOperations {
|
public abstract class AbstractSessionOperations {
|
||||||
|
@ -132,7 +131,8 @@ public abstract class AbstractSessionOperations {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void mergeCache(Table<String, String, Either<Object, List<Facet>>> uowCache) { }
|
public void mergeCache(Table<String, String, Either<Object, List<Facet>>> uowCache) {
|
||||||
|
}
|
||||||
|
|
||||||
RuntimeException translateException(RuntimeException e) {
|
RuntimeException translateException(RuntimeException e) {
|
||||||
if (e instanceof HelenusException) {
|
if (e instanceof HelenusException) {
|
||||||
|
|
|
@ -15,14 +15,12 @@
|
||||||
*/
|
*/
|
||||||
package net.helenus.core;
|
package net.helenus.core;
|
||||||
|
|
||||||
|
import static net.helenus.core.HelenusSession.deleted;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import net.helenus.core.cache.UnboundFacet;
|
|
||||||
import net.helenus.core.reflect.HelenusNamedProperty;
|
|
||||||
import net.helenus.mapping.HelenusProperty;
|
|
||||||
import net.helenus.support.Either;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -34,8 +32,7 @@ import com.google.common.collect.TreeTraverser;
|
||||||
|
|
||||||
import net.helenus.core.cache.CacheUtil;
|
import net.helenus.core.cache.CacheUtil;
|
||||||
import net.helenus.core.cache.Facet;
|
import net.helenus.core.cache.Facet;
|
||||||
|
import net.helenus.support.Either;
|
||||||
import static net.helenus.core.HelenusSession.deleted;
|
|
||||||
|
|
||||||
/** Encapsulates the concept of a "transaction" as a unit-of-work. */
|
/** Encapsulates the concept of a "transaction" as a unit-of-work. */
|
||||||
public abstract class AbstractUnitOfWork<E extends Exception> implements UnitOfWork<E>, AutoCloseable {
|
public abstract class AbstractUnitOfWork<E extends Exception> implements UnitOfWork<E>, AutoCloseable {
|
||||||
|
@ -45,10 +42,6 @@ public abstract class AbstractUnitOfWork<E extends Exception> implements UnitOfW
|
||||||
private final List<AbstractUnitOfWork<E>> nested = new ArrayList<>();
|
private final List<AbstractUnitOfWork<E>> nested = new ArrayList<>();
|
||||||
private final HelenusSession session;
|
private final HelenusSession session;
|
||||||
private final AbstractUnitOfWork<E> parent;
|
private final AbstractUnitOfWork<E> parent;
|
||||||
private List<CommitThunk> postCommit = new ArrayList<CommitThunk>();
|
|
||||||
private boolean aborted = false;
|
|
||||||
private boolean committed = false;
|
|
||||||
|
|
||||||
private final Table<String, String, Either<Object, List<Facet>>> cache = HashBasedTable.create();
|
private final Table<String, String, Either<Object, List<Facet>>> cache = HashBasedTable.create();
|
||||||
protected String purpose;
|
protected String purpose;
|
||||||
protected int cacheHits = 0;
|
protected int cacheHits = 0;
|
||||||
|
@ -57,6 +50,9 @@ public abstract class AbstractUnitOfWork<E extends Exception> implements UnitOfW
|
||||||
protected Stopwatch elapsedTime;
|
protected Stopwatch elapsedTime;
|
||||||
protected Map<String, Double> databaseTime = new HashMap<>();
|
protected Map<String, Double> databaseTime = new HashMap<>();
|
||||||
protected double cacheLookupTime = 0.0;
|
protected double cacheLookupTime = 0.0;
|
||||||
|
private List<CommitThunk> postCommit = new ArrayList<CommitThunk>();
|
||||||
|
private boolean aborted = false;
|
||||||
|
private boolean committed = false;
|
||||||
|
|
||||||
protected AbstractUnitOfWork(HelenusSession session, AbstractUnitOfWork<E> parent) {
|
protected AbstractUnitOfWork(HelenusSession session, AbstractUnitOfWork<E> parent) {
|
||||||
Objects.requireNonNull(session, "containing session cannot be null");
|
Objects.requireNonNull(session, "containing session cannot be null");
|
||||||
|
@ -326,7 +322,8 @@ public abstract class AbstractUnitOfWork<E extends Exception> implements UnitOfW
|
||||||
columnMap.forEach((columnKey, value) -> {
|
columnMap.forEach((columnKey, value) -> {
|
||||||
if (to.contains(rowKey, columnKey)) {
|
if (to.contains(rowKey, columnKey)) {
|
||||||
// TODO(gburd):...
|
// TODO(gburd):...
|
||||||
to.put(rowKey, columnKey, Either.left(CacheUtil.merge(to.get(rowKey, columnKey).getLeft(), from.get(rowKey, columnKey).getLeft())));
|
to.put(rowKey, columnKey, Either.left(CacheUtil.merge(to.get(rowKey, columnKey).getLeft(),
|
||||||
|
from.get(rowKey, columnKey).getLeft())));
|
||||||
} else {
|
} else {
|
||||||
to.put(rowKey, columnKey, from.get(rowKey, columnKey));
|
to.put(rowKey, columnKey, from.get(rowKey, columnKey));
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@ import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import net.helenus.support.*;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -49,15 +48,15 @@ import net.helenus.mapping.HelenusEntity;
|
||||||
import net.helenus.mapping.HelenusProperty;
|
import net.helenus.mapping.HelenusProperty;
|
||||||
import net.helenus.mapping.MappingUtil;
|
import net.helenus.mapping.MappingUtil;
|
||||||
import net.helenus.mapping.value.*;
|
import net.helenus.mapping.value.*;
|
||||||
|
import net.helenus.support.*;
|
||||||
import net.helenus.support.Fun.Tuple1;
|
import net.helenus.support.Fun.Tuple1;
|
||||||
import net.helenus.support.Fun.Tuple2;
|
import net.helenus.support.Fun.Tuple2;
|
||||||
import net.helenus.support.Fun.Tuple6;
|
import net.helenus.support.Fun.Tuple6;
|
||||||
|
|
||||||
public final class HelenusSession extends AbstractSessionOperations implements Closeable {
|
public final class HelenusSession extends AbstractSessionOperations implements Closeable {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(HelenusSession.class);
|
|
||||||
public static final Object deleted = new Object();
|
public static final Object deleted = new Object();
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(HelenusSession.class);
|
||||||
private final int MAX_CACHE_SIZE = 10000;
|
private final int MAX_CACHE_SIZE = 10000;
|
||||||
private final int MAX_CACHE_EXPIRE_SECONDS = 600;
|
private final int MAX_CACHE_EXPIRE_SECONDS = 600;
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
*/
|
*/
|
||||||
package net.helenus.core.operation;
|
package net.helenus.core.operation;
|
||||||
|
|
||||||
|
import static net.helenus.core.HelenusSession.deleted;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
@ -32,8 +34,6 @@ import net.helenus.core.UnitOfWork;
|
||||||
import net.helenus.core.cache.CacheUtil;
|
import net.helenus.core.cache.CacheUtil;
|
||||||
import net.helenus.core.cache.Facet;
|
import net.helenus.core.cache.Facet;
|
||||||
|
|
||||||
import static net.helenus.core.HelenusSession.deleted;
|
|
||||||
|
|
||||||
public abstract class AbstractOptionalOperation<E, O extends AbstractOptionalOperation<E, O>>
|
public abstract class AbstractOptionalOperation<E, O extends AbstractOptionalOperation<E, O>>
|
||||||
extends
|
extends
|
||||||
AbstractStatementOperation<E, O> {
|
AbstractStatementOperation<E, O> {
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
*/
|
*/
|
||||||
package net.helenus.core.operation;
|
package net.helenus.core.operation;
|
||||||
|
|
||||||
|
import static net.helenus.core.HelenusSession.deleted;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
@ -33,8 +35,6 @@ import net.helenus.core.UnitOfWork;
|
||||||
import net.helenus.core.cache.CacheUtil;
|
import net.helenus.core.cache.CacheUtil;
|
||||||
import net.helenus.core.cache.Facet;
|
import net.helenus.core.cache.Facet;
|
||||||
|
|
||||||
import static net.helenus.core.HelenusSession.deleted;
|
|
||||||
|
|
||||||
public abstract class AbstractStreamOperation<E, O extends AbstractStreamOperation<E, O>>
|
public abstract class AbstractStreamOperation<E, O extends AbstractStreamOperation<E, O>>
|
||||||
extends
|
extends
|
||||||
AbstractStatementOperation<E, O> {
|
AbstractStatementOperation<E, O> {
|
||||||
|
|
|
@ -19,17 +19,17 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import com.datastax.driver.core.RegularStatement;
|
|
||||||
import com.datastax.driver.core.querybuilder.BuiltStatement;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.codahale.metrics.Meter;
|
import com.codahale.metrics.Meter;
|
||||||
import com.codahale.metrics.MetricRegistry;
|
import com.codahale.metrics.MetricRegistry;
|
||||||
import com.codahale.metrics.Timer;
|
import com.codahale.metrics.Timer;
|
||||||
|
import com.datastax.driver.core.RegularStatement;
|
||||||
import com.datastax.driver.core.ResultSet;
|
import com.datastax.driver.core.ResultSet;
|
||||||
import com.datastax.driver.core.ResultSetFuture;
|
import com.datastax.driver.core.ResultSetFuture;
|
||||||
import com.datastax.driver.core.Statement;
|
import com.datastax.driver.core.Statement;
|
||||||
|
import com.datastax.driver.core.querybuilder.BuiltStatement;
|
||||||
import com.google.common.base.Stopwatch;
|
import com.google.common.base.Stopwatch;
|
||||||
|
|
||||||
import brave.Span;
|
import brave.Span;
|
||||||
|
@ -67,6 +67,26 @@ public abstract class Operation<E> {
|
||||||
this.requestLatency = metrics.timer("net.helenus.request-latency");
|
this.requestLatency = metrics.timer("net.helenus.request-latency");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String queryString(Statement statement, boolean includeValues) {
|
||||||
|
String query = null;
|
||||||
|
if (statement instanceof BuiltStatement) {
|
||||||
|
BuiltStatement builtStatement = (BuiltStatement) statement;
|
||||||
|
if (includeValues) {
|
||||||
|
RegularStatement regularStatement = builtStatement.setForceNoValues(true);
|
||||||
|
query = regularStatement.getQueryString();
|
||||||
|
} else {
|
||||||
|
query = builtStatement.getQueryString();
|
||||||
|
}
|
||||||
|
} else if (statement instanceof RegularStatement) {
|
||||||
|
RegularStatement regularStatement = (RegularStatement) statement;
|
||||||
|
query = regularStatement.getQueryString();
|
||||||
|
} else {
|
||||||
|
query = statement.toString();
|
||||||
|
|
||||||
|
}
|
||||||
|
return query;
|
||||||
|
}
|
||||||
|
|
||||||
public ResultSet execute(AbstractSessionOperations session, UnitOfWork uow, TraceContext traceContext, long timeout,
|
public ResultSet execute(AbstractSessionOperations session, UnitOfWork uow, TraceContext traceContext, long timeout,
|
||||||
TimeUnit units, boolean showValues, boolean cached) { // throws TimeoutException {
|
TimeUnit units, boolean showValues, boolean cached) { // throws TimeoutException {
|
||||||
|
|
||||||
|
@ -109,26 +129,6 @@ public abstract class Operation<E> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String queryString(Statement statement, boolean includeValues) {
|
|
||||||
String query = null;
|
|
||||||
if (statement instanceof BuiltStatement) {
|
|
||||||
BuiltStatement builtStatement = (BuiltStatement) statement;
|
|
||||||
if (includeValues) {
|
|
||||||
RegularStatement regularStatement = builtStatement.setForceNoValues(true);
|
|
||||||
query = regularStatement.getQueryString();
|
|
||||||
} else {
|
|
||||||
query = builtStatement.getQueryString();
|
|
||||||
}
|
|
||||||
} else if (statement instanceof RegularStatement) {
|
|
||||||
RegularStatement regularStatement = (RegularStatement) statement;
|
|
||||||
query = regularStatement.getQueryString();
|
|
||||||
} else {
|
|
||||||
query = statement.toString();
|
|
||||||
|
|
||||||
}
|
|
||||||
return query;
|
|
||||||
}
|
|
||||||
|
|
||||||
void log(Statement statement, UnitOfWork uow, Stopwatch timer, boolean showValues) {
|
void log(Statement statement, UnitOfWork uow, Stopwatch timer, boolean showValues) {
|
||||||
if (LOG.isInfoEnabled()) {
|
if (LOG.isInfoEnabled()) {
|
||||||
String uowString = "";
|
String uowString = "";
|
||||||
|
@ -139,10 +139,7 @@ public abstract class Operation<E> {
|
||||||
if (timer != null) {
|
if (timer != null) {
|
||||||
timerString = String.format(" %s ", timer.toString());
|
timerString = String.format(" %s ", timer.toString());
|
||||||
}
|
}
|
||||||
LOG.info(String.format("%s%s%s",
|
LOG.info(String.format("%s%s%s", uowString, timerString, Operation.queryString(statement, false)));
|
||||||
uowString,
|
|
||||||
timerString,
|
|
||||||
Operation.queryString(statement, false)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -250,7 +250,8 @@ public final class SelectOperation<E> extends AbstractFilterStreamOperation<E, S
|
||||||
+ entity.getMappingInterface() + " or " + prop.getEntity().getMappingInterface());
|
+ entity.getMappingInterface() + " or " + prop.getEntity().getMappingInterface());
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO(gburd): writeTime and ttl will be useful on merge() but cause object identity to fail.
|
// TODO(gburd): writeTime and ttl will be useful on merge() but cause object
|
||||||
|
// identity to fail.
|
||||||
if (false && cached) {
|
if (false && cached) {
|
||||||
switch (prop.getProperty().getColumnType()) {
|
switch (prop.getProperty().getColumnType()) {
|
||||||
case PARTITION_KEY :
|
case PARTITION_KEY :
|
||||||
|
|
|
@ -76,8 +76,7 @@ public class DslInvocationHandler<E> implements InvocationHandler {
|
||||||
if (type instanceof UDTDataType && !UDTValue.class.isAssignableFrom(javaType)) {
|
if (type instanceof UDTDataType && !UDTValue.class.isAssignableFrom(javaType)) {
|
||||||
|
|
||||||
Object childDsl = Helenus.dsl(javaType, classLoader,
|
Object childDsl = Helenus.dsl(javaType, classLoader,
|
||||||
Optional.of(new HelenusPropertyNode(prop, parent)),
|
Optional.of(new HelenusPropertyNode(prop, parent)), metadata);
|
||||||
metadata);
|
|
||||||
|
|
||||||
udtMap.put(prop.getGetterMethod(), childDsl);
|
udtMap.put(prop.getGetterMethod(), childDsl);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue