This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit fd9e2de68282884c3d2f19d19bd0c12cfd32e9d0
Author: Benoit Tellier <[email protected]>
AuthorDate: Thu May 7 16:09:06 2020 +0700

    JAMES-3140 Enable easily printing executed Cassandra statements
    
    This is helping a lot writing instrumented tests for Cassandra, and allow
    easy retrieval of the statements to interact with.
    
    I chose System output for it to be visible easily by default in the test
    console, without modifying logging configuration.
---
 .../james/backends/cassandra/TestingSession.java   | 36 ++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java
 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java
index c8a7a54..f591286 100644
--- 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java
+++ 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java
@@ -21,6 +21,7 @@ package org.apache.james.backends.cassandra;
 
 import java.util.Map;
 
+import com.datastax.driver.core.BoundStatement;
 import com.datastax.driver.core.CloseFuture;
 import com.datastax.driver.core.Cluster;
 import com.datastax.driver.core.PreparedStatement;
@@ -28,16 +29,23 @@ import com.datastax.driver.core.RegularStatement;
 import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.ResultSetFuture;
 import com.datastax.driver.core.Session;
+import com.datastax.driver.core.SimpleStatement;
 import com.datastax.driver.core.Statement;
 import com.google.common.util.concurrent.ListenableFuture;
 
 public class TestingSession implements Session {
     private final Session delegate;
     private volatile Scenario scenario;
+    private volatile boolean printStatements;
 
     public TestingSession(Session delegate) {
         this.delegate = delegate;
         this.scenario = Scenario.NOTHING;
+        this.printStatements = false;
+    }
+
+    public void printStatements() {
+        printStatements = true;
     }
 
     public void registerScenario(Scenario scenario) {
@@ -65,46 +73,74 @@ public class TestingSession implements Session {
 
     @Override
     public ResultSet execute(String query) {
+        printStatement(query);
         return delegate.execute(query);
     }
 
     @Override
     public ResultSet execute(String query, Object... values) {
+        printStatement(query);
         return delegate.execute(query, values);
     }
 
     @Override
     public ResultSet execute(String query, Map<String, Object> values) {
+        printStatement(query);
         return delegate.execute(query, values);
     }
 
     @Override
     public ResultSet execute(Statement statement) {
+        printStatement(statement);
         return delegate.execute(statement);
     }
 
     @Override
     public ResultSetFuture executeAsync(String query) {
+        printStatement(query);
         return delegate.executeAsync(query);
     }
 
     @Override
     public ResultSetFuture executeAsync(String query, Object... values) {
+        printStatement(query);
         return delegate.executeAsync(query, values);
     }
 
     @Override
     public ResultSetFuture executeAsync(String query, Map<String, Object> 
values) {
+        printStatement(query);
         return delegate.executeAsync(query, values);
     }
 
     @Override
     public ResultSetFuture executeAsync(Statement statement) {
+        printStatement(statement);
         return scenario
             .getCorrespondingBehavior(statement)
             .execute(delegate, statement);
     }
 
+    private void printStatement(String query) {
+        if (printStatements) {
+            System.out.println("Executing: " + query);
+        }
+    }
+
+    private void printStatement(Statement statement) {
+        if (printStatements) {
+            if (statement instanceof BoundStatement) {
+                BoundStatement boundStatement = (BoundStatement) statement;
+                System.out.println("Executing: " + 
boundStatement.preparedStatement().getQueryString());
+            } else if (statement instanceof SimpleStatement) {
+                SimpleStatement simpleStatement = (SimpleStatement) statement;
+                System.out.println("Executing: " + 
simpleStatement.getQueryString());
+            } else {
+                System.out.println("Executing: " + statement);
+            }
+        }
+    }
+
     @Override
     public PreparedStatement prepare(String query) {
         return delegate.prepare(query);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to