You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2014/01/27 13:22:59 UTC
svn commit: r1561653 -
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingPreparedSqlStatement.java
Author: dblevins
Date: Mon Jan 27 12:22:59 2014
New Revision: 1561653
URL: http://svn.apache.org/r1561653
Log:
some debug code -- disabled and only can be enabled by hardcoding currently
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingPreparedSqlStatement.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingPreparedSqlStatement.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingPreparedSqlStatement.java?rev=1561653&r1=1561652&r2=1561653&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingPreparedSqlStatement.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingPreparedSqlStatement.java Mon Jan 27 12:22:59 2014
@@ -16,12 +16,15 @@
*/
package org.apache.openejb.resource.jdbc.logging;
+import org.apache.openejb.util.Join;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
+import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
+import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -45,10 +48,25 @@ public class LoggingPreparedSqlStatement
final String mtdName = method.getName();
final boolean execute = mtdName.startsWith("execute");
+ final boolean debug = false;
+ if (debug){
+ LOGGER.info(String.format("PreparedStatement.%s(%s)", method.getName(),
+ (args == null)?"":
+ Join.join(", ", args)
+ ));
+ if (execute) {
+ logDebug();
+ }
+ }
+
final TimeWatcherExecutor.TimerWatcherResult result = TimeWatcherExecutor.execute(method, delegate, args, execute);
if (mtdName.startsWith("set") && args.length >= 2 && (args[0].getClass().equals(Integer.TYPE) || args[0].getClass().equals(Integer.class))) {
- parameters.add(new Parameter(mtdName.substring(3), parameterIndex, (Integer) args[0], args[1]));
+ final Parameter param = new Parameter(mtdName.substring(3), parameterIndex, (Integer) args[0], args[1]);
+
+ if (debug) logParam(param);
+
+ parameters.add(param);
} else if (execute) {
String str = sql;
if (str.contains("?")) {
@@ -103,6 +121,37 @@ public class LoggingPreparedSqlStatement
return result.getResult();
}
+ private void logDebug() {
+ try {
+ LOGGER.info("SQL " +sql);
+ for (Parameter parameter : parameters) {
+ logParam(parameter);
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void logParam(Parameter parameter) throws SQLException {
+ logParam(this.delegate.getParameterMetaData(), parameter);
+ }
+
+ private void logParam(ParameterMetaData md, Parameter parameter) throws SQLException {
+ final int i = parameter.key;
+ final String format = String.format(" - PARAM index=%s, type%s, typeName=%s, className=%s, nullable=%s, mode=%s, precision=%s, value=%s",
+ i,
+ md.getParameterType(i),
+ md.getParameterTypeName(i),
+ md.getParameterClassName(i),
+ md.isNullable(i),
+ md.getParameterMode(i),
+ md.getPrecision(i),
+ parameter.value
+ );
+
+ LOGGER.info(format);
+ }
+
protected static class Parameter implements Comparable<Parameter> {
private final String type;
private final int batchIndex;