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/19 13:02:52 UTC
svn commit: r735671 -
/jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRDriver.java
Author: jukka
Date: Mon Jan 19 04:02:51 2009
New Revision: 735671
URL: http://svn.apache.org/viewvc?rev=735671&view=rev
Log:
jdbc2jcr: Support repository access through RMI (both http and rmiregistry) and JNDI.
Modified:
jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRDriver.java
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=735671&r1=735670&r2=735671&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 Mon Jan 19 04:02:51 2009
@@ -18,6 +18,7 @@
import java.io.File;
import java.io.IOException;
+import java.net.MalformedURLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.DriverPropertyInfo;
@@ -31,8 +32,11 @@
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
import org.apache.derby.jdbc.EmbeddedDriver;
+import org.apache.jackrabbit.rmi.repository.RMIRemoteRepository;
import org.apache.jackrabbit.rmi.repository.URLRemoteRepository;
public class JCRDriver extends EmbeddedDriver {
@@ -48,6 +52,26 @@
}
}
+ private Repository getRepository(String url) throws SQLException {
+ if (url.startsWith("http://") || url.startsWith("https://")) {
+ try {
+ return new URLRemoteRepository(url);
+ } catch (MalformedURLException e) {
+ throw new SQLExceptionWithCause("Invalid URL: " + url, e);
+ }
+ } else if (url.startsWith("rmi://")) {
+ return new RMIRemoteRepository(url.substring(4));
+ } else if (url.startsWith("jndi://")) {
+ try {
+ return (Repository) new InitialContext().lookup(url.substring(7));
+ } catch (NamingException e) {
+ throw new SQLExceptionWithCause("Name not found: " + url, e);
+ }
+ } else {
+ throw new SQLException("Unknown JCR connect URL: " + url);
+ }
+ }
+
@Override
public Connection connect(String url, Properties info) throws SQLException {
if (!url.startsWith("jdbc:jcr:")) {
@@ -55,7 +79,7 @@
}
try {
Repository repository =
- new URLRemoteRepository(url.substring("jdbc:jcr:".length()));
+ getRepository(url.substring("jdbc:jcr:".length()));
String workspace = info.getProperty("workspace");
Credentials credentials = null;
String username = info.getProperty("username");