Author: rmannibucau
Date: Tue Jul 24 11:42:56 2012
New Revision: 1364986

URL: http://svn.apache.org/viewvc?rev=1364986&view=rev
Log:
hsqlservice not linked to commons dbcp

Modified:
    
openejb/branches/openejb-pool/server/openejb-hsql/src/main/java/org/apache/openejb/server/hsql/HsqlService.java

Modified: 
openejb/branches/openejb-pool/server/openejb-hsql/src/main/java/org/apache/openejb/server/hsql/HsqlService.java
URL: 
http://svn.apache.org/viewvc/openejb/branches/openejb-pool/server/openejb-hsql/src/main/java/org/apache/openejb/server/hsql/HsqlService.java?rev=1364986&r1=1364985&r2=1364986&view=diff
==============================================================================
--- 
openejb/branches/openejb-pool/server/openejb-hsql/src/main/java/org/apache/openejb/server/hsql/HsqlService.java
 (original)
+++ 
openejb/branches/openejb-pool/server/openejb-hsql/src/main/java/org/apache/openejb/server/hsql/HsqlService.java
 Tue Jul 24 11:42:56 2012
@@ -17,7 +17,6 @@
  */
 package org.apache.openejb.server.hsql;
 
-import org.apache.commons.dbcp.BasicDataSource;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.resource.jdbc.plugin.HsqldbDataSourcePlugin;
 import org.apache.openejb.server.SelfManaging;
@@ -27,7 +26,7 @@ import org.apache.openejb.spi.ContainerS
 import org.hsqldb.Database;
 import org.hsqldb.DatabaseManager;
 import org.hsqldb.Server;
-import org.hsqldb.jdbcDriver;
+import org.hsqldb.persist.HsqlDatabaseProperties;
 import org.hsqldb.persist.HsqlProperties;
 import org.hsqldb.server.ServerConfiguration;
 import org.hsqldb.server.ServerConstants;
@@ -35,10 +34,14 @@ import org.hsqldb.server.ServerConstants
 import javax.naming.Binding;
 import javax.naming.NameNotFoundException;
 import javax.naming.NamingEnumeration;
+import javax.sql.DataSource;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.Socket;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Properties;
@@ -110,9 +113,26 @@ public class HsqlService implements Serv
                 Set<String> dbnames = new TreeSet<String>();
                 for (Binding binding : Collections.list(bindings)) {
                     Object value = binding.getObject();
-                    if (value instanceof BasicDataSource) {
-                        BasicDataSource jdbc = (BasicDataSource) value;
-                        String path = getPath(jdbc);
+                    if (value instanceof DataSource) {
+                        DataSource jdbc = (DataSource) value;
+                        Connection connection = null;
+                        String path = null;
+                        try {
+                            connection = jdbc.getConnection();
+                            DatabaseMetaData meta = connection.getMetaData();
+                            path = getPath(meta.getDriverName(), 
meta.getURL());
+                        } catch (Throwable t) {
+                            continue;
+                        } finally {
+                            if (connection != null) {
+                                try {
+                                    connection.close();
+                                } catch (SQLException sqlEx) {
+                                    // no-op
+                                }
+                            }
+                        }
+
                         if (path != null) {
                             if (dbnames.size() > 9) {
                                 throw new ServiceException("Hsql Server can 
only host 10 database instances");
@@ -150,24 +170,20 @@ public class HsqlService implements Serv
         }
     }
 
-    private String getPath(BasicDataSource jdbc) {
+    private String getPath(final String driver, final String url) {
         // is this connectoion using the hsql driver?
-        if (!jdbcDriver.class.getName().equals(jdbc.getDriverClassName())) {
+        if (!HsqlDatabaseProperties.PRODUCT_NAME.equals(driver)) {
             return null;
         }
 
-        String url = jdbc.getUrl();
-
         // is this a hsql url?
         if (url == null || !url.startsWith("jdbc:hsqldb:")) {
             return null;
         }
 
-        // resolve the relative path
-        url = HsqldbDataSourcePlugin.toAbsolutePath(url);
-
+        // resolve the relative path and
         // hack off the jdbc:hsqldb stuff
-        String path = url.substring("jdbc:hsqldb:".length());
+        String path = 
HsqldbDataSourcePlugin.toAbsolutePath(url).substring("jdbc:hsqldb:".length());
 
         // is this a connection to a local file, mem, or res database?
         if (!path.startsWith("file:") && !path.startsWith("mem:") && 
path.startsWith("res:")) {


Reply via email to