You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2005/08/31 17:58:22 UTC
svn commit: r265517 - in /incubator/jackrabbit/trunk/contrib/db-persistence:
./ applications/test/ applications/test/workspaces/default/
applications/test/workspaces/test/
src/java/org/apache/jackrabbit/core/state/db/
Author: stefan
Date: Wed Aug 31 08:58:14 2005
New Revision: 265517
URL: http://svn.apache.org/viewcvs?rev=265517&view=rev
Log:
added support for Derby (embedded)
changed test configuration to use Derby instead of MySQL
Added:
incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/DerbyPersistenceManager.java (with props)
incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/derby.ddl
Modified:
incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/repository.xml
incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/default/workspace.xml
incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/test/workspace.xml
incubator/jackrabbit/trunk/contrib/db-persistence/project.xml
Modified: incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/repository.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/repository.xml?rev=265517&r1=265516&r2=265517&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/repository.xml (original)
+++ incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/repository.xml Wed Aug 31 08:58:14 2005
@@ -166,16 +166,14 @@
class: FQN of class implementing the FileSystem interface
-->
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
- <param name="path" value="${wsp.home}/data"/>
+ <param name="path" value="${wsp.home}"/>
</FileSystem>
<!--
persistence manager of the workspace:
class: FQN of class implementing the PersistenceManager interface
-->
- <PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
- <param name="driver" value="com.mysql.jdbc.Driver"/>
- <param name="url" value="jdbc:mysql:///test"/>
- <param name="schema" value="mysql"/>
+ <PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
+ <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
</PersistenceManager>
<!--
@@ -205,10 +203,8 @@
a 'normal' persistence manager, but this could change in future
implementations.
-->
- <PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
- <param name="driver" value="com.mysql.jdbc.Driver"/>
- <param name="url" value="jdbc:mysql:///test"/>
- <param name="schema" value="mysql"/>
+ <PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
+ <param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/>
<param name="schemaObjectPrefix" value="version_"/>
</PersistenceManager>
Modified: incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/default/workspace.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/default/workspace.xml?rev=265517&r1=265516&r2=265517&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/default/workspace.xml (original)
+++ incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/default/workspace.xml Wed Aug 31 08:58:14 2005
@@ -5,17 +5,15 @@
class: FQN of class implementing FileSystem interface
-->
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
- <param name="path" value="${wsp.home}/data" />
+ <param name="path" value="${wsp.home}" />
</FileSystem>
<!--
persistence of the workspace:
class: FQN of class implementing PersistenceManager interface
-->
- <PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
- <param name="driver" value="com.mysql.jdbc.Driver"/>
- <param name="url" value="jdbc:mysql:///test"/>
- <param name="schema" value="mysql"/>
- <param name="schemaObjectPrefix" value="${wsp.name}_"/>
+ <PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
+ <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
+ <param name="schemaObjectPrefix" value="${wsp.name}_"/>
</PersistenceManager>
<!--
Search index and the file system it uses.
Modified: incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/test/workspace.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/test/workspace.xml?rev=265517&r1=265516&r2=265517&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/test/workspace.xml (original)
+++ incubator/jackrabbit/trunk/contrib/db-persistence/applications/test/workspaces/test/workspace.xml Wed Aug 31 08:58:14 2005
@@ -5,17 +5,15 @@
class: FQN of class implementing FileSystem interface
-->
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
- <param name="path" value="${wsp.home}/data" />
+ <param name="path" value="${wsp.home}" />
</FileSystem>
<!--
persistence of the workspace:
class: FQN of class implementing PersistenceManager interface
-->
- <PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
- <param name="driver" value="com.mysql.jdbc.Driver"/>
- <param name="url" value="jdbc:mysql:///test"/>
- <param name="schema" value="mysql"/>
- <param name="schemaObjectPrefix" value="${wsp.name}_"/>
+ <PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
+ <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
+ <param name="schemaObjectPrefix" value="${wsp.name}_"/>
</PersistenceManager>
<!--
Search index and the file system it uses.
Modified: incubator/jackrabbit/trunk/contrib/db-persistence/project.xml
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/db-persistence/project.xml?rev=265517&r1=265516&r2=265517&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/contrib/db-persistence/project.xml (original)
+++ incubator/jackrabbit/trunk/contrib/db-persistence/project.xml Wed Aug 31 08:58:14 2005
@@ -79,6 +79,11 @@
runtime dependencies of jackrabbit/jUnit test-cases
-->
<dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.1.1.0</version>
+ </dependency>
+ <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>3.0.10</version>
Added: incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/DerbyPersistenceManager.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/DerbyPersistenceManager.java?rev=265517&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/DerbyPersistenceManager.java (added)
+++ incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/DerbyPersistenceManager.java Wed Aug 31 08:58:14 2005
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * Licensed 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.core.state.db;
+
+import org.apache.log4j.Logger;
+
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+/**
+ * <code>DerbyPersistenceManager</code> is a JDBC-based
+ * <code>PersistenceManager</code> for Jackrabbit that persists
+ * <code>ItemState</code> and <code>NodeReferences</code> objects in an
+ * embedded Derby database using a simple custom serialization format and a
+ * very basic non-normalized database schema (in essence tables with one 'key'
+ * and one 'data' column).
+ * <p/>
+ * It is configured through the following properties:
+ * <ul>
+ * <li><code>url</code>: the database url of the form
+ * <code>"jdbc:derby:[db];[attributes]"</code></li>
+ * <li><code>schemaObjectPrefix</code>: prefix to be prepended to schema objects</li>
+ * <li><code>driver</code>: the FQN name of the JDBC driver class
+ * (default: <code>"org.apache.derby.jdbc.EmbeddedDriver"</code>)</li>
+ * <li><code>schema</code>: type of schema to be used
+ * (default: <code>"derby"</code>)</li>
+ * <li><code>user</code>: the database user (default: <code>""</code>)</li>
+ * <li><code>password</code>: the user's password (default: <code>""</code>)</li>
+ * </ul>
+ * See also {@link SimpleDbPersistenceManager}.
+ * <p/>
+ * The following is a fragment from a sample configuration:
+ * <pre>
+ * <PersistenceManager class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
+ * <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
+ * <param name="schemaObjectPrefix" value="${wsp.name}_"/>
+ * </PersistenceManager>
+ * </pre>
+ */
+public class DerbyPersistenceManager extends SimpleDbPersistenceManager {
+
+ /**
+ * Logger instance
+ */
+ private static Logger log = Logger.getLogger(DerbyPersistenceManager.class);
+
+ /**
+ * Creates a new <code>SimpleDbPersistenceManager</code> instance.
+ */
+ public DerbyPersistenceManager() {
+ // preset some attributes to reasonable defaults
+ schema = "derby";
+ driver = "org.apache.derby.jdbc.EmbeddedDriver";
+ schemaObjectPrefix = "";
+ user = "";
+ password = "";
+ initialized = false;
+ }
+
+ //---------------------------------< SimpleDbPersistenceManager overrides >
+ /**
+ * {@inheritDoc}
+ * <p/>
+ * Overridden in order to properly shutdown the embedded Derby database.
+ */
+ public synchronized void close() throws Exception {
+ if (!initialized) {
+ throw new IllegalStateException("not initialized");
+ }
+
+ // prepare connection url for issuing shutdown command
+ String url = con.getMetaData().getURL();
+ int pos = url.lastIndexOf(';');
+ if (pos != -1) {
+ // strip amy attributes from connection url
+ url = url.substring(0, pos);
+ }
+ url += ";shutdown=true";
+
+ // we have to reset the connection to 'autoCommit=true' before closing it;
+ // otherwise Derby would mysteriously complain about some pending uncommitted
+ // changes which can't possibly be true.
+ // @todo further investigate
+ con.setAutoCommit(true);
+
+ // call base class implementation
+ super.close();
+
+ // now it's safe to shutdown the embedded Derby database
+ try {
+ DriverManager.getConnection(url);
+ } catch (SQLException e) {
+ // a shutdown command always raises a SQLException
+ log.info(e.getMessage());
+ }
+ }
+}
Propchange: incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/DerbyPersistenceManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/derby.ddl
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/derby.ddl?rev=265517&view=auto
==============================================================================
--- incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/derby.ddl (added)
+++ incubator/jackrabbit/trunk/contrib/db-persistence/src/java/org/apache/jackrabbit/core/state/db/derby.ddl Wed Aug 31 08:58:14 2005
@@ -0,0 +1,6 @@
+create table ${schemaObjectPrefix}NODE (NODE_ID char(36) not null, NODE_DATA blob not null)
+create unique index ${schemaObjectPrefix}NODE_IDX on ${schemaObjectPrefix}NODE (NODE_ID)
+create table ${schemaObjectPrefix}PROP (PROP_ID varchar(1024) not null, PROP_DATA blob not null)
+create unique index ${schemaObjectPrefix}PROP_IDX on ${schemaObjectPrefix}PROP (PROP_ID)
+create table ${schemaObjectPrefix}REFS (NODE_ID char(36) not null, REFS_DATA blob not null)
+create unique index ${schemaObjectPrefix}REFS_IDX on ${schemaObjectPrefix}REFS (NODE_ID)