You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ma...@apache.org on 2009/09/15 14:35:49 UTC

svn commit: r815298 - in /jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core: config/ util/db/

Author: martijnh
Date: Tue Sep 15 12:35:48 2009
New Revision: 815298

URL: http://svn.apache.org/viewvc?rev=815298&view=rev
Log:
JCR-1456 Database connection pooling

Javadoc.


Modified:
    jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/DataSourceConfig.java
    jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionFactory.java
    jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionHelper.java
    jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DataSourceWrapper.java
    jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DbUtility.java
    jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DerbyConnectionHelper.java
    jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/Oracle10R1ConnectionHelper.java
    jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/OracleConnectionHelper.java
    jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ResultSetWrapper.java

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/DataSourceConfig.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/DataSourceConfig.java?rev=815298&r1=815297&r2=815298&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/DataSourceConfig.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/config/DataSourceConfig.java Tue Sep 15 12:35:48 2009
@@ -25,7 +25,7 @@
 import javax.naming.Context;
 
 /**
- * 
+ * This class contains list of definitions for {@code DataSource} instances.
  */
 public class DataSourceConfig {
 
@@ -64,6 +64,9 @@
         defs.add(def);
     }
 
+    /**
+     * @return the unmodifiable list of the current {@link DataSourceDefinition}s
+     */
     public List<DataSourceDefinition> getDefinitions() {
         return Collections.unmodifiableList(defs);
     }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionFactory.java?rev=815298&r1=815297&r2=815298&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionFactory.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionFactory.java Tue Sep 15 12:35:48 2009
