diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/BeanRequest.java b/src/main/java/com/avaje/ebeaninternal/server/core/BeanRequest.java index 49a11d1ae..87fe4d378 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/BeanRequest.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/BeanRequest.java @@ -128,17 +128,17 @@ public abstract class BeanRequest { return transaction.getInternalConnection(); } - /** - * Return true if SQL should be logged for this transaction. - */ - public boolean isLogSql() { - return transaction.isLogSql(); - } - - /** - * Return true if SUMMARY information should be logged for this transaction. - */ - public boolean isLogSummary() { - return transaction.isLogSummary(); - } + /** + * Return true if SQL should be logged for this transaction. + */ + public boolean isLogSql() { + return transaction.isLogSql(); + } + + /** + * Return true if SUMMARY information should be logged for this transaction. + */ + public boolean isLogSummary() { + return transaction.isLogSummary(); + } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/OrmQueryRequest.java b/src/main/java/com/avaje/ebeaninternal/server/core/OrmQueryRequest.java index 94f045241..d26fae2a5 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/OrmQueryRequest.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/OrmQueryRequest.java @@ -362,9 +362,7 @@ public final class OrmQueryRequest extends BeanRequest implements BeanQueryRe * Log the SQL if the logLevel is appropriate. */ public void logSql(String sql) { - if (transaction.isLogSql()) { - transaction.logSql(sql); - } + transaction.logSql(sql); } /** diff --git a/src/main/java/com/avaje/ebeaninternal/server/lib/util/Str.java b/src/main/java/com/avaje/ebeaninternal/server/lib/util/Str.java new file mode 100644 index 000000000..4da7c2a4c --- /dev/null +++ b/src/main/java/com/avaje/ebeaninternal/server/lib/util/Str.java @@ -0,0 +1,38 @@ +package com.avaje.ebeaninternal.server.lib.util; + +/** + * String utility for adding strings together. + *

+ * Predicts a decent buffer size to append the strings into. + */ +public class Str { + + /** + * Append strings together. + */ + public static String add(String s0, String s1, String ... args) { + + // determine a decent buffer size + int len = 16 + s0.length() + s1.length(); + for (int i = 0; i < args.length; i++) { + len += args[i].length(); + } + + // append all the strings into the buffer + StringBuilder sb = new StringBuilder(len); + sb.append(s0).append(s1); + for (int i = 0; i < args.length; i++) { + sb.append(args[i]); + } + return sb.toString(); + } + + /** + * Append two strings together. + */ + public static String add(String s0, String s1) { + StringBuilder sb = new StringBuilder(s0.length() + s1.length() + 5); + return sb.append(s0).append(s1).toString(); + } + +} diff --git a/src/main/java/com/avaje/ebeaninternal/server/persist/dml/DmlHandler.java b/src/main/java/com/avaje/ebeaninternal/server/persist/dml/DmlHandler.java index bf12d7851..10656e8aa 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/persist/dml/DmlHandler.java +++ b/src/main/java/com/avaje/ebeaninternal/server/persist/dml/DmlHandler.java @@ -15,6 +15,7 @@ import com.avaje.ebeaninternal.api.SpiTransaction; import com.avaje.ebeaninternal.server.core.PersistRequestBean; import com.avaje.ebeaninternal.server.core.PstmtBatch; import com.avaje.ebeaninternal.server.deploy.BeanProperty; +import com.avaje.ebeaninternal.server.lib.util.Str; import com.avaje.ebeaninternal.server.persist.BatchedPstmt; import com.avaje.ebeaninternal.server.persist.BatchedPstmtHolder; import com.avaje.ebeaninternal.server.persist.dmlbind.BindableRequest; @@ -56,7 +57,7 @@ public abstract class DmlHandler implements PersistHandler, BindableRequest { this.transaction = persistRequest.getTransaction(); this.logLevelSql = transaction.isLogSql(); if (logLevelSql) { - this.bindLog = new StringBuilder(); + this.bindLog = new StringBuilder(50); } else { this.bindLog = null; } @@ -137,7 +138,7 @@ public abstract class DmlHandler implements PersistHandler, BindableRequest { protected void logSql(String sql) { if (logLevelSql) { if (TransactionManager.SQL_LOGGER.isTraceEnabled()) { - sql += "; --bind(" + bindLog + ")"; + sql = Str.add(sql, "; --bind(", bindLog.toString(), ")"); } transaction.logSql(sql); } diff --git a/src/main/java/com/avaje/ebeaninternal/server/query/CQueryEngine.java b/src/main/java/com/avaje/ebeaninternal/server/query/CQueryEngine.java index 02eda4d89..36526b3ed 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/query/CQueryEngine.java +++ b/src/main/java/com/avaje/ebeaninternal/server/query/CQueryEngine.java @@ -14,6 +14,7 @@ import com.avaje.ebean.config.dbplatform.DatabasePlatform; import com.avaje.ebeaninternal.api.BeanIdList; import com.avaje.ebeaninternal.api.SpiQuery; import com.avaje.ebeaninternal.server.core.OrmQueryRequest; +import com.avaje.ebeaninternal.server.lib.util.Str; import com.avaje.ebeaninternal.server.persist.Binder; import com.avaje.ebeaninternal.server.transaction.TransactionManager; @@ -53,7 +54,7 @@ public class CQueryEngine { if (request.isLogSql()) { String logSql = rcQuery.getGeneratedSql(); if (TransactionManager.SQL_LOGGER.isTraceEnabled()) { - logSql += "; --bind("+rcQuery.getBindLog()+")"; + logSql = Str.add(logSql, "; --bind(", rcQuery.getBindLog(), ")"); } request.logSql(logSql); } @@ -88,7 +89,7 @@ public class CQueryEngine { if (request.isLogSql()) { String logSql = rcQuery.getGeneratedSql(); if (TransactionManager.SQL_LOGGER.isTraceEnabled()) { - logSql += "; --bind("+rcQuery.getBindLog()+")"; + logSql= Str.add(logSql, "; --bind(", rcQuery.getBindLog(), ")"); } request.logSql(logSql); } @@ -241,7 +242,7 @@ public class CQueryEngine { String sql = query.getGeneratedSql(); if (TransactionManager.SQL_LOGGER.isTraceEnabled()) { - sql += "; --bind("+query.getBindLog()+")"; + sql= Str.add(sql, "; --bind(", query.getBindLog(), ")"); } query.getTransaction().logSql(sql); } diff --git a/src/main/java/com/avaje/ebeaninternal/server/query/DefaultRelationalQueryEngine.java b/src/main/java/com/avaje/ebeaninternal/server/query/DefaultRelationalQueryEngine.java index b7a9eaa63..e7314a9f0 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/query/DefaultRelationalQueryEngine.java +++ b/src/main/java/com/avaje/ebeaninternal/server/query/DefaultRelationalQueryEngine.java @@ -22,6 +22,7 @@ import com.avaje.ebeaninternal.api.SpiTransaction; import com.avaje.ebeaninternal.server.core.Message; import com.avaje.ebeaninternal.server.core.RelationalQueryEngine; import com.avaje.ebeaninternal.server.core.RelationalQueryRequest; +import com.avaje.ebeaninternal.server.lib.util.Str; import com.avaje.ebeaninternal.server.persist.Binder; import com.avaje.ebeaninternal.server.transaction.TransactionManager; import com.avaje.ebeaninternal.server.type.DataBind; @@ -94,7 +95,7 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine { if (request.isLogSql()) { String logSql = sql; if (TransactionManager.SQL_LOGGER.isTraceEnabled()) { - logSql += "; --bind("+bindLog+")"; + logSql = Str.add(logSql, "; --bind(", bindLog, ")"); } t.logSql(logSql); } diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java index f4a7b03b3..7f22618e2 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java +++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/JdbcTransaction.java @@ -20,6 +20,7 @@ import com.avaje.ebean.bean.PersistenceContext; import com.avaje.ebeaninternal.api.DerivedRelationshipData; import com.avaje.ebeaninternal.api.SpiTransaction; import com.avaje.ebeaninternal.api.TransactionEvent; +import com.avaje.ebeaninternal.server.lib.util.Str; import com.avaje.ebeaninternal.server.persist.BatchControl; import com.avaje.ebeaninternal.server.transaction.TransactionManager.OnQueryOnly; @@ -476,13 +477,13 @@ public class JdbcTransaction implements SpiTransaction { } public void logSql(String msg) { - TransactionManager.SQL_LOGGER.trace(logPrefix+msg); + TransactionManager.SQL_LOGGER.trace(Str.add(logPrefix, msg)); } public void logSummary(String msg) { - TransactionManager.SUM_LOGGER.debug(logPrefix+msg); + TransactionManager.SUM_LOGGER.debug(Str.add(logPrefix, msg)); } - + /** * Return the transaction id. */