jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ju...@apache.org
Subject svn commit: r725306 - in /jackrabbit/sandbox/jackrabbit-jdbc2jcr: ./ src/main/java/org/apache/jackrabbit/jdbc/ src/test/java/org/apache/jackrabbit/jdbc/
Date Wed, 10 Dec 2008 15:01:17 GMT
Author: jukka
Date: Wed Dec 10 07:01:17 2008
New Revision: 725306

URL: http://svn.apache.org/viewvc?rev=725306&view=rev
Log:
jdbc2jcr: First example of a working "full" SQL query over JCR.

Currently this only supports jcr:path over all nt:base nodes (i.e. all nodes). I'll be extending
this to support all node types and/or arbitrary JCR queries.

Added:
    jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLExceptionWithCause.java
  (with props)
    jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLFeatureNotSupportedException.java
  (with props)
    jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/JCRDriverTest.java
  (with props)
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/JCRResultSet.java

Modified: jackrabbit/sandbox/jackrabbit-jdbc2jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/pom.xml?rev=725306&r1=725305&r2=725306&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/pom.xml (original)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/pom.xml Wed Dec 10 07:01:17 2008
@@ -36,6 +36,11 @@
       <version>1.0</version>
     </dependency>
     <dependency>
+      <groupId>commons-dbcp</groupId>
+      <artifactId>commons-dbcp</artifactId>
+      <version>1.2.2</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=725306&r1=725305&r2=725306&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
Wed Dec 10 07:01:17 2008
@@ -1,261 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.jackrabbit.jdbc;
 
 import java.io.File;
 import java.io.IOException;
-import java.sql.Array;
-import java.sql.Blob;
-import java.sql.CallableStatement;
-import java.sql.Clob;
 import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.NClob;
-import java.sql.PreparedStatement;
-import java.sql.SQLClientInfoException;
 import java.sql.SQLException;
-import java.sql.SQLWarning;
-import java.sql.SQLXML;
-import java.sql.Savepoint;
-import java.sql.Statement;
-import java.sql.Struct;
-import java.util.Map;
-import java.util.Properties;
 
+import org.apache.commons.dbcp.DelegatingConnection;
 import org.apache.commons.io.FileUtils;
 
