public static PreparedStatement newInstance(PreparedStatement stmt, Log statementLog, int queryStack) { InvocationHandler handler = new PreparedStatementLogger(stmt, statementLog, queryStack); ClassLoader cl = PreparedStatement.class.getClassLoader(); return (PreparedStatement) Proxy.newProxyInstance(cl, new Class[]{PreparedStatement.class, CallableStatement.class}, handler); }
if (isDebugEnabled()) { debug("Parameters: " + getParameterValueString(), true); clearColumnInfo(); if ("executeQuery".equals(method.getName())) { ResultSet rs = (ResultSet) method.invoke(statement, params); setColumn(params[0], null); } else { setColumn(params[0], params[1]); int updateCount = (Integer) method.invoke(statement, params); if (updateCount != -1) { debug(" Updates: " + updateCount, false);
if (EXECUTE_METHODS.contains(method.getName())) { if (log.isDebugEnabled()) { log.debug("==> Executing: " + removeBreakingWhitespace(sql)); log.debug("==> Parameters: " + getParameterValueString()); clearColumnInfo(); if ("executeQuery".equals(method.getName())) { ResultSet rs = (ResultSet) method.invoke(statement, params); setColumn(params[0], null); } else { setColumn(params[0], params[1]);
stmt = PreparedStatementLogger.newInstance(stmt, statementLog, queryStack); return stmt; } else if ("prepareCall".equals(method.getName())) { stmt = PreparedStatementLogger.newInstance(stmt, statementLog, queryStack); return stmt; } else if ("createStatement".equals(method.getName())) {
stmt = PreparedStatementLogger.newInstance(stmt, statementLog, queryStack); return stmt; } else if ("prepareCall".equals(method.getName())) { stmt = PreparedStatementLogger.newInstance(stmt, statementLog, queryStack); return stmt; } else if ("createStatement".equals(method.getName())) {
if (isDebugEnabled()) { debug("Parameters: " + getParameterValueString(), true); clearColumnInfo(); if ("executeQuery".equals(method.getName())) { ResultSet rs = (ResultSet) method.invoke(statement, params); setColumn(params[0], null); } else { setColumn(params[0], params[1]); int updateCount = (Integer) method.invoke(statement, params); if (updateCount != -1) { debug(" Updates: " + updateCount, false);
/** * Creates a logging version of a PreparedStatement * * @param stmt - the statement * @param statementLog - the statement log * @param queryStack - the query stack * @return - the proxy */ public static PreparedStatement newInstance(PreparedStatement stmt, Log statementLog, int queryStack) { InvocationHandler handler = new PreparedStatementLogger(stmt, statementLog, queryStack); ClassLoader cl = PreparedStatement.class.getClassLoader(); return (PreparedStatement) Proxy.newProxyInstance(cl, new Class[]{PreparedStatement.class, CallableStatement.class}, handler); }
public Object invoke(Object proxy, Method method, Object[] params) throws Throwable { try { if ("prepareStatement".equals(method.getName())) { PreparedStatement stmt = (PreparedStatement) method.invoke(connection, params); stmt = PreparedStatementLogger.newInstance(stmt, (String) params[0]); return stmt; } else if ("prepareCall".equals(method.getName())) { PreparedStatement stmt = (PreparedStatement) method.invoke(connection, params); stmt = PreparedStatementLogger.newInstance(stmt, (String) params[0]); return stmt; } else if ("createStatement".equals(method.getName())) { Statement stmt = (Statement) method.invoke(connection, params); stmt = StatementLogger.newInstance(stmt); return stmt; } else if ("close".equals(method.getName())) { if (log.isDebugEnabled()) { log.debug("xxx Connection Closed"); } return method.invoke(connection, params); } else { return method.invoke(connection, params); } } catch (Throwable t) { Throwable t1 = ExceptionUtil.unwrapThrowable(t); log.error("Error calling Connection." + method.getName() + ':', t1); throw t1; } }
/** * Creates a logging version of a PreparedStatement * * @param stmt - the statement * @param sql - the sql statement * @return - the proxy */ public static PreparedStatement newInstance(PreparedStatement stmt, String sql) { InvocationHandler handler = new PreparedStatementLogger(stmt, sql); ClassLoader cl = PreparedStatement.class.getClassLoader(); return (PreparedStatement) Proxy.newProxyInstance(cl, new Class[]{PreparedStatement.class, CallableStatement.class}, handler); }