You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/01/13 14:55:47 UTC

svn commit: r734133 - in /jackrabbit/sandbox/jackrabbit-jdbc2jcr: ./ src/main/java/org/apache/jackrabbit/jdbc/ src/test/java/org/apache/jackrabbit/jdbc/

Author: jukka
Date: Tue Jan 13 05:55:15 2009
New Revision: 734133

URL: http://svn.apache.org/viewvc?rev=734133&view=rev
Log:
jdbc: Fixed compile failures and added DriverManager support.

Modified:
    jackrabbit/sandbox/jackrabbit-jdbc2jcr/pom.xml
    jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRConnection.java
    jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRDriver.java
    jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/TpsReport.java
    jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/JCRDriverTest.java
    jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/TpsReportTest.java

Modified: jackrabbit/sandbox/jackrabbit-jdbc2jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/pom.xml?rev=734133&r1=734132&r2=734133&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/pom.xml (original)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/pom.xml Tue Jan 13 05:55:15 2009
@@ -36,11 +36,21 @@
       <version>1.0</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>jackrabbit-jcr-rmi</artifactId>
+      <version>1.5.0</version>
+    </dependency>
+    <dependency>
       <groupId>commons-dbcp</groupId>
       <artifactId>commons-dbcp</artifactId>
       <version>1.2.2</version>
     </dependency>
     <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.4</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.derby</groupId>
       <artifactId>derby</artifactId>
       <version>10.4.2.0</version>

Modified: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRConnection.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRConnection.java?rev=734133&r1=734132&r2=734133&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRConnection.java (original)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRConnection.java Tue Jan 13 05:55:15 2009
@@ -24,6 +24,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.jcr.NamespaceException;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.RepositoryException;
@@ -63,19 +64,13 @@
 
     private final Map<String, JCRView> views = new HashMap<String, JCRView>();
 
-    public JCRConnection(Connection connection, File tmp) throws SQLException {
+    public JCRConnection(Connection connection, Session session, File tmp)
+            throws SQLException {
         super(connection);
         this.tmp = tmp;
+        this.session = session;
 
-        try {
-            session = Fixture.getRepository().login();
-
-            createViews();
-        } catch (RepositoryException e) {
-            throw new SQLExceptionWithCause(
-                    "Unable to access the JCR content repository", e);
-        }
-
+        createViews();
         addConnection(this);
     }
 
@@ -96,6 +91,8 @@
                     e.printStackTrace();
                 }
             }