-class JCRConnection implements Connection {
-
-    private final Connection connection;
+class JCRConnection extends DelegatingConnection {
 
     private final File tmp;
 
     public JCRConnection(Connection connection, File tmp) {
-        this.connection = connection;
+        super(connection);
         this.tmp = tmp;
-
-        
     }
 
     public void close() throws SQLException {
-        connection.close();
+        super.close();
         try {
             FileUtils.deleteDirectory(tmp);
         } catch (IOException e) {
-            throw new SQLException("Error removing temporary directory", e);
+            throw new SQLExceptionWithCause(
+                    "Error removing temporary directory", e);
         }
     }
 
-    //----------------------------------------------------< Delegate methods >
-
-    public void clearWarnings() throws SQLException {
-        connection.clearWarnings();
-    }
-
-    public void commit() throws SQLException {
-        connection.commit();
-    }
-
-    public Array createArrayOf(String typeName, Object[] elements)
-            throws SQLException {
-        return connection.createArrayOf(typeName, elements);
-    }
-
-    public Blob createBlob() throws SQLException {
-        return connection.createBlob();
-    }
-
-    public Clob createClob() throws SQLException {
-        return connection.createClob();
-    }
-
-    public NClob createNClob() throws SQLException {
-        return connection.createNClob();
-    }
-
-    public SQLXML createSQLXML() throws SQLException {
-        return connection.createSQLXML();
-    }
-
-    public Statement createStatement() throws SQLException {
-        return connection.createStatement();
-    }
-
-    public Statement createStatement(int resultSetType,
-            int resultSetConcurrency, int resultSetHoldability)
-            throws SQLException {
-        return connection.createStatement(resultSetType, resultSetConcurrency,
-                resultSetHoldability);
-    }
-
-    public Statement createStatement(int resultSetType, int resultSetConcurrency)
-            throws SQLException {
-        return connection.createStatement(resultSetType, resultSetConcurrency);
-    }
-
-    public Struct createStruct(String typeName, Object[] attributes)
-            throws SQLException {
-        return connection.createStruct(typeName, attributes);
-    }
-
-    public boolean getAutoCommit() throws SQLException {
-        return connection.getAutoCommit();
-    }
-
-    public String getCatalog() throws SQLException {
-        return connection.getCatalog();
-    }
-
-    public Properties getClientInfo() throws SQLException {
-        return connection.getClientInfo();
-    }
-
-    public String getClientInfo(String name) throws SQLException {
-        return connection.getClientInfo(name);
-    }
-
-    public int getHoldability() throws SQLException {
-        return connection.getHoldability();
-    }
-
-    public DatabaseMetaData getMetaData() throws SQLException {
-        return connection.getMetaData();
-    }
-
-    public int getTransactionIsolation() throws SQLException {
-        return connection.getTransactionIsolation();
-    }
-
-    public Map<String, Class<?>> getTypeMap() throws SQLException {
-        return connection.getTypeMap();
-    }
-
-    public SQLWarning getWarnings() throws SQLException {
-        return connection.getWarnings();
-    }
-
-    public boolean isClosed() throws SQLException {
-        return connection.isClosed();
-    }
-
-    public boolean isReadOnly() throws SQLException {
-        return connection.isReadOnly();
-    }
-
-    public boolean isValid(int timeout) throws SQLException {
-        return connection.isValid(timeout);
-    }
-
-    public boolean isWrapperFor(Class<?> iface) throws SQLException {
-        return connection.isWrapperFor(iface);
-    }
-
-    public String nativeSQL(String sql) throws SQLException {
-        return connection.nativeSQL(sql);
-    }
-
-    public CallableStatement prepareCall(String sql, int resultSetType,
-            int resultSetConcurrency, int resultSetHoldability)
-            throws SQLException {
-        return connection.prepareCall(sql, resultSetType, resultSetConcurrency,
-                resultSetHoldability);
-    }
-
-    public CallableStatement prepareCall(String sql, int resultSetType,
-            int resultSetConcurrency) throws SQLException {
-        return connection.prepareCall(sql, resultSetType, resultSetConcurrency);
-    }
-
-    public CallableStatement prepareCall(String sql) throws SQLException {
-        return connection.prepareCall(sql);
-    }
-
-    public PreparedStatement prepareStatement(String sql, int resultSetType,
-            int resultSetConcurrency, int resultSetHoldability)
-            throws SQLException {
-        return connection.prepareStatement(sql, resultSetType,
-                resultSetConcurrency, resultSetHoldability);
-    }
-
-    public PreparedStatement prepareStatement(String sql, int resultSetType,
-            int resultSetConcurrency) throws SQLException {
-        return connection.prepareStatement(sql, resultSetType,
-                resultSetConcurrency);
-    }
-
-    public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
-            throws SQLException {
-        return connection.prepareStatement(sql, autoGeneratedKeys);
-    }
-
-    public PreparedStatement prepareStatement(String sql, int[] columnIndexes)
-            throws SQLException {
-        return connection.prepareStatement(sql, columnIndexes);
-    }
-
-    public PreparedStatement prepareStatement(String sql, String[] columnNames)
-            throws SQLException {
-        return connection.prepareStatement(sql, columnNames);
-    }
-
-    public PreparedStatement prepareStatement(String sql) throws SQLException {
-        return connection.prepareStatement(sql);
-    }
-
-    public void releaseSavepoint(Savepoint savepoint) throws SQLException {
-        connection.releaseSavepoint(savepoint);
-    }
-
-    public void rollback() throws SQLException {
-        connection.rollback();
-    }
-
-    public void rollback(Savepoint savepoint) throws SQLException {
-        connection.rollback(savepoint);
-    }
-
-    public void setAutoCommit(boolean autoCommit) throws SQLException {
-        connection.setAutoCommit(autoCommit);
-    }
-
-    public void setCatalog(String catalog) throws SQLException {
-        connection.setCatalog(catalog);
-    }
-
-    public void setClientInfo(Properties properties)
-            throws SQLClientInfoException {
-        connection.setClientInfo(properties);
-    }
-
-    public void setClientInfo(String name, String value)
-            throws SQLClientInfoException {
-        connection.setClientInfo(name, value);
-    }
-
-    public void setHoldability(int holdability) throws SQLException {
-        connection.setHoldability(holdability);
-    }
-
-    public void setReadOnly(boolean readOnly) throws SQLException {
-        connection.setReadOnly(readOnly);
-    }
-
-    public Savepoint setSavepoint() throws SQLException {
-        return connection.setSavepoint();
-    }
-
-    public Savepoint setSavepoint(String name) throws SQLException {
-        return connection.setSavepoint(name);
-    }
-
-    public void setTransactionIsolation(int level) throws SQLException {
-        connection.setTransactionIsolation(level);
-    }
-
-    public void setTypeMap(Map<String, Class<?>> map) throws SQLException {
-        connection.setTypeMap(map);
-    }
-
-    public <T> T unwrap(Class<T> iface) throws SQLException {
-        return connection.unwrap(iface);
-    }
-
 }

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=725306&r1=725305&r2=725306&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
Wed Dec 10 07:01:17 2008
@@ -21,6 +21,7 @@
 import java.sql.Connection;
 import java.sql.DriverPropertyInfo;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.Properties;
 
 import org.apache.derby.jdbc.EmbeddedDriver;
@@ -32,15 +33,32 @@
         try {
             File tmp = File.createTempFile("jcr", "jdbc");
             tmp.delete();
-            tmp.mkdir();
 
-            Properties properties = new Properties(info);
+            Properties properties = new Properties();
             properties.setProperty("create", "true");
-            return new JCRConnection(
-                    super.connect("jdbc:derby:" + tmp.getPath(), properties),
-                    tmp);
+            Connection connection =
+                super.connect("jdbc:derby:" + tmp.getPath(), properties);
+
+            Statement statement = connection.createStatement();
+            try {
+                statement.executeUpdate(
+                        "CREATE FUNCTION jcr_sql( statement VARCHAR(1000) )"
+                        + " RETURNS TABLE ("
+                        + " jcr_path VARCHAR(1000)"
+                        + " ) LANGUAGE JAVA"
+                        + " PARAMETER STYLE DERBY_JDBC_RESULT_SET"
+                        + " NO SQL EXTERNAL NAME"
+                        + " 'org.apache.jackrabbit.jdbc.JCRResultSet.jcrSQL'");
+                statement.executeUpdate(
+                        "CREATE VIEW nt_base AS SELECT * FROM TABLE"
+                        + " (jcr_sql('SELECT jcr:path FROM nt:base')) nodes");
+            } finally {
+                statement.close();
+            }
+            return new JCRConnection(connection, tmp);
         } catch (IOException e) {
-            throw new SQLException("Unable to create temporary directory", e);
+            throw new SQLExceptionWithCause(
+                    "Unable to create temporary directory", e);
         }
     }
 

