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;