You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2015/11/10 10:35:07 UTC

svn commit: r1713599 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/rdb/ test/java/org/apache/jackrabbit/oak/plugins/document/rdb/

Author: reschke
Date: Tue Nov 10 09:35:07 2015
New Revision: 1713599

URL: http://svn.apache.org/viewvc?rev=1713599&view=rev
Log:
OAK-3605: RDBBlob/DocumentStore: reduce class complexity (WIP)

Move non-connection related methods out of RDBConnectionHandler

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java Tue Nov 10 09:35:07 2015
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeResultSet;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+
 import java.io.Closeable;
 import java.io.IOException;
 import java.security.MessageDigest;
@@ -84,7 +87,7 @@ public class RDBBlobStore extends Cachin
                         stmt = null;
                         con.commit();
                     } catch (SQLException ex) {
-                        this.ch.closeStatement(stmt);
+                        closeStatement(stmt);
                         LOG.debug("attempting to drop: " + tname);
                     }
                 } catch (SQLException ex) {
@@ -186,7 +189,7 @@ public class RDBBlobStore extends Cachin
                     con.commit();
                     tablesPresent.add(tableName);
                 } catch (SQLException ex) {
-                    this.ch.closeStatement(checkStatement);
+                    closeStatement(checkStatement);
  
                     // table does not appear to exist
                     con.rollback();
@@ -226,7 +229,7 @@ public class RDBBlobStore extends Cachin
 
             this.callStack = LOG.isDebugEnabled() ? new Exception("call stack of RDBBlobStore creation") : null;
         } finally {
-            this.ch.closeStatement(createStatement);
+            closeStatement(createStatement);
             this.ch.closeConnection(con);
         }
     }
@@ -420,7 +423,7 @@ public class RDBBlobStore extends Cachin
             prep.executeUpdate();
             prep.close();
         } finally {
-            this.ch.closeStatement(prep);
+            closeStatement(prep);
             con.commit();
             this.ch.closeConnection(con);
         }
@@ -470,10 +473,10 @@ public class RDBBlobStore extends Cachin
             minLastModified = 0;
             return count;
         } finally {
-            this.ch.closeResultSet(rs);
-            this.ch.closeStatement(prepCheck);
-            this.ch.closeStatement(prepDelMeta);
-            this.ch.closeStatement(prepDelData);
+            closeResultSet(rs);
+            closeStatement(prepCheck);
+            closeStatement(prepDelMeta);
+            closeStatement(prepDelData);
             con.commit();
             this.ch.closeConnection(con);
         }
@@ -522,13 +525,9 @@ public class RDBBlobStore extends Cachin
 
             count = prepMeta.executeUpdate();
             prepData.execute();
-            prepMeta.close();
-            prepMeta = null;
-            prepData.close();
-            prepData = null;
         } finally {
-            this.ch.closeStatement(prepMeta);
-            this.ch.closeStatement(prepData);
+            closeStatement(prepMeta);
+            closeStatement(prepData);
             con.commit();
             this.ch.closeConnection(con);
         }
@@ -612,8 +611,8 @@ public class RDBBlobStore extends Cachin
                     rs = null;
                     return !results.isEmpty();
                 } finally {
-                    this.ch.closeResultSet(rs);
-                    this.ch.closeStatement(prep);
+                    closeResultSet(rs);
+                    closeStatement(prep);
                     connection.commit();
                     this.ch.closeConnection(connection);
                 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java Tue Nov 10 09:35:07 2015
@@ -18,7 +18,6 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -112,42 +111,6 @@ public class RDBConnectionHandler implem
     }
 
     /**
-     * Closes a {@link Statement}, logging potential problems.
-     * @return null
-     */
-    public <T extends Statement> T closeStatement(@CheckForNull T stmt) {
-        if (stmt != null) {
-            try {
-                stmt.close();
-            } catch (SQLException ex) {
-                LOG.debug("Closing statement", ex);
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Closes a {@link ResultSet}, logging potential problems.
-     * 
-     * @return null
-     */
-    public ResultSet closeResultSet(@CheckForNull ResultSet rs) {
-        if (rs != null) {
-            try {
-                rs.close();
-            } catch (SQLException ex) {
-                LOG.debug("Closing result set", ex);
-            }
-        }
-
-        return null;
-    }
-
-    public boolean isClosed() {
-        return this.ds == null;
-    }
-
-    /**
      * Return current schema name or {@code null} when unavailable
      */
     @CheckForNull
@@ -160,12 +123,17 @@ public class RDBConnectionHandler implem
         }
     }
 
+    public boolean isClosed() {
+        return this.ds == null;
+    }
+
     @Override
     public void close() throws IOException {
         this.ds = null;
         this.closedTime = System.currentTimeMillis();
     }
 
+    @Nonnull
     private DataSource getDataSource() throws IllegalStateException {
         DataSource result = this.ds;
         if (result == null) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java Tue Nov 10 09:35:07 2015
@@ -18,6 +18,8 @@ package org.apache.jackrabbit.oak.plugin
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.apache.jackrabbit.oak.plugins.document.UpdateUtils.checkConditions;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeResultSet;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -342,8 +344,8 @@ public class RDBDocumentStore implements
             LOG.error("", ex);
             throw new DocumentStoreException(ex);
         } finally {
-            this.ch.closeResultSet(rs);
-            this.ch.closeStatement(stmt);
+            closeResultSet(rs);
+            closeStatement(stmt);
             this.ch.closeConnection(connection);
         }
     }
