jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ju...@apache.org
Subject svn commit: r610164 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/JNDIDatabaseJournal.java
Date Tue, 08 Jan 2008 21:26:02 GMT
Author: jukka
Date: Tue Jan  8 13:26:01 2008
New Revision: 610164

URL: http://svn.apache.org/viewvc?rev=610164&view=rev
Log:
JCR-1291: Missing class JNDIDatabaseJournal
    - Added JNDIDatabaseJournal as suggested by Guido Jäkel

Added:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/JNDIDatabaseJournal.java

Added: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/JNDIDatabaseJournal.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/JNDIDatabaseJournal.java?rev=610164&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/JNDIDatabaseJournal.java
(added)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/JNDIDatabaseJournal.java
Tue Jan  8 13:26:01 2008
@@ -0,0 +1,89 @@
+/*
+ * 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.core.journal;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+/**
+ * Database journal that uses JNDI to acquire the database connection.
+ * The JNDI location of the {@link DataSource} to be used in given as
+ * the <code>dataSourceLocation</code> configuration property.
+ * <p>
+ * <strong>WARNING:</strong> The acquired database connection is kept
+ * for the entire lifetime of the journal instance. The configured data
+ * source should be prepared for this.
+ */
+public class JNDIDatabaseJournal extends DatabaseJournal {
+
+    /**
+     * JNDI location of the data source used to acquire database connections.
+     */
+    private String dataSourceLocation;
+
+    //----------------------------------------------------< setters & getters >
+
+    /**
+     * Returns the JNDI location of the data source.
+     *
+     * @return data source location
+     */
+    public String getDataSourceLocation() {
+        return dataSourceLocation;
+    }
+
+    /**
+     * Sets the JNDI location of the data source.
+     *
+     * @param dataSourceLocation data source location
+     */
+    public void setDataSourceLocation(String dataSourceLocation) {
+        this.dataSourceLocation = dataSourceLocation;
+    }
+
+    //-----------------------------------------------------< DatabaseJournal >
+
+    /**
+     * Returns a JDBC connection from a {@link DataSource} acquired from JNDI
+     * with the configured data source location.
+     *
+     * @return new database connection
+     * @throws SQLException if a database access error occurs
+     * @see DatabaseJournal#getConnection()
+     */
+    protected Connection getConnection() throws SQLException {
+        try {
+            InitialContext ic = new InitialContext();
+            DataSource dataSource = (DataSource) ic.lookup(dataSourceLocation);
+            return dataSource.getConnection();
+        } catch (NamingException e) {
+            throw new SQLException(
+                    "DataSource not found: " + dataSourceLocation, e);
+        }
+    }
+
+    /**
+     * Overridden to avoid the driver and url checks in DatabaseJournal.
+     */
+    protected void init() throws JournalException {
+    }
+
+}



Mime
View raw message