@@ -68,7 +68,7 @@
     /**
      * Registers a number of data sources.
      * 
-     * @param dsc
+     * @param dsc the {@link DataSourceConfig} which contains the configuration
      */
     public static void registerDataSources(DataSourceConfig dsc) throws RepositoryException {
         for (DataSourceDefinition def : dsc.getDefinitions()) {
@@ -98,9 +98,9 @@
     /**
      * Retrieves a configured data source by logical name.
      * 
-     * @param logicalName
-     * @return
-     * @throws RepositoryException
+     * @param logicalName the name of the {@code DataSource}
+     * @return a {@code DataSource}
+     * @throws RepositoryException if there is no {@code DataSource} with the given name
      */
     public static DataSource getDataSource(String logicalName) throws RepositoryException {
         synchronized (lock) {
@@ -113,6 +113,11 @@
         }
     }
 
+    /**
+     * @param logicalName the name of the {@code DataSource}
+     * @return the configured database type
+     * @throws RepositoryException if there is no {@code DataSource} with the given name
+     */
     public static String getDataBaseType(String logicalName) throws RepositoryException {
         synchronized (lock) {
             DataSourceDefinition def = nameToDataSourceDef.get(logicalName);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionHelper.java?rev=815298&r1=815297&r2=815298&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionHelper.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionHelper.java Tue Sep 15 12:35:48 2009
@@ -190,7 +190,6 @@
         if (!inBatchMode) {
             throw new IllegalStateException("not in batch mode");
         }
-        // Invariant: inBatchMode == true && batchConnection != null
         try {
             if (commit) {
                 batchConnection.commit();
@@ -399,7 +398,7 @@
     /**
      * This method is used by all methods of this class that execute SQL statements. This default
      * implementation sets all parameters and unwraps {@link StreamWrapper} instances. Subclasses may override
-     * this method to do something special with the parameters. E.g., the {@code Oracle10R1ConnectionHelper}
+     * this method to do something special with the parameters. E.g., the {@link Oracle10R1ConnectionHelper}
      * overrides it in order to add special blob handling.
      * 
      * @param stmt the {@link PreparedStatement} to execute

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DataSourceWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DataSourceWrapper.java?rev=815298&r1=815297&r2=815298&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DataSourceWrapper.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DataSourceWrapper.java Tue Sep 15 12:35:48 2009
@@ -22,6 +22,11 @@
 
 import javax.sql.DataSource;
 
+/**
+ * This class delegates all calls to the corresponding method on the wrapped {@code DataSource} except for the {@link #getConnection()} method,
+ * which delegates to {@code DataSource#getConnection(String, String)} with the username and password
+ * which are given on construction.
+ */
 public class DataSourceWrapper implements DataSource {
 
     private final DataSource dataSource;
@@ -30,42 +35,74 @@
 
     private final String password;
 
+    /**
+     * @param dataSource the {@code DataSource} to wrap
+     * @param username the username to use
+     * @param password the password to use
+     */
     public DataSourceWrapper(DataSource dataSource, String username, String password) {
         this.dataSource = dataSource;
         this.username = username;
         this.password = password;
     }
 
+    /**
+     * Java 6 method.
+     * 
+     * {@inheritDoc}
+     */
     public boolean isWrapperFor(Class<?> arg0) throws SQLException {
         throw new UnsupportedOperationException("Java 6 method not supported");
     }
 
+    /**
+     * Java 6 method.
+     * 
+     * {@inheritDoc}
+     */
     public <T> T unwrap(Class<T> arg0) throws SQLException {
         throw new UnsupportedOperationException("Java 6 method not supported");
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public Connection getConnection() throws SQLException {
         return dataSource.getConnection(username, password);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public Connection getConnection(String username, String password) throws SQLException {
         return dataSource.getConnection(username, password);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public PrintWriter getLogWriter() throws SQLException {
         return dataSource.getLogWriter();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public int getLoginTimeout() throws SQLException {
         return dataSource.getLoginTimeout();
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public void setLogWriter(PrintWriter out) throws SQLException {
         dataSource.setLogWriter(out);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     public void setLoginTimeout(int seconds) throws SQLException {
         dataSource.setLoginTimeout(seconds);
     }
-
 }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DbUtility.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DbUtility.java?rev=815298&r1=815297&r2=815298&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DbUtility.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DbUtility.java Tue Sep 15 12:35:48 2009
@@ -25,7 +25,7 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * 
+ * This class contains some database utility methods.
  */
 public final class DbUtility {
 

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DerbyConnectionHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DerbyConnectionHelper.java?rev=815298&r1=815297&r2=815298&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DerbyConnectionHelper.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/DerbyConnectionHelper.java Tue Sep 15 12:35:48 2009
@@ -36,8 +36,8 @@
     private static Logger log = LoggerFactory.getLogger(DerbyConnectionHelper.class);
 
     /**
-     * @param dataSrc the {@link DataSource} on which this helper acts
-     * @param block
+     * @param dataSrc the {@code DataSource} on which this helper acts
+     * @param block whether to block on connection loss until the db is up again
      */
     public DerbyConnectionHelper(DataSource dataSrc, boolean block) {
         super(dataSrc, block);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/Oracle10R1ConnectionHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/Oracle10R1ConnectionHelper.java?rev=815298&r1=815297&r2=815298&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/Oracle10R1ConnectionHelper.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/Oracle10R1ConnectionHelper.java Tue Sep 15 12:35:48 2009
@@ -50,8 +50,8 @@
     private Integer modeReadWriteConstant;
 
     /**
-     * @param dataSrc
-     * @param block
+     * @param dataSrc the {@code DataSource} on which this helper acts
+     * @param block whether to block on connection loss until the db is up again
      */
     public Oracle10R1ConnectionHelper(DataSource dataSrc, boolean block) {
         super(dataSrc, block);
@@ -64,6 +64,7 @@
      * @see oracle.sql.BLOB#DURATION_SESSION
      * @see oracle.sql.BLOB#MODE_READWRITE
      */
+    @Override
     public void init() throws Exception {
         super.init();
         // initialize oracle.sql.BLOB class & constants

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/OracleConnectionHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/OracleConnectionHelper.java?rev=815298&r1=815297&r2=815298&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/OracleConnectionHelper.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/OracleConnectionHelper.java Tue Sep 15 12:35:48 2009
@@ -36,13 +36,19 @@
     private static Logger log = LoggerFactory.getLogger(OracleConnectionHelper.class);
 
     /**
-     * @param dataSrc
-     * @param block
+     * @param dataSrc the {@code DataSource} on which this helper acts
+     * @param block whether to block on connection loss until the db is up again
      */
     public OracleConnectionHelper(DataSource dataSrc, boolean block) {
         super(dataSrc, true, block);
     }
 
+    /**
+     * Initializes the helper: checks for valid driver version.
+     * Subclasses that override this method should still call it!
+     * 
+     * @throws Exception on error
+     */
     public void init() throws Exception {
          // check driver version
         Connection connection = dataSource.getConnection();
@@ -70,7 +76,7 @@
      * {@inheritDoc}
      */
     @Override
-    protected void replaceCharacter(StringBuffer escaped, char c) {
+    protected final void replaceCharacter(StringBuffer escaped, char c) {
         escaped.append("_");
     }
 }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ResultSetWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ResultSetWrapper.java?rev=815298&r1=815297&r2=815298&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ResultSetWrapper.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/util/db/ResultSetWrapper.java Tue Sep 15 12:35:48 2009
@@ -35,10 +35,13 @@
     private final ResultSet resultSet;
 
     /**
-     * @param con
-     * @param stmt
-     * @param rs
-     * @return
+     * Creates a new {@code ResultSet} proxy which closes the given {@code Connection} and
+     * {@code Statement} if it is closed.
+     * 
+     * @param con the associated {@code Connection}
+     * @param stmt the associated {@code Statement}
+     * @param rs the {@code ResultSet} which backs the proxy
+     * @return a {@code ResultSet} proxy
      */
     public static final ResultSet newInstance(Connection con, Statement stmt, ResultSet rs) {
         ResultSetWrapper proxy = new ResultSetWrapper(con, stmt, rs);