You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2014/04/10 15:31:16 UTC
svn commit: r1586296 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Author: reschke
Date: Thu Apr 10 13:31:15 2014
New Revision: 1586296
URL: http://svn.apache.org/r1586296
Log:
OAK-1266 - make sure that the test DataSource is closed at the end of the test
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java?rev=1586296&r1=1586295&r2=1586296&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java Thu Apr 10 13:31:15 2014
@@ -16,6 +16,10 @@
*/
package org.apache.jackrabbit.oak.plugins.document.rdb;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
@@ -35,9 +39,70 @@ public class RDBDataSourceFactory {
bds.setUsername(username);
bds.setPassword(passwd);
bds.setUrl(url);
- return bds;
+ return new CloseableDataSource(bds);
} catch (SQLException ex) {
throw new MicroKernelException("trying to obtain driver for " + url, ex);
}
}
+
+ /**
+ * A {@link Closeable} {@link DataSource} based on a {@link BasicDataSource}.
+ */
+ private static class CloseableDataSource implements DataSource, Closeable {
+
+ private BasicDataSource ds;
+
+ public CloseableDataSource(BasicDataSource ds) {
+ this.ds = ds;
+ }
+
+ @Override
+ public PrintWriter getLogWriter() throws SQLException {
+ return this.ds.getLogWriter();
+ }
+
+ @Override
+ public int getLoginTimeout() throws SQLException {
+ return this.ds.getLoginTimeout();
+ }
+
+ @Override
+ public void setLogWriter(PrintWriter pw) throws SQLException {
+ this.ds.setLogWriter(pw);
+ }
+
+ @Override
+ public void setLoginTimeout(int t) throws SQLException {
+ this.ds.setLoginTimeout(t);
+ }
+
+ @Override
+ public boolean isWrapperFor(Class<?> c) throws SQLException {
+ return this.ds.isWrapperFor(c);
+ }
+
+ @Override
+ public <T> T unwrap(Class<T> c) throws SQLException {
+ return this.unwrap(c);
+ }
+
+ @Override
+ public void close() throws IOException {
+ try {
+ this.ds.close();
+ } catch (SQLException ex) {
+ throw new IOException("closing data source " + this.ds, ex);
+ }
+ }
+
+ @Override
+ public Connection getConnection() throws SQLException {
+ return this.ds.getConnection();
+ }
+
+ @Override
+ public Connection getConnection(String user, String passwd) throws SQLException {
+ return this.ds.getConnection(user, passwd);
+ }
+ }
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java?rev=1586296&r1=1586295&r2=1586296&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java Thu Apr 10 13:31:15 2014
@@ -24,8 +24,6 @@ import java.util.UUID;
import javax.sql.DataSource;
-import com.mongodb.DB;
-
import org.apache.jackrabbit.mk.core.MicroKernelImpl;
import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
@@ -38,6 +36,8 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import com.mongodb.DB;
+
/**
* NodeStore fixture for parametrized tests.
*/
@@ -50,7 +50,7 @@ public abstract class NodeStoreFixture {
public NodeStore createNodeStore() {
return new CloseableNodeStore(new DocumentMK.Builder().open());
}
-
+
@Override
public NodeStore createNodeStore(int clusterNodeId) {
MongoConnection connection;
@@ -80,18 +80,21 @@ public abstract class NodeStoreFixture {
public static final NodeStoreFixture DOCUMENT_NS = createDocumentFixture("mongodb://localhost:27017/oak");
public static final NodeStoreFixture DOCUMENT_JDBC = new NodeStoreFixture() {
+
+ private DataSource ds;
+
@Override
public NodeStore createNodeStore() {
String id = UUID.randomUUID().toString();
- DataSource ds = RDBDataSourceFactory.forJdbcUrl("jdbc:h2:mem:" + id, "sa", "");
- return new DocumentMK.Builder().setRDBConnection(ds).getNodeStore();
+ this.ds = RDBDataSourceFactory.forJdbcUrl("jdbc:h2:mem:" + id, "sa", "");
+ return new DocumentMK.Builder().setRDBConnection(this.ds).getNodeStore();
}
@Override
public NodeStore createNodeStore(int clusterNodeId) {
try {
- DataSource ds = RDBDataSourceFactory.forJdbcUrl("jdbc:h2:mem:oaknodes-" + clusterNodeId, "sa", "");
- return new DocumentMK.Builder().setRDBConnection(ds).getNodeStore();
+ this.ds = RDBDataSourceFactory.forJdbcUrl("jdbc:h2:mem:oaknodes-" + clusterNodeId, "sa", "");
+ return new DocumentMK.Builder().setRDBConnection(this.ds).getNodeStore();
} catch (Exception e) {
return null;
}
@@ -102,6 +105,13 @@ public abstract class NodeStoreFixture {
if (nodeStore instanceof DocumentNodeStore) {
((DocumentNodeStore) nodeStore).dispose();
}
+ if (this.ds instanceof Closeable) {
+ try {
+ ((Closeable)this.ds).close();
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
}
};
RE: svn commit: r1586296 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Posted by Marcel Reutegger <mr...@adobe.com>.
Hi,
this does not compile with Java 7:
java: org.apache.jackrabbit.oak.plugins.document.rdb.RDBDataSourceFactory.CloseableDataSource is not abstract and does not override abstract method getParentLogger() in javax.sql.CommonDataSource
I suggest we add the method even though it doesn't exist in Java 6.
Regards
Marcel
> -----Original Message-----
> From: reschke@apache.org [mailto:reschke@apache.org]
> Sent: Donnerstag, 10. April 2014 15:31
> To: oak-commits@jackrabbit.apache.org
> Subject: svn commit: r1586296 - in /jackrabbit/oak/trunk: oak-
> core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDB
> DataSourceFactory.java oak-
> jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
>
> Author: reschke
> Date: Thu Apr 10 13:31:15 2014
> New Revision: 1586296
>
> URL: http://svn.apache.org/r1586296
> Log:
> OAK-1266 - make sure that the test DataSource is closed at the end of the
> test
>
> Modified:
> jackrabbit/oak/trunk/oak-
> core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDB
> DataSourceFactory.java
> jackrabbit/oak/trunk/oak-
> jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
>
> Modified: jackrabbit/oak/trunk/oak-
> core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDB
> DataSourceFactory.java
> URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-
> core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDB
> DataSourceFactory.java?rev=1586296&r1=1586295&r2=1586296&view=diff
> ==========================================================
> ====================
> --- jackrabbit/oak/trunk/oak-
> core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDB
> DataSourceFactory.java (original)
> +++ jackrabbit/oak/trunk/oak-
> core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDB
> DataSourceFactory.java Thu Apr 10 13:31:15 2014
> @@ -16,6 +16,10 @@
> */
> package org.apache.jackrabbit.oak.plugins.document.rdb;
>
> +import java.io.Closeable;
> +import java.io.IOException;
> +import java.io.PrintWriter;
> +import java.sql.Connection;
> import java.sql.Driver;
> import java.sql.DriverManager;
> import java.sql.SQLException;
> @@ -35,9 +39,70 @@ public class RDBDataSourceFactory {
> bds.setUsername(username);
> bds.setPassword(passwd);
> bds.setUrl(url);
> - return bds;
> + return new CloseableDataSource(bds);
> } catch (SQLException ex) {
> throw new MicroKernelException("trying to obtain driver for " + url,
> ex);
> }
> }
> +
> + /**
> + * A {@link Closeable} {@link DataSource} based on a {@link
> BasicDataSource}.
> + */
> + private static class CloseableDataSource implements DataSource,
> Closeable {
> +
> + private BasicDataSource ds;
> +
> + public CloseableDataSource(BasicDataSource ds) {
> + this.ds = ds;
> + }
> +
> + @Override
> + public PrintWriter getLogWriter() throws SQLException {
> + return this.ds.getLogWriter();
> + }
> +
> + @Override
> + public int getLoginTimeout() throws SQLException {
> + return this.ds.getLoginTimeout();
> + }
> +
> + @Override
> + public void setLogWriter(PrintWriter pw) throws SQLException {
> + this.ds.setLogWriter(pw);
> + }
> +
> + @Override
> + public void setLoginTimeout(int t) throws SQLException {
> + this.ds.setLoginTimeout(t);
> + }
> +
> + @Override
> + public boolean isWrapperFor(Class<?> c) throws SQLException {
> + return this.ds.isWrapperFor(c);
> + }
> +
> + @Override
> + public <T> T unwrap(Class<T> c) throws SQLException {
> + return this.unwrap(c);
> + }
> +
> + @Override
> + public void close() throws IOException {
> + try {
> + this.ds.close();
> + } catch (SQLException ex) {
> + throw new IOException("closing data source " + this.ds, ex);
> + }
> + }
> +
> + @Override
> + public Connection getConnection() throws SQLException {
> + return this.ds.getConnection();
> + }
> +
> + @Override
> + public Connection getConnection(String user, String passwd) throws
> SQLException {
> + return this.ds.getConnection(user, passwd);
> + }
> + }
> }
>
> Modified: jackrabbit/oak/trunk/oak-
> jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
> URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-
> jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java?rev=
> 1586296&r1=1586295&r2=1586296&view=diff
> ==========================================================
> ====================
> --- jackrabbit/oak/trunk/oak-
> jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
> (original)
> +++ jackrabbit/oak/trunk/oak-
> jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java Thu
> Apr 10 13:31:15 2014
> @@ -24,8 +24,6 @@ import java.util.UUID;
>
> import javax.sql.DataSource;
>
> -import com.mongodb.DB;
> -
> import org.apache.jackrabbit.mk.core.MicroKernelImpl;
> import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
> import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
> @@ -38,6 +36,8 @@ import org.apache.jackrabbit.oak.plugins
> import org.apache.jackrabbit.oak.spi.blob.BlobStore;
> import org.apache.jackrabbit.oak.spi.state.NodeStore;
>
> +import com.mongodb.DB;
> +
> /**
> * NodeStore fixture for parametrized tests.
> */
> @@ -50,7 +50,7 @@ public abstract class NodeStoreFixture {
> public NodeStore createNodeStore() {
> return new CloseableNodeStore(new DocumentMK.Builder().open());
> }
> -
> +
> @Override
> public NodeStore createNodeStore(int clusterNodeId) {
> MongoConnection connection;
> @@ -80,18 +80,21 @@ public abstract class NodeStoreFixture {
> public static final NodeStoreFixture DOCUMENT_NS =
> createDocumentFixture("mongodb://localhost:27017/oak");
>
> public static final NodeStoreFixture DOCUMENT_JDBC = new
> NodeStoreFixture() {
> +
> + private DataSource ds;
> +
> @Override
> public NodeStore createNodeStore() {
> String id = UUID.randomUUID().toString();
> - DataSource ds = RDBDataSourceFactory.forJdbcUrl("jdbc:h2:mem:" +
> id, "sa", "");
> - return new
> DocumentMK.Builder().setRDBConnection(ds).getNodeStore();
> + this.ds = RDBDataSourceFactory.forJdbcUrl("jdbc:h2:mem:" + id, "sa",
> "");
> + return new
> DocumentMK.Builder().setRDBConnection(this.ds).getNodeStore();
> }
>
> @Override
> public NodeStore createNodeStore(int clusterNodeId) {
> try {
> - DataSource ds =
> RDBDataSourceFactory.forJdbcUrl("jdbc:h2:mem:oaknodes-" +
> clusterNodeId, "sa", "");
> - return new
> DocumentMK.Builder().setRDBConnection(ds).getNodeStore();
> + this.ds =
> RDBDataSourceFactory.forJdbcUrl("jdbc:h2:mem:oaknodes-" +
> clusterNodeId, "sa", "");
> + return new
> DocumentMK.Builder().setRDBConnection(this.ds).getNodeStore();
> } catch (Exception e) {
> return null;
> }
> @@ -102,6 +105,13 @@ public abstract class NodeStoreFixture {
> if (nodeStore instanceof DocumentNodeStore) {
> ((DocumentNodeStore) nodeStore).dispose();
> }
> + if (this.ds instanceof Closeable) {
> + try {
> + ((Closeable)this.ds).close();
> + } catch (IOException ex) {
> + throw new RuntimeException(ex);
> + }
> + }
> }
> };
>
>
Re: svn commit: r1586296 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Posted by Julian Reschke <ju...@gmx.de>.
On 2014-04-10 16:22, Julian Reschke wrote:
> On 2014-04-10 16:19, Marcel Reutegger wrote:
>> this also looks a bit strange. doesn't this end in an endless loop?
>>
>> regards
>> marcel
>>
>>> + @Override
>>> + public <T> T unwrap(Class<T> c) throws SQLException {
>>> + return this.unwrap(c);
>>> + }
>
> Oops.
(fixed)
Re: svn commit: r1586296 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Posted by Julian Reschke <ju...@gmx.de>.
On 2014-04-10 16:19, Marcel Reutegger wrote:
> this also looks a bit strange. doesn't this end in an endless loop?
>
> regards
> marcel
>
>> + @Override
>> + public <T> T unwrap(Class<T> c) throws SQLException {
>> + return this.unwrap(c);
>> + }
Oops.
RE: svn commit: r1586296 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
Posted by Marcel Reutegger <mr...@adobe.com>.
this also looks a bit strange. doesn't this end in an endless loop?
regards
marcel
> + @Override
> + public <T> T unwrap(Class<T> c) throws SQLException {
> + return this.unwrap(c);
> + }