You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/03/31 15:41:17 UTC

karaf git commit: [KARAF-3562] Try to find the JDBC lock table name using upper and lower case in addition of the provided name

Repository: karaf
Updated Branches:
  refs/heads/karaf-3.0.x 1b044c6ad -> d5b0f4afd


[KARAF-3562] Try to find the JDBC lock table name using upper and lower case in addition of the provided name


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/d5b0f4af
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/d5b0f4af
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/d5b0f4af

Branch: refs/heads/karaf-3.0.x
Commit: d5b0f4afdf477dbb0305a0d872e012cc1ba28be0
Parents: 1b044c6
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Tue Mar 31 15:39:50 2015 +0200
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Tue Mar 31 15:39:50 2015 +0200

----------------------------------------------------------------------
 .../apache/karaf/main/lock/DefaultJDBCLock.java | 23 ++++++++++++++------
 .../karaf/main/lock/BaseJDBCLockTest.java       |  6 +++--
 .../src/main/webapp/users-guide/failover.conf   |  3 ++-
 3 files changed, 22 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/d5b0f4af/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
----------------------------------------------------------------------
diff --git a/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java b/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
index aeb0a6a..31bf499 100644
--- a/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
+++ b/main/src/main/java/org/apache/karaf/main/lock/DefaultJDBCLock.java
@@ -18,12 +18,8 @@
  */
 package org.apache.karaf.main.lock;
 
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
+import java.sql.*;
+
 import org.apache.felix.utils.properties.Properties;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -163,8 +159,21 @@ public class DefaultJDBCLock implements Lock {
         ResultSet rs = null;
         boolean schemaExists = false;
         try {
-            rs = getConnection().getMetaData().getTables(null, null, tableName, new String[] {"TABLE"});
+            DatabaseMetaData metadata = getConnection().getMetaData();
+            rs = metadata.getTables(null, null, tableName, new String[] {"TABLE"});
             schemaExists = rs.next();
+            if (schemaExists == false) {
+                // try table name in lower case
+                rs = metadata.getTables(null, null, tableName.toLowerCase(), new String[] {"TABLE"});
+                schemaExists = rs.next();
+            }
+            /*
+            if (schemaExists == false) {
+                // try table name in upper case
+                rs = getConnection().getMetaData().getTables(null, null, tableName.toUpperCase(), new String[] {"TABLE"});
+                schemaExists = rs.next();
+            }
+            */
         } catch (Exception ignore) {
             LOG.log(Level.SEVERE, "Error testing for db table", ignore);
         } finally {

http://git-wip-us.apache.org/repos/asf/karaf/blob/d5b0f4af/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
----------------------------------------------------------------------
diff --git a/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java b/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
index ea8b7c5..d352bf1 100644
--- a/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
+++ b/main/src/test/java/org/apache/karaf/main/lock/BaseJDBCLockTest.java
@@ -89,7 +89,9 @@ public abstract class BaseJDBCLockTest {
         expect(connection.isClosed()).andReturn(false);
         connection.setAutoCommit(false);
         expect(connection.getMetaData()).andReturn(metaData);
-        expect(metaData.getTables((String) isNull(), (String) isNull(), eq("LOCK_TABLE"), aryEq(new String[] {"TABLE"}))).andReturn(resultSet);
+        expect(metaData.getTables((String) isNull(), (String) isNull(), anyString(), aryEq(new String[]{"TABLE"}))).andReturn(resultSet);
+        expect(metaData.getTables((String) isNull(), (String) isNull(), anyString(), aryEq(new String[]{"TABLE"}))).andReturn(resultSet);
+        expect(resultSet.next()).andReturn(false);
         expect(resultSet.next()).andReturn(false);
         resultSet.close();
         expect(connection.isClosed()).andReturn(false);
@@ -110,7 +112,7 @@ public abstract class BaseJDBCLockTest {
     public void initShouldNotCreateTheSchemaIfItAlreadyExists() throws Exception {
         connection.setAutoCommit(false);
         expect(connection.getMetaData()).andReturn(metaData);
-        expect(metaData.getTables((String) isNull(), (String) isNull(), eq("LOCK_TABLE"), aryEq(new String[] {"TABLE"}))).andReturn(resultSet);
+        expect(metaData.getTables((String) isNull(), (String) isNull(), anyString(), aryEq(new String[]{"TABLE"}))).andReturn(resultSet);
         expect(resultSet.next()).andReturn(true);
         resultSet.close();
         

http://git-wip-us.apache.org/repos/asf/karaf/blob/d5b0f4af/manual/src/main/webapp/users-guide/failover.conf
----------------------------------------------------------------------
diff --git a/manual/src/main/webapp/users-guide/failover.conf b/manual/src/main/webapp/users-guide/failover.conf
index 3ad7d1b..c56a7c6 100644
--- a/manual/src/main/webapp/users-guide/failover.conf
+++ b/manual/src/main/webapp/users-guide/failover.conf
@@ -80,7 +80,8 @@ karaf.lock.jdbc.timeout=30
 * {{karaf.lock.jdbc.driver}} property contains the class name of the JDBC driver to use (derby in this example).
 * {{karaf.lock.jdbc.user}} property contains the username to use to connect to the database.
 * {{karaf.lock.jdbc.password}} property contains the password to use to connet to the database.
-* {{karaf.lock.jdbc.table}} property contains the database table to use for the lock.
+* {{karaf.lock.jdbc.table}} property contains the database table to use for the lock. Karaf will first try to find the table as specified in this property,
+  and if not found, it will try the table name in lower and upper case.
 
 {warning}
 Apache Karaf won't start if the JDBC driver is not present in the {{lib/ext}} folder.