Modified: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRResultSet.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRResultSet.java?rev=725306&r1=725305&r2=725306&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRResultSet.java
(original)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/JCRResultSet.java
Wed Dec 10 07:01:17 2008
@@ -41,14 +41,24 @@
 
     private Value[] values = null;
 
-    public static ResultSet query(String statement, String language)
+    public static ResultSet jcrQuery(String statement, String language)
             throws RepositoryException {
         return new JCRResultSet(statement, language);
     }
 
+    public static ResultSet jcrXPath(String statement)
+            throws RepositoryException {
+        return jcrQuery(statement, Query.XPATH);
+    }
+
+    public static ResultSet jcrSQL(String statement)
+            throws RepositoryException {
+        return jcrQuery(statement, Query.SQL);
+    }
+
     private JCRResultSet(String statement, String language)
             throws RepositoryException {
-        session = null;
+        session = Fixture.getRepository().login();
 
         QueryManager manager = session.getWorkspace().getQueryManager();
         Query query = manager.createQuery(statement, language);
@@ -352,15 +362,6 @@
         return getNCharacterStream(findColumn(columnLabel));
     }
 
-    public NClob getNClob(int columnIndex) throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public NClob getNClob(String columnLabel) throws SQLException {
-        return getNClob(findColumn(columnLabel));
-    }
-
     public String getNString(int columnIndex) throws SQLException {
         // TODO Auto-generated method stub
         return null;
@@ -404,24 +405,6 @@
         return 0;
     }
 
