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]);
}
}