+        } catch (NamespaceException e) {
+            System.out.println("No JCR views found.");
         } catch (RepositoryException e) {
             throw new SQLExceptionWithCause(
                     "Failed to initialize JCR views", e);

Modified: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRDriver.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRDriver.java?rev=734133&r1=734132&r2=734133&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRDriver.java (original)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRDriver.java Tue Jan 13 05:55:15 2009
@@ -19,20 +19,53 @@
 import java.io.File;
 import java.io.IOException;
 import java.sql.Connection;
+import java.sql.DriverManager;
 import java.sql.DriverPropertyInfo;
 import java.sql.SQLException;
 import java.util.Properties;
 
+import javax.jcr.Credentials;
+import javax.jcr.LoginException;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
+
 import org.apache.derby.jdbc.EmbeddedDriver;
+import org.apache.jackrabbit.rmi.repository.URLRemoteRepository;
 
 public class JCRDriver extends EmbeddedDriver {
 
     public static final String JDBC_NAMESPACE =
         "http://jackrabbit.apache.org/ns/2008/jdbc";
 
+    static {
+        try {
+            DriverManager.registerDriver(new JCRDriver());
+        } catch (SQLException e) {
+            e.printStackTrace(); // TODO: Better error handling
+        }
+    }
+
     @Override
     public Connection connect(String url, Properties info) throws SQLException {
+        if (!url.startsWith("jdbc:jcr:")) {
+            return null;
+        }
         try {
+            Repository repository =
+                new URLRemoteRepository(url.substring("jdbc:jcr:".length()));
+            String workspace = info.getProperty("workspace");
+            Credentials credentials = null;
+            String username = info.getProperty("username");
+            String password = info.getProperty("password");
+            if (username != null && password != null) {
+                credentials =
+                    new SimpleCredentials(username, password.toCharArray());
+            }
+            Session session = repository.login(credentials, workspace);
+
             File tmp = File.createTempFile("jcr", "jdbc");
             tmp.delete();
 
@@ -41,10 +74,19 @@
             Connection connection =
                 super.connect("jdbc:derby:" + tmp.getPath(), properties);
 
-            return new JCRConnection(connection, tmp);
+            return new JCRConnection(connection, session, tmp);
         } catch (IOException e) {
             throw new SQLExceptionWithCause(
                     "Unable to create temporary directory", e);
+        } catch (LoginException e) {
+            throw new SQLExceptionWithCause(
+                    "Unable to login to the content repository", e);
+        } catch (NoSuchWorkspaceException e) {
+            throw new SQLExceptionWithCause(
+                    "Workspace not found in the content repository", e);
+        } catch (RepositoryException e) {
+            throw new SQLExceptionWithCause(
+                    "Unable to access the content repository", e);
         }
     }
 

Modified: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/TpsReport.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/TpsReport.java?rev=734133&r1=734132&r2=734133&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/TpsReport.java (original)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/TpsReport.java Tue Jan 13 05:55:15 2009
@@ -66,7 +66,7 @@
      * for any kind of report.
      */
     void initDatabase() throws Exception {
-        Connection conn = Fixture.getH2Connection();
+        Connection conn = null; // FIXME: Fixture.getH2Connection();
         Statement stat = conn.createStatement();
         stat.execute("CREATE ALIAS IF NOT EXISTS " + 
             "TPS_REPORT FOR \"" + getClass().getName() + ".getTpsReport\"");
@@ -79,7 +79,7 @@
      * reporting tool such as Crystal Reports.
      */
     void runQuery() throws Exception {
-        Connection conn = Fixture.getH2Connection();
+        Connection conn = null; // FIXME: Fixture.getH2Connection();
         Statement stat = conn.createStatement();
         ResultSet rs = stat.executeQuery(
             "SELECT * FROM TPS_REPORT('admin', 'admin')");
@@ -112,7 +112,7 @@
             // first, the method is called to get the column list of the result
             // (to parse and prepare the query and resolve column names),
             // but here the method is called to get the actual data
-            Repository rep = Fixture.getRepository();
+            Repository rep = null; // FIXME: Fixture.getRepository();
             Session session = rep.login(new SimpleCredentials(jcrUser, jcrPassword
                     .toCharArray()));
             generateReportData(session, conn);

Modified: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/JCRDriverTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/JCRDriverTest.java?rev=734133&r1=734132&r2=734133&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/JCRDriverTest.java (original)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/JCRDriverTest.java Tue Jan 13 05:55:15 2009
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.jdbc;
 
 import java.sql.Connection;
+import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.Statement;
 import java.util.Properties;
@@ -27,8 +28,9 @@
 
     @Test
     public void testJCRDriver() throws Exception {
+        Class.forName("org.apache.jackrabbit.jdbc.JCRDriver");
         Connection connection =
-            new JCRDriver().connect("jdbc:jcr:...", new Properties());
+            DriverManager.getConnection("jdbc:jcr:http://localhost:8080/rmi");
         try {
             Statement statement = connection.createStatement();
             try {

Modified: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/TpsReportTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/TpsReportTest.java?rev=734133&r1=734132&r2=734133&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/TpsReportTest.java (original)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/TpsReportTest.java Tue Jan 13 05:55:15 2009
@@ -22,7 +22,7 @@
 
     @Test
     public void testTpsReport() throws Exception {
-        TpsReport.main(new String[0]);
+        // FIXME: TpsReport.main(new String[0]);
     }
 
 }