You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/08/14 13:30:06 UTC

[2/3] incubator-ignite git commit: IGNITE-843: Read JDBC driver class from driver jar file.

IGNITE-843: Read JDBC driver class from driver jar file.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/14287f69
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/14287f69
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/14287f69

Branch: refs/heads/ignite-843
Commit: 14287f6963d135afe314586f733217a3b69edd05
Parents: 98cadbf
Author: AKuznetsov <ak...@gridgain.com>
Authored: Fri Aug 14 18:26:28 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Fri Aug 14 18:26:28 2015 +0700

----------------------------------------------------------------------
 .../handlers/DatabaseMetadataExtractor.java     | 39 ++++++++++++++++++--
 1 file changed, 35 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/14287f69/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java
----------------------------------------------------------------------
diff --git a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java
index 8f6f5b2..57f6720 100644
--- a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java
+++ b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/DatabaseMetadataExtractor.java
@@ -22,6 +22,7 @@ import org.apache.ignite.agent.remote.*;
 import org.apache.ignite.schema.parser.*;
 
 import java.io.*;
+import java.net.*;
 import java.sql.*;
 import java.util.*;
 
@@ -68,11 +69,30 @@ public class DatabaseMetadataExtractor {
     }
 
     /**
+     * Wrapper class for later to be transformed to JSON and send to Web Control Center.
+     */
+    private static class JdbcDriver {
+        /** */
+        private final String jdbcDriverClass;
+        /** */
+        private final String jdbcDriverJar;
+
+        /**
+         * @param jdbcDriverClass Optional JDBC driver class.
+         * @param jdbcDriverJar File name of driver jar file.
+         */
+        public JdbcDriver(String jdbcDriverClass, String jdbcDriverJar) {
+            this.jdbcDriverClass = jdbcDriverClass;
+            this.jdbcDriverJar = jdbcDriverJar;
+        }
+    }
+
+    /**
      * @return Drivers in drivers folder
      * @see AgentConfiguration#driversFolder
      */
     @Remote
-    public List<String> availableDrivers() {
+    public List<JdbcDriver> availableDrivers() {
         if (driversFolder == null)
             return Collections.emptyList();
 
@@ -81,11 +101,22 @@ public class DatabaseMetadataExtractor {
         if (list == null)
             return Collections.emptyList();
 
-        List<String> res = new ArrayList<>();
+        List<JdbcDriver> res = new ArrayList<>();
 
         for (String fileName : list) {
-            if (fileName.endsWith(".jar"))
-                res.add(fileName);
+            if (fileName.endsWith(".jar")) {
+                try {
+                    String spec = "jar:file:/" + driversFolder + '/' + fileName + "!/META-INF/services/java.sql.Driver";
+
+                    URL url = new URL(spec.replace('\\', '/'));
+
+                    try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) {
+                        res.add(new JdbcDriver(reader.readLine(), fileName));
+                    }
+                } catch (IOException ignored) {
+                    res.add(new JdbcDriver(null, fileName));
+                }
+            }
         }
 
         return res;