@@ -416,7 +418,7 @@ public class RDBDocumentStore implements
                     } catch (SQLException ex) {
                         LOG.debug("attempting to drop: " + tname, ex);
                     } finally {
-                        this.ch.closeStatement(stmt);
+                        closeStatement(stmt);
                     }
                 } catch (SQLException ex) {
                     LOG.debug("attempting to drop: " + tname, ex);
@@ -565,7 +567,7 @@ public class RDBDocumentStore implements
                 con.commit();
             }
             finally {
-                this.ch.closeStatement(stmt);
+                closeStatement(stmt);
             }
         }
 
@@ -715,7 +717,7 @@ public class RDBDocumentStore implements
             // well it was best-effort
             return "";
         } finally {
-            this.ch.closeResultSet(rs);
+            closeResultSet(rs);
         }
     }
 
@@ -786,9 +788,9 @@ public class RDBDocumentStore implements
             }
         }
         finally {
-            this.ch.closeResultSet(checkResultSet);
-            this.ch.closeStatement(checkStatement);
-            this.ch.closeStatement(creatStatement);
+            closeResultSet(checkResultSet);
+            closeStatement(checkStatement);
+            closeStatement(creatStatement);
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java Tue Nov 10 09:35:07 2015
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeResultSet;
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.PreparedStatement;
@@ -96,8 +99,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();
@@ -162,8 +165,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();
@@ -208,8 +211,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();
@@ -264,8 +267,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();
@@ -325,8 +328,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java Tue Nov 10 09:35:07 2015
@@ -18,8 +18,10 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.sql.Types;
 import java.util.ArrayList;
 import java.util.List;
@@ -27,13 +29,18 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.TreeMap;
 
+import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
+import org.slf4j.LoggerFactory;
+
 /**
  * Convenience methods dealing with JDBC specifics.
  */
 public class RDBJDBCTools {
 
+    private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(RDBJDBCTools.class);
+
     protected static String jdbctype(String jdbcurl) {
         if (jdbcurl == null) {
             return null;
@@ -202,4 +209,35 @@ public class RDBJDBCTools {
             return "";
         }
     }
+
+    /**
+     * Closes a {@link Statement}, logging potential problems.
+     * @return null
+     */
+    protected static <T extends Statement> T closeStatement(@CheckForNull T stmt) {
+        if (stmt != null) {
+            try {
+                stmt.close();
+            } catch (SQLException ex) {
+                LOG.debug("Closing statement", ex);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Closes a {@link ResultSet}, logging potential problems.
+     * @return null
+     */
+    protected static ResultSet closeResultSet(@CheckForNull ResultSet rs) {
+        if (rs != null) {
+            try {
+                rs.close();
+            } catch (SQLException ex) {
+                LOG.debug("Closing result set", ex);
+            }
+        }
+
+        return null;
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java?rev=1713599&r1=1713598&r2=1713599&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java Tue Nov 10 09:35:07 2015
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
+import static org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+
 import java.io.IOException;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
@@ -40,10 +42,8 @@ public class RDBBlobStoreFriend {
             prepDelMeta = con.prepareStatement("delete from " + ds.tnMeta + " where ID = ?");
             prepDelMeta.setString(1, id);
             prepDelMeta.execute();
-            prepDelMeta.close();
-            prepDelMeta = null;
         } finally {
-            ds.ch.closeStatement(prepDelMeta);
+            closeStatement(prepDelMeta);
             con.commit();
             ds.ch.closeConnection(con);
         }