diff --git a/src/main/java/net/helenus/core/AbstractEntityDraft.java b/src/main/java/net/helenus/core/AbstractEntityDraft.java index dd2bfab..7a6004c 100644 --- a/src/main/java/net/helenus/core/AbstractEntityDraft.java +++ b/src/main/java/net/helenus/core/AbstractEntityDraft.java @@ -1,13 +1,6 @@ package net.helenus.core; import com.google.common.primitives.Primitives; -import net.helenus.core.reflect.DefaultPrimitiveTypes; -import net.helenus.core.reflect.Drafted; -import net.helenus.core.reflect.MapExportable; -import net.helenus.mapping.HelenusProperty; -import net.helenus.mapping.MappingUtil; -import org.apache.commons.lang3.SerializationUtils; - import java.io.Serializable; import java.util.Collection; import java.util.HashMap; @@ -15,6 +8,12 @@ import java.util.HashSet; import java.util.Map; import java.util.Objects; import java.util.Set; +import net.helenus.core.reflect.DefaultPrimitiveTypes; +import net.helenus.core.reflect.Drafted; +import net.helenus.core.reflect.MapExportable; +import net.helenus.mapping.HelenusProperty; +import net.helenus.mapping.MappingUtil; +import org.apache.commons.lang3.SerializationUtils; public abstract class AbstractEntityDraft implements Drafted { @@ -111,17 +110,17 @@ public abstract class AbstractEntityDraft implements Drafted { Objects.requireNonNull(key); if (value != null) { - if (entity != null) { - if (entityMap.containsKey(key)) { - T currentValue = this.fetch(key); - if (currentValue != null && !value.equals(currentValue)) { - backingMap.put(key, value); - return value; - } - } - } else { + if (entity != null) { + if (entityMap.containsKey(key)) { + T currentValue = this.fetch(key); + if (currentValue != null && !value.equals(currentValue)) { backingMap.put(key, value); + return value; + } } + } else { + backingMap.put(key, value); + } } return null; } @@ -148,11 +147,11 @@ public abstract class AbstractEntityDraft implements Drafted { } private T fetch(String key) { - T value = (T) backingMap.get(key); - if (value == null) { - value = (T) entityMap.get(key); - } - return value; + T value = (T) backingMap.get(key); + if (value == null) { + value = (T) entityMap.get(key); + } + return value; } public boolean reset(String key, T desiredValue) { diff --git a/src/main/java/net/helenus/core/AbstractUnitOfWork.java b/src/main/java/net/helenus/core/AbstractUnitOfWork.java index 9a1f7af..4e10550 100644 --- a/src/main/java/net/helenus/core/AbstractUnitOfWork.java +++ b/src/main/java/net/helenus/core/AbstractUnitOfWork.java @@ -204,21 +204,21 @@ public abstract class AbstractUnitOfWork @Override public Optional cacheLookup(String key) { - AbstractUnitOfWork self = this; - do { - Object result = self.statementCache.get(key); - if (result != null) { - return result == deleted ? Optional.ofNullable(null) : Optional.of(result); - } - self = self.parent; - } while (self != null); - return Optional.empty(); + AbstractUnitOfWork self = this; + do { + Object result = self.statementCache.get(key); + if (result != null) { + return result == deleted ? Optional.ofNullable(null) : Optional.of(result); + } + self = self.parent; + } while (self != null); + return Optional.empty(); } @Override public Optional cacheLookup(List facets) { String tableName = CacheUtil.schemaName(facets); - Optional result = Optional.empty(); + Optional result = Optional.empty(); for (Facet facet : facets) { if (!facet.fixed()) { String columnName = facet.name() + "==" + facet.value(); @@ -257,12 +257,12 @@ public abstract class AbstractUnitOfWork @Override public void cacheEvict(String key) { - statementCache.remove(key); + statementCache.remove(key); } @Override public void cacheDelete(String key) { - statementCache.replace(key, deleted); + statementCache.replace(key, deleted); } @Override @@ -303,7 +303,7 @@ public abstract class AbstractUnitOfWork @Override public Object cacheUpdate(String key, Object value) { - return statementCache.replace(key, value); + return statementCache.replace(key, value); } @Override @@ -377,7 +377,6 @@ public abstract class AbstractUnitOfWork if (LOG.isInfoEnabled()) { LOG.info(logTimers("aborted")); } - } return new PostCommitFunction(this, null, null, false); @@ -502,7 +501,7 @@ public abstract class AbstractUnitOfWork } public boolean isDone() { - return aborted || committed; + return aborted || committed; } public String describeConflicts() { diff --git a/src/main/java/net/helenus/core/Filter.java b/src/main/java/net/helenus/core/Filter.java index e41fbbc..fc5534f 100644 --- a/src/main/java/net/helenus/core/Filter.java +++ b/src/main/java/net/helenus/core/Filter.java @@ -15,9 +15,8 @@ */ package net.helenus.core; -import java.util.Objects; - import com.datastax.driver.core.querybuilder.Clause; +import java.util.Objects; import net.helenus.core.reflect.HelenusPropertyNode; import net.helenus.mapping.MappingUtil; import net.helenus.mapping.value.ColumnValuePreparer; diff --git a/src/main/java/net/helenus/core/Helenus.java b/src/main/java/net/helenus/core/Helenus.java index 625c80e..7971568 100644 --- a/src/main/java/net/helenus/core/Helenus.java +++ b/src/main/java/net/helenus/core/Helenus.java @@ -33,8 +33,10 @@ import net.helenus.support.HelenusMappingException; public final class Helenus { - private static final ConcurrentMap, Object> dslCache = new ConcurrentHashMap, Object>(); - private static final ConcurrentMap, Metadata> metadataForEntity = new ConcurrentHashMap, Metadata>(); + private static final ConcurrentMap, Object> dslCache = + new ConcurrentHashMap, Object>(); + private static final ConcurrentMap, Metadata> metadataForEntity = + new ConcurrentHashMap, Metadata>(); private static final Set sessions = new HashSet(); private static volatile HelenusSettings settings = new DefaultHelenusSettings(); private static volatile HelenusSession singleton; @@ -80,7 +82,7 @@ public final class Helenus { } public static SessionInitializer init(Session session, String keyspace) { - return new SessionInitializer(session, keyspace); + return new SessionInitializer(session, keyspace); } public static SessionInitializer init(Session session) { diff --git a/src/main/java/net/helenus/core/HelenusSession.java b/src/main/java/net/helenus/core/HelenusSession.java index cb19047..79ef069 100644 --- a/src/main/java/net/helenus/core/HelenusSession.java +++ b/src/main/java/net/helenus/core/HelenusSession.java @@ -100,7 +100,8 @@ public class HelenusSession extends AbstractSessionOperations implements Closeab this.showCql = showCql; this.showValues = showValues; this.printStream = printStream; - this.sessionRepository = sessionRepositoryBuilder == null ? null : sessionRepositoryBuilder.build(); + this.sessionRepository = + sessionRepositoryBuilder == null ? null : sessionRepositoryBuilder.build(); this.executor = executor; this.dropSchemaOnClose = dropSchemaOnClose; this.defaultConsistencyLevel = consistencyLevel; diff --git a/src/main/java/net/helenus/core/SessionInitializer.java b/src/main/java/net/helenus/core/SessionInitializer.java index 0d37d21..5904494 100644 --- a/src/main/java/net/helenus/core/SessionInitializer.java +++ b/src/main/java/net/helenus/core/SessionInitializer.java @@ -15,6 +15,15 @@ */ package net.helenus.core; +import brave.Tracer; +import com.codahale.metrics.MetricRegistry; +import com.datastax.driver.core.CodecRegistry; +import com.datastax.driver.core.ConsistencyLevel; +import com.datastax.driver.core.KeyspaceMetadata; +import com.datastax.driver.core.Session; +import com.datastax.driver.core.TableMetadata; +import com.datastax.driver.core.UserType; +import com.google.common.util.concurrent.MoreExecutors; import java.io.IOException; import java.io.PrintStream; import java.util.ArrayDeque; @@ -27,16 +36,6 @@ import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.function.Consumer; - -import brave.Tracer; -import com.codahale.metrics.MetricRegistry; -import com.datastax.driver.core.CodecRegistry; -import com.datastax.driver.core.ConsistencyLevel; -import com.datastax.driver.core.KeyspaceMetadata; -import com.datastax.driver.core.Session; -import com.datastax.driver.core.TableMetadata; -import com.datastax.driver.core.UserType; -import com.google.common.util.concurrent.MoreExecutors; import net.helenus.core.cache.SessionCache; import net.helenus.core.reflect.DslExportable; import net.helenus.mapping.HelenusEntity; @@ -71,17 +70,17 @@ public final class SessionInitializer extends AbstractSessionOperations { private SessionCache sessionCache = null; SessionInitializer(Session session, String keyspace) { - this.session = session; - this.usingKeyspace = keyspace; - if (session != null) { - this.sessionRepository = new SessionRepositoryBuilder(session); - } + this.session = session; + this.usingKeyspace = keyspace; + if (session != null) { + this.sessionRepository = new SessionRepositoryBuilder(session); + } } SessionInitializer(Session session) { - this.session = Objects.requireNonNull(session, "empty session"); - this.usingKeyspace = session.getLoggedKeyspace(); // can be null - this.sessionRepository = new SessionRepositoryBuilder(session); + this.session = Objects.requireNonNull(session, "empty session"); + this.usingKeyspace = session.getLoggedKeyspace(); // can be null + this.sessionRepository = new SessionRepositoryBuilder(session); } @Override @@ -325,15 +324,14 @@ public final class SessionInitializer extends AbstractSessionOperations { DslExportable dsl = (DslExportable) Helenus.dsl(iface); if (session != null) { - dsl.setCassandraMetadataForHelenusSession(session.getCluster().getMetadata()); + dsl.setCassandraMetadataForHelenusSession(session.getCluster().getMetadata()); } if (sessionRepository != null) { - sessionRepository.add(dsl); + sessionRepository.add(dsl); } }); - if (session == null) - return; + if (session == null) return; TableOperations tableOps = new TableOperations(this, dropUnusedColumns, dropUnusedIndexes); UserTypeOperations userTypeOps = new UserTypeOperations(this, dropUnusedColumns); diff --git a/src/main/java/net/helenus/core/UnitOfWork.java b/src/main/java/net/helenus/core/UnitOfWork.java index f5d70e6..898558c 100644 --- a/src/main/java/net/helenus/core/UnitOfWork.java +++ b/src/main/java/net/helenus/core/UnitOfWork.java @@ -62,12 +62,15 @@ public interface UnitOfWork extends AutoCloseable { void addFuture(CompletableFuture future); Optional cacheLookup(String key); + Optional cacheLookup(List facets); Object cacheUpdate(String key, Object value); + Object cacheUpdate(Object pojo, List facets); void cacheEvict(String key); + List cacheEvict(List facets); public void cacheDelete(String key); diff --git a/src/main/java/net/helenus/core/operation/BatchOperation.java b/src/main/java/net/helenus/core/operation/BatchOperation.java index 41763ec..4eb0c7b 100644 --- a/src/main/java/net/helenus/core/operation/BatchOperation.java +++ b/src/main/java/net/helenus/core/operation/BatchOperation.java @@ -35,7 +35,7 @@ public class BatchOperation extends Operation { public BatchOperation(AbstractSessionOperations sessionOperations) { super(sessionOperations); - batch = new BatchStatement(); + batch = new BatchStatement(); } public void add(AbstractOperation operation) { @@ -51,8 +51,8 @@ public class BatchOperation extends Operation { } private long captureTimestampMsec() { - // Java 9: Instant.now().truncatedTo( ChronoUnit.MICROSECONDS ); - return TimeUnit.NANOSECONDS.convert(System.nanoTime(), TimeUnit.MICROSECONDS); + // Java 9: Instant.now().truncatedTo( ChronoUnit.MICROSECONDS ); + return TimeUnit.NANOSECONDS.convert(System.nanoTime(), TimeUnit.MICROSECONDS); } public BatchOperation logged() { @@ -134,7 +134,7 @@ public class BatchOperation extends Operation { s.append("BATCH "); if (batch.getDefaultTimestamp() > -9223372036854775808L) { - s.append("USING TIMESTAMP ").append(String.valueOf(batch.getDefaultTimestamp())).append(" "); + s.append("USING TIMESTAMP ").append(String.valueOf(batch.getDefaultTimestamp())).append(" "); } s.append( operations diff --git a/src/test/java/net/helenus/test/integration/core/ContextInitTest.java b/src/test/java/net/helenus/test/integration/core/ContextInitTest.java index c7c0c9a..ba6471d 100644 --- a/src/test/java/net/helenus/test/integration/core/ContextInitTest.java +++ b/src/test/java/net/helenus/test/integration/core/ContextInitTest.java @@ -17,7 +17,6 @@ package net.helenus.test.integration.core; import net.helenus.core.Helenus; import net.helenus.core.HelenusSession; -import net.helenus.core.SessionInitializer; import net.helenus.core.UnitOfWork; import net.helenus.test.integration.build.AbstractEmbeddedCassandraTest; import org.junit.Test; @@ -34,8 +33,8 @@ public class ContextInitTest extends AbstractEmbeddedCassandraTest { @Test public void testWithNullSession() { - HelenusSession session = Helenus.init(null, "foo").get(); - UnitOfWork uow = session.begin(); - uow.abort(); + HelenusSession session = Helenus.init(null, "foo").get(); + UnitOfWork uow = session.begin(); + uow.abort(); } }