-    public RowId getRowId(int columnIndex) throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public RowId getRowId(String columnLabel) throws SQLException {
-        return getRowId(findColumn(columnLabel));
-    }
-
-    public SQLXML getSQLXML(int columnIndex) throws SQLException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public SQLXML getSQLXML(String columnLabel) throws SQLException {
-        return getSQLXML(findColumn(columnLabel));
-    }
-
     public short getShort(int columnIndex) throws SQLException {
         return (short) getLong(columnIndex);
     }
@@ -909,17 +892,6 @@
     public void updateNCharacterStream(String columnLabel, Reader reader,
             long length) throws SQLException {
         // TODO Auto-generated method stub
-
-    }
-
-    public void updateNClob(int columnIndex, NClob clob) throws SQLException {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void updateNClob(String columnLabel, NClob clob) throws SQLException {
-        // TODO Auto-generated method stub
-
     }
 
     public void updateNClob(int columnIndex, Reader reader) throws SQLException {
@@ -1004,28 +976,6 @@
 
     }
 
-    public void updateRowId(int columnIndex, RowId x) throws SQLException {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void updateRowId(String columnLabel, RowId x) throws SQLException {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void updateSQLXML(int columnIndex, SQLXML xmlObject)
-            throws SQLException {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void updateSQLXML(String columnLabel, SQLXML xmlObject)
-            throws SQLException {
-        // TODO Auto-generated method stub
-
-    }
-
     public void updateShort(int columnIndex, short x) throws SQLException {
         // TODO Auto-generated method stub
 

Added: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLExceptionWithCause.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLExceptionWithCause.java?rev=725306&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLExceptionWithCause.java
(added)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLExceptionWithCause.java
Wed Dec 10 07:01:17 2008
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.jdbc;
+
+import java.sql.SQLException;
+
+public class SQLExceptionWithCause extends SQLException {
+
+    public SQLExceptionWithCause(String message, Throwable cause) {
+        super(message);
+        initCause(cause);
+    }
+
+}

Propchange: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLExceptionWithCause.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLFeatureNotSupportedException.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLFeatureNotSupportedException.java?rev=725306&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLFeatureNotSupportedException.java
(added)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLFeatureNotSupportedException.java
Wed Dec 10 07:01:17 2008
@@ -0,0 +1,11 @@
+package org.apache.jackrabbit.jdbc;
+
+import java.sql.SQLException;
+
+public class SQLFeatureNotSupportedException extends SQLException {
+
+    public SQLFeatureNotSupportedException(String message) {
+        super(message);
+    }
+
+}

Propchange: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/main/java/org/apache/jackrabbit/jdbc/SQLFeatureNotSupportedException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 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=725306&view=auto
==============================================================================
--- jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/JCRDriverTest.java
(added)
+++ jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/JCRDriverTest.java
Wed Dec 10 07:01:17 2008
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.jdbc;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.util.Properties;
+
+import org.testng.annotations.Test;
+
+public class JCRDriverTest {
+
+    @Test
+    public void testJCRDriver() throws Exception {
+        Connection connection =
+            new JCRDriver().connect("jdbc:jcr:...", new Properties());
+        try {
+            Statement statement = connection.createStatement();
+            try {
+                ResultSet rs = statement.executeQuery(
+                        "SELECT a.jcr_path as path, COUNT(*) as children"
+                        + " FROM nt_base AS a JOIN nt_base AS b"
+                        + " ON (a.jcr_path || '/' = SUBSTR(b.jcr_path, 1, LENGTH(a.jcr_path)
+ 1))"
+                        + " GROUP BY a.jcr_path");
+                try {
+                    while (rs.next()) {
+                        System.out.println(rs.getString(1) + " has " + rs.getInt(2) + " descendants");
+                    }
+                } finally {
+                    rs.close();
+                }
+            } finally {
+                statement.close();
+            }
+        } finally {
+            connection.close();
+        }
+    }
+
+}

Propchange: jackrabbit/sandbox/jackrabbit-jdbc2jcr/src/test/java/org/apache/jackrabbit/jdbc/JCRDriverTest.java
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message