diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchDepthComparator.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchDepthComparator.java
index 7606599d9..66756b4a1 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchDepthComparator.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchDepthComparator.java
@@ -12,7 +12,7 @@ import java.util.Comparator;
* keys from inserts. These values are required to persist the 'detail' beans.
*
*/
-class BatchDepthComparator implements Comparator, Serializable {
+final class BatchDepthComparator implements Comparator, Serializable {
private static final long serialVersionUID = 264611821665757991L;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchDepthOrder.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchDepthOrder.java
index 3817f43bd..bb0b4bcfa 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchDepthOrder.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchDepthOrder.java
@@ -6,7 +6,7 @@ import java.util.Map;
/**
* Helper to determine batch execution order for BatchedBeanHolders.
*/
-class BatchDepthOrder {
+final class BatchDepthOrder {
private final Map map = new HashMap<>();
@@ -22,7 +22,7 @@ class BatchDepthOrder {
map.clear();
}
- private static class Counter {
+ private static final class Counter {
int count;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedBeanHolder.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedBeanHolder.java
index db43c32d0..db6d85a35 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedBeanHolder.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedBeanHolder.java
@@ -18,7 +18,7 @@ import java.util.ArrayList;
* executed. The lowest depth is executed first.
*
*/
-class BatchedBeanHolder {
+final class BatchedBeanHolder {
/**
* The owning queue.
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedPstmt.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedPstmt.java
index 0a764e35b..9afd4d6e8 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedPstmt.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedPstmt.java
@@ -20,7 +20,7 @@ import java.util.List;
* This can hold CallableStatements as well.
*
*/
-public class BatchedPstmt implements SpiProfileTransactionEvent {
+public final class BatchedPstmt implements SpiProfileTransactionEvent {
private static final Logger log = LoggerFactory.getLogger(BatchedPstmt.class);
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedPstmtHolder.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedPstmtHolder.java
index 4bd892bd4..50ed43900 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedPstmtHolder.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/BatchedPstmtHolder.java
@@ -15,7 +15,7 @@ import java.util.Map;
* statements of a single 'depth' at any given time.
*
*/
-public class BatchedPstmtHolder {
+public final class BatchedPstmtHolder {
/**
* A Map of the statements using a String key. This is used so that the same
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/Binder.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/Binder.java
index 600a7e21a..bec0223d0 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/Binder.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/Binder.java
@@ -31,7 +31,7 @@ import java.util.List;
/**
* Binds bean values to a PreparedStatement.
*/
-public class Binder {
+public final class Binder {
private static final Logger logger = LoggerFactory.getLogger(Binder.class);
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DeleteIdRequest.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DeleteIdRequest.java
index e086e2630..760d9eda3 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DeleteIdRequest.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DeleteIdRequest.java
@@ -5,7 +5,7 @@ import io.ebean.Transaction;
import io.ebean.event.BeanDeleteIdRequest;
import io.ebeaninternal.api.SpiEbeanServer;
-class DeleteIdRequest implements BeanDeleteIdRequest {
+final class DeleteIdRequest implements BeanDeleteIdRequest {
private final EbeanServer server;
private final Transaction transaction;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DeleteUnloadedForeignKeys.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DeleteUnloadedForeignKeys.java
index c3065b779..1c258b5bb 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DeleteUnloadedForeignKeys.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DeleteUnloadedForeignKeys.java
@@ -21,7 +21,7 @@ import java.util.List;
* helps fetch the foreign keys and delete the appropriate rows.
*
*/
-class DeleteUnloadedForeignKeys {
+final class DeleteUnloadedForeignKeys {
private final List> propList = new ArrayList<>(4);
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DmlUtil.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DmlUtil.java
index 46ce61d33..c7693f6e8 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DmlUtil.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DmlUtil.java
@@ -4,7 +4,7 @@ package io.ebeaninternal.server.persist;
/**
* Utility object with helper methods for DML.
*/
-public class DmlUtil {
+public final class DmlUtil {
/**
* Return true if the value is null or a Numeric 0 (for primitive int's and long's) or Option empty.
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeCallableSql.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeCallableSql.java
index 2c01fcd31..fc2c1e0e5 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeCallableSql.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeCallableSql.java
@@ -13,10 +13,9 @@ import java.sql.SQLException;
/**
* Handles the execution of CallableSql requests.
*/
-class ExeCallableSql {
+final class ExeCallableSql {
private final Binder binder;
-
private final PstmtFactory pstmtFactory;
ExeCallableSql(Binder binder) {
@@ -28,9 +27,7 @@ class ExeCallableSql {
* execute the CallableSql requests.
*/
public int execute(PersistRequestCallableSql request) {
-
boolean batchThisRequest = request.isBatchThisRequest();
-
CallableStatement cstmt = null;
try {
cstmt = bindStmt(request, batchThisRequest);
@@ -58,18 +55,15 @@ class ExeCallableSql {
private CallableStatement bindStmt(PersistRequestCallableSql request, boolean batchThisRequest) throws SQLException {
-
request.startBind(batchThisRequest);
SpiCallableSql callableSql = request.getCallableSql();
SpiTransaction t = request.getTransaction();
String sql = callableSql.getSql();
-
BindParams bindParams = callableSql.getBindParams();
// process named parameters if required
sql = BindParamsParser.parse(bindParams, sql);
-
boolean logSql = request.isLogSql();
CallableStatement cstmt;
@@ -90,9 +84,7 @@ class ExeCallableSql {
if (!bindParams.isEmpty()) {
bindLog = binder.bind(bindParams, cstmt, t.getInternalConnection());
}
-
request.setBindLog(bindLog);
-
// required to read OUT params later
request.setBound(bindParams, cstmt);
return cstmt;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeOrmUpdate.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeOrmUpdate.java
index d79a4d66f..ee9ffad23 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeOrmUpdate.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeOrmUpdate.java
@@ -15,15 +15,11 @@ import java.sql.SQLException;
/**
* Executes the UpdateSql requests.
*/
-class ExeOrmUpdate {
+final class ExeOrmUpdate {
private final Binder binder;
-
private final PstmtFactory pstmtFactory;
- /**
- * Create with a given binder.
- */
ExeOrmUpdate(Binder binder) {
this.pstmtFactory = new PstmtFactory();
this.binder = binder;
@@ -33,9 +29,7 @@ class ExeOrmUpdate {
* Execute the orm update request.
*/
public int execute(PersistRequestOrmUpdate request) {
-
boolean batchThisRequest = request.isBatchThisRequest();
-
PreparedStatement pstmt = null;
try {
pstmt = bindStmt(request, batchThisRequest);
@@ -68,13 +62,11 @@ class ExeOrmUpdate {
* Convert bean and property names to db table and columns.
*/
private String translate(PersistRequestOrmUpdate request, String sql) {
-
BeanDescriptor> descriptor = request.getBeanDescriptor();
return descriptor.convertOrmUpdateToSql(sql);
}
private PreparedStatement bindStmt(PersistRequestOrmUpdate request, boolean batchThisRequest) throws SQLException {
-
request.startBind(batchThisRequest);
SpiUpdate> ormUpdate = request.getOrmUpdate();
SpiTransaction t = request.getTransaction();
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeUpdateSql.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeUpdateSql.java
index cea7560c9..75627671f 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeUpdateSql.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/ExeUpdateSql.java
@@ -16,15 +16,11 @@ import java.sql.SQLException;
/**
* Executes the UpdateSql requests.
*/
-class ExeUpdateSql {
+final class ExeUpdateSql {
private final Binder binder;
-
private final PstmtFactory pstmtFactory;
- /**
- * Create with a given binder.
- */
ExeUpdateSql(Binder binder) {
this.binder = binder;
this.pstmtFactory = new PstmtFactory();
@@ -34,14 +30,10 @@ class ExeUpdateSql {
* Execute the UpdateSql request.
*/
public int execute(PersistRequestUpdateSql request) {
-
boolean batchThisRequest = request.isBatchThisRequest();
-
PreparedStatement pstmt = null;
try {
-
pstmt = bindStmt(request, batchThisRequest);
-
if (batchThisRequest) {
pstmt.addBatch();
// return -1 to indicate batch mode
@@ -66,7 +58,6 @@ class ExeUpdateSql {
}
private void readGeneratedKeys(PreparedStatement stmt, PersistRequestUpdateSql request) {
-
ResultSet resultSet = null;
try {
resultSet = stmt.getGeneratedKeys();
@@ -82,7 +73,6 @@ class ExeUpdateSql {
}
private PreparedStatement bindStmt(PersistRequestUpdateSql request, boolean batchThisRequest) throws SQLException {
-
request.startBind(batchThisRequest);
SpiSqlUpdate updateSql = request.getUpdateSql();
SpiTransaction t = request.getTransaction();
@@ -121,7 +111,6 @@ class ExeUpdateSql {
private void determineType(String word1, String word2, String word3, PersistRequestUpdateSql request) {
-
if (word1.equalsIgnoreCase("UPDATE")) {
request.setType(SqlType.SQL_UPDATE, word2);
@@ -137,7 +126,6 @@ class ExeUpdateSql {
}
private void parseUpdate(String sql, PersistRequestUpdateSql request) {
-
int[] pos = new int[3];
int spaceCount = 0;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeContext.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeContext.java
index bdd6ce855..e3cb0d5e2 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeContext.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeContext.java
@@ -10,7 +10,7 @@ import java.util.List;
/**
* Context used for merge processing.
*/
-class MergeContext {
+final class MergeContext {
private final SpiEbeanServer server;
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeHandler.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeHandler.java
index b2d53ba40..3e09a44f9 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeHandler.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeHandler.java
@@ -24,7 +24,7 @@ import java.util.regex.Pattern;
/**
* Drives the merge processing.
*/
-class MergeHandler {
+final class MergeHandler {
private static final Pattern PATH_SPLIT = Pattern.compile("\\.");
@@ -33,10 +33,8 @@ class MergeHandler {
private final EntityBean bean;
private final MergeOptions options;
private final SpiTransaction transaction;
-
private final Map nodes = new LinkedHashMap<>();
-
MergeHandler(SpiEbeanServer server, BeanDescriptor> desc, EntityBean bean, MergeOptions options, SpiTransaction transaction) {
this.server = server;
this.desc = desc;
@@ -49,7 +47,6 @@ class MergeHandler {
* Fetch the Ids for the graph and use them to determine inserts, updates and deletes for the merge paths.
*/
List merge() {
-
Set paths = options.paths();
if (desc.isIdGeneratedValue() && paths.isEmpty() && !options.isClientGeneratedIds()) {
// just do a single insert or update based on Id value present
@@ -76,7 +73,6 @@ class MergeHandler {
for (MergeNode value : nodes.values()) {
value.merge(request);
}
-
return context.getDeletedBeans();
}
@@ -86,9 +82,7 @@ class MergeHandler {
* We use the Id values to determine what are inserts, updates and deletes as part of the merge.
*/
private EntityBean fetchOutline(Set paths) {
-
Query> query = server.find(desc.getBeanType());
-
query.setBeanCacheMode(CacheMode.OFF);
query.setPersistenceContextScope(PersistenceContextScope.QUERY);
query.setId(desc.getId(bean));
@@ -126,14 +120,12 @@ class MergeHandler {
}
private MergeNode addRootLevelNode(String rootPath) {
-
MergeNode node = createMergeNode(rootPath, desc, rootPath);
nodes.put(rootPath, node);
return node;
}
static MergeNode createMergeNode(String fullPath, BeanDescriptor> targetDesc, String path) {
-
BeanProperty prop = targetDesc.getBeanProperty(path);
if (!(prop instanceof BeanPropertyAssoc)) {
throw new PersistenceException("merge path [" + path + "] is not a ToMany or ToOne property of " + targetDesc.getFullName());
diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeNode.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeNode.java
index fa2dc398e..cc5ebeaba 100644
--- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeNode.java
+++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/MergeNode.java
@@ -33,7 +33,7 @@ abstract class MergeNode {
/**
* Add a child node given the fullPath and relative path.
*/
- MergeNode addChild(String fullPath, String path) {
+ final MergeNode addChild(String fullPath, String path) {
MergeNode childNode = MergeHandler.createMergeNode(fullPath, targetDescriptor, path);
if (children == null) {
children = new LinkedHashMap<>();
@@ -45,7 +45,7 @@ abstract class MergeNode {
/**
* Return the node given the relative path.
*/
- MergeNode get(String path) {
+ final MergeNode get(String path) {
if (children != null) {
return children.get(path);
}
@@ -55,8 +55,7 @@ abstract class MergeNode {
/**
* Return the outline beans as a map keyed by Id values.
*/
- Map