clerezza-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From enrid...@apache.org
Subject [1/3] git commit: CLEREZZA-904 Implemented. Having this support, most of the work around statement and connection management has been removed.
Date Sun, 30 Mar 2014 19:58:25 GMT
Repository: clerezza
Updated Branches:
  refs/heads/master 3b9ddb0bf -> 7d9e7dc3d


CLEREZZA-904 Implemented. Having this support, most of the work around statement and connection management has been removed.


Project: http://git-wip-us.apache.org/repos/asf/clerezza/repo
Commit: http://git-wip-us.apache.org/repos/asf/clerezza/commit/385f0b58
Tree: http://git-wip-us.apache.org/repos/asf/clerezza/tree/385f0b58
Diff: http://git-wip-us.apache.org/repos/asf/clerezza/diff/385f0b58

Branch: refs/heads/master
Commit: 385f0b589969c7943d6dbd16fab0c46e6e23db8a
Parents: 3b9ddb0
Author: enridaga <enridaga@apache.org>
Authored: Sun Mar 30 20:49:12 2014 +0100
Committer: enridaga <enridaga@apache.org>
Committed: Sun Mar 30 20:49:12 2014 +0100

----------------------------------------------------------------------
 .../rdf/virtuoso/storage/access/DataAccess.java | 292 +++++++----------
 .../access/VirtuosoWeightedProvider.java        | 324 ++++++++++---------
 rdf.virtuoso.storage/src/test/java/.DS_Store    | Bin 0 -> 6148 bytes
 .../clerezza/rdf/virtuoso/storage/.DS_Store     | Bin 0 -> 6148 bytes
 .../rdf/virtuoso/storage/ConnectionTest.java    |  40 +--
 .../rdf/virtuoso/storage/TestUtils.java         |  30 +-
 .../rdf/virtuoso/storage/ThreadSafetyTest.java  |   6 +-
 .../virtuoso/storage/access/DataAccessTest.java |  46 +--
 .../access/VirtuosoWeightedProviderTest.java    |  11 +-
 .../src/test/resources/.DS_Store                | Bin 0 -> 6148 bytes
 .../src/test/resources/log4j.properties         |   4 +-
 11 files changed, 338 insertions(+), 415 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccess.java
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccess.java b/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccess.java
index 5bc29fc..5b41318 100644
--- a/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccess.java
+++ b/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccess.java
@@ -20,21 +20,21 @@ package org.apache.clerezza.rdf.virtuoso.storage.access;
 
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import java.sql.DriverManager;
+import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
+import javax.sql.PooledConnection;
+
 import org.apache.clerezza.rdf.core.BNode;
 import org.apache.clerezza.rdf.core.Language;
 import org.apache.clerezza.rdf.core.NonLiteral;
@@ -52,12 +52,10 @@ import org.slf4j.LoggerFactory;
 import org.wymiwyg.commons.util.collections.BidiMap;
 import org.wymiwyg.commons.util.collections.BidiMapImpl;
 
-import virtuoso.jdbc4.VirtuosoConnection;
+import virtuoso.jdbc4.VirtuosoConnectionPoolDataSource;
 import virtuoso.jdbc4.VirtuosoException;
 import virtuoso.jdbc4.VirtuosoExtendedString;
-import virtuoso.jdbc4.VirtuosoPreparedStatement;
 import virtuoso.jdbc4.VirtuosoRdfBox;
-import virtuoso.jdbc4.VirtuosoResultSet;
 
 /**
  * 
@@ -66,7 +64,7 @@ import virtuoso.jdbc4.VirtuosoResultSet;
  */
 public class DataAccess {
 	private Logger logger = LoggerFactory.getLogger(DataAccess.class);
-
+	
 	final static String DRIVER = "virtuoso.jdbc4.Driver";
 
 	// XXX This is only used to create a new bnode identifier in virtuoso
@@ -105,68 +103,37 @@ public class DataAccess {
 	 * (strings) to clerezza blank nodes and vice versa.
 	 */
 	private final BidiMap<VirtuosoBNode, BNode> bnodesMap;
+	
+	private VirtuosoConnectionPoolDataSource pds;
 
-	private Map<String, VirtuosoPreparedStatement> preparedStatements = null;
-	private VirtuosoConnection connection = null;
-	private String connectionString;
-	private String user;
-	private String pwd;
+	private int preftechSize;
 
 	// We protect the constructor from outside the package...
-	DataAccess(String connectionString, String user, String pwd) {
-		this.connectionString = connectionString;
-		this.user = user;
-		this.pwd = pwd;
-		
-		connection = createConnection(connectionString, user, pwd);
-		
-		// Init collections
-		this.preparedStatements = new HashMap<String,VirtuosoPreparedStatement>();
+	DataAccess(VirtuosoConnectionPoolDataSource pds) {
+		this.pds = pds;
+		this.preftechSize = 200;
+		// Init bnodes map
 		this.bnodesMap = new BidiMapImpl<VirtuosoBNode, BNode>();
-
 	}
 
-	private VirtuosoConnection createConnection(final String cs, final String u, final String p) {
-		try {
-			VirtuosoConnection c =  AccessController.doPrivileged(
-					new PrivilegedAction<VirtuosoConnection>() {
-				          public VirtuosoConnection run() {
-				        	  try {
-								Class.forName(VirtuosoWeightedProvider.DRIVER, true, this
-											.getClass().getClassLoader());
-								return  (VirtuosoConnection) DriverManager
-					  					.getConnection(cs, u, p);
-							} catch (ClassNotFoundException e) {
-								throw new RuntimeException(e);
-							} catch (SQLException e) {
-								throw new RuntimeException(e);
-							}
-				          } 
-				        } 
-				     ); 
-			c.setAutoCommit(true);
-			return c;
-		} catch (SQLException e) {
-			throw new RuntimeException(e);
-		}
+	private Connection getConnection(){
+		return AccessController
+				.doPrivileged(new PrivilegedAction<Connection>() {
+					public Connection run() {
+						try {
+							PooledConnection pconn = pds.getPooledConnection();
+							return pconn.getConnection();
+						} catch (Throwable e) {
+							throw new RuntimeException(e);
+						}
+					}
+				});
 	}
 
-	// A simple renewal policy
-	private int statementCalls = 0;
-	protected PreparedStatement getStatement(String query)
-			throws VirtuosoException {
-		if(statementCalls >= 10000){
-			statementCalls=0; 
-			renew();
-		}else{
-			statementCalls++;
-		}
-		if (!preparedStatements.containsKey(query)) {
-			VirtuosoPreparedStatement ps = (VirtuosoPreparedStatement) connection
-					.prepareStatement(query);
-			preparedStatements.put(query, ps);
-		}
-		return preparedStatements.get(query);
+	private PreparedStatement getStatement(Connection connection, String query) throws SQLException {
+		PreparedStatement ps = connection.prepareStatement(query);
+		ps.setFetchSize(this.preftechSize);
+		return ps;
 	}
 
 	private VirtuosoBNode toVirtBnode(BNode bnode) {
@@ -184,52 +151,28 @@ public class DataAccess {
 		}
 	}
 
-	public void renew() {
-		logger.trace("renewing...");
-		close();
-		connection = createConnection(connectionString, user, pwd);
+	public void close() {
+
 	}
 
-	public void close() {
-		logger.trace("closing resources...");
-		Collection<VirtuosoPreparedStatement> pss = preparedStatements.values();
-		for (VirtuosoPreparedStatement ps : pss) {
+	private void close(Object... resources) {
+		for (Object o : resources) {
 			try {
-				logger.trace("Closing prepared statement {}", ps);
-				ps.close();
-			} catch (Exception e) {
-				logger.error("Cannot close statement", e);
+				if (o instanceof ResultSet ) {
+					((ResultSet) o).close();
+				} else if (o instanceof Statement) {
+					((Statement) o).close();
+				}else if (o instanceof Connection) {
+					((Connection) o).close();
+				}else{
+					throw new SQLException("XXX Unsupported resource: " + o.toString());
+				}
+			} catch (SQLException e) {
+				logger.error("Cannot close resource of type {}", o.getClass());
 			}
 		}
-		logger.trace("closed {} statements.", pss.size());
-		preparedStatements.clear();
-		try {
-			connection.close();
-			logger.trace("Connection closed");
-		} catch (Exception e) {
-			logger.error("Cannot close connection", e);
-		}
 	}
 	
-	private void close(String statementId){
-		try {
-			VirtuosoPreparedStatement ps = preparedStatements.get(statementId);
-			if (ps == null) {
-				logger.warn(
-						"Attempting to close a statement that was not prepared: {}",
-						statementId);
-			} else {
-				logger.trace("Closing prepared statement {}", ps);
-				ps.close();
-			}
-		} catch (Exception e) {
-			logger.error("Cannot close statement", e);
-		} finally {
-			// We won't reuse a statement that thrown a n exception on close...
-			preparedStatements.remove(statementId);
-		}
-	}
-
 	private void bindValue(PreparedStatement st, int i, Resource object)
 			throws SQLException {
 		if (object instanceof UriRef) {
@@ -306,29 +249,34 @@ public class DataAccess {
 				.append("urn:x-virtuoso:bnode:").append(bn).toString());
 
 		Exception e = null;
-		VirtuosoResultSet rs = null;
+		ResultSet rs = null;
 
 		String bnodeId = null;
+
+		Connection connection = getConnection();
+		PreparedStatement insert = null;
+		PreparedStatement select = null;
+		PreparedStatement delete = null;
 		// insert
 		try {
-			PreparedStatement insert = getStatement(INSERT_NEW_BNODE);
+			insert = connection.prepareStatement(INSERT_NEW_BNODE);
 			bindGraph(insert, 1, g);
 			bindPredicate(insert, 2, p);
 			bindSubject(insert, 3, o);
 			insert.executeUpdate();
 
 			// select
-			PreparedStatement select = getStatement(SELECT_TRIPLES_NULL_P_O);
+			select = connection.prepareStatement(SELECT_TRIPLES_NULL_P_O);
 			bindGraph(select, 1, g);
 			bindPredicate(select, 2, p);
 			bindValue(select, 3, o);
-			rs = (VirtuosoResultSet) select.executeQuery();
+			rs = (ResultSet) select.executeQuery();
 			rs.next();
 			bnodeId = rs.getString(1);
 			rs.close();
 
 			// delete
-			PreparedStatement delete = getStatement(DELETE_NEW_BNODE);
+			delete = connection.prepareStatement(DELETE_NEW_BNODE);
 			bindGraph(delete, 1, g);
 			bindPredicate(delete, 2, p);
 			bindSubject(delete, 3, o); // It is a IRI
@@ -341,17 +289,9 @@ public class DataAccess {
 			logger.error("ERROR while executing statement", se);
 			e = se;
 		} finally {
-			try {
-				if (rs != null)
-					rs.close();
-			} catch (Exception ex) {
-				logger.error("Error attempting to close result set", ex);
-			}
+			close(rs, insert, select, delete, connection);
 		}
 		if (e != null) {
-			close(INSERT_NEW_BNODE);
-			close(SELECT_TRIPLES_NULL_P_O);
-			close(DELETE_NEW_BNODE);
 			throw new RuntimeException(e);
 		}
 		return new VirtuosoBNode(bnodeId);
@@ -369,19 +309,27 @@ public class DataAccess {
 		if(o instanceof BNode){
 			o = toVirtBnode((BNode) o);
 		}
-		
+		Exception e = null;
+		PreparedStatement st = null;
+		Connection connection = null;
 		try {
-			PreparedStatement st = getStatement(INSERT_QUAD);
+			connection = getConnection();
+			st = getStatement(connection, INSERT_QUAD);
 			bindGraph(st, 1, graph);
 			bindSubject(st, 2, s);
 			bindPredicate(st, 3, p);
 			bindValue(st, 4, o);
 			st.executeUpdate();
-		} catch (VirtuosoException e) {
-			logger.error("Cannot execute statement", e);
-			throw new RuntimeException(e);
-		} catch (SQLException e) {
-			logger.error("Cannot execute statement", e);
+		} catch (VirtuosoException e1) {
+			logger.error("Cannot execute statement", e1);
+			e = e1;
+		} catch (SQLException e1) {
+			logger.error("Cannot execute statement", e1);
+			e = e1;
+		} finally{
+			close(st, connection);
+		}
+		if(e!=null){
 			throw new RuntimeException(e);
 		}
 	}
@@ -399,8 +347,11 @@ public class DataAccess {
 			o = toVirtBnode((BNode) o);
 		}
 		Exception e = null;
+		PreparedStatement st = null;
+		Connection connection = null;
 		try {
-			PreparedStatement st = getStatement(DELETE_QUAD);
+			connection = getConnection();
+			st = getStatement(connection, DELETE_QUAD);
 			bindGraph(st, 1, graph);
 			bindSubject(st, 2, s);
 			bindPredicate(st, 3, p);
@@ -412,10 +363,11 @@ public class DataAccess {
 		} catch (SQLException ex) {
 			logger.error("Cannot execute statement", ex);
 			e = ex;
+		} finally {
+			close(st, connection);
 		}
 		
 		if (e != null) {
-			close(DELETE_QUAD);
 			throw new RuntimeException(e);
 		}
 	}
@@ -424,9 +376,13 @@ public class DataAccess {
 		Exception e = null;
 
 		Set<UriRef> graphs = new HashSet<UriRef>();
+		PreparedStatement st = null;
+		ResultSet rs = null;
+		Connection connection = null;
 		try {
-			PreparedStatement st = getStatement(LIST_GRAPHS);
-			ResultSet rs = st.executeQuery();
+			connection = getConnection();
+			st = getStatement(connection, LIST_GRAPHS);
+			rs = st.executeQuery();
 			while (rs.next()) {
 				UriRef graph = new UriRef(rs.getString(1));
 				logger.debug(" > Graph {}", graph);
@@ -438,10 +394,10 @@ public class DataAccess {
 		} catch (SQLException ex) {
 			logger.error("Cannot execute query", ex);
 			e = ex;
+		} finally{
+			close(rs, st, connection);
 		}
-		
 		if(e != null){
-			close(LIST_GRAPHS);
 			throw new RuntimeException(e);
 		}
 		
@@ -450,8 +406,11 @@ public class DataAccess {
 
 	public void clearGraph(String graph) {
 		Exception e = null;
+		PreparedStatement st = null;
+		Connection connection = null;
 		try {
-			PreparedStatement st = getStatement(CLEAR_GRAPH);
+			connection = getConnection();
+			st = getStatement(connection, CLEAR_GRAPH);
 			bindGraph(st, 1, graph);
 			st.executeUpdate();
 		} catch (VirtuosoException ex) {
@@ -460,10 +419,10 @@ public class DataAccess {
 		} catch (SQLException ex) {
 			logger.error("Cannot execute statement", ex);
 			e = ex;
-		} 
-		
+		} finally{
+			close(st, connection);
+		}
 		if(e != null){
-			close(CLEAR_GRAPH);
 			throw new RuntimeException(e);
 		}
 	}
@@ -487,13 +446,6 @@ public class DataAccess {
 		if (subject != null && subject instanceof BNode) {
 			subject = new UriRef(toVirtBnode((BNode) subject).getSkolemId());
 		}
-		
-		if (logger.isTraceEnabled()) {
-			logger.trace(" > g: {}", graph);
-			logger.trace(" > s: {}", subject);
-			logger.trace(" > p: {}", predicate);
-			logger.trace(" > o: {}", object);
-		}
 
 		List<Triple> list = null;
 		Exception e = null;
@@ -537,10 +489,12 @@ public class DataAccess {
 		// There must be only 1 boss
 		String filter = filters.iterator().next();
 		PreparedStatement ps = null;
-		VirtuosoResultSet rs = null;
+		ResultSet rs = null;
+		Connection connection = null;
 		try {
 			logger.debug("query: {}", filter);
-			ps = getStatement(filter);
+			connection = getConnection();
+			ps = getStatement(connection, filter);
 			// In any case the first binding is the graph
 			bindGraph(ps, 1, graph);
 
@@ -557,7 +511,7 @@ public class DataAccess {
 				bindValue(ps, index, object);
 			}
 
-			rs = (VirtuosoResultSet) ps.executeQuery();
+			rs = (ResultSet) ps.executeQuery();
 			list = new ArrayList<Triple>();
 
 			while (rs.next()) {
@@ -571,17 +525,10 @@ public class DataAccess {
 			logger.error("ERROR while executing statement", ps);
 			e = e1;
 		} finally {
-			try {
-				if (rs != null)
-					rs.close();
-			} catch (Throwable ex) {
-				logger.error("Cannot close result set", ex);
-			}
+			close(rs, ps, connection);
 		}
 
 		if (list == null || e != null) {
-			// We also close the statement
-			close(filter);
 			throw new RuntimeException(e);
 		}
 		return list.iterator();
@@ -591,10 +538,12 @@ public class DataAccess {
 		logger.trace("called size({})", graph);
 		Exception e = null;
 		PreparedStatement ps = null;
-		VirtuosoResultSet rs = null;
+		ResultSet rs = null;
+		Connection connection = null;
 		int size = -1;
 		try {
-			ps = getStatement(COUNT_TRIPLES_OF_GRAPH);
+			connection = getConnection();
+			ps = getStatement(connection, COUNT_TRIPLES_OF_GRAPH);
 			logger.trace("statement got: {}", ps);
 			// In any case the first binding is the graph
 			bindGraph(ps, 1, graph);
@@ -602,7 +551,7 @@ public class DataAccess {
 			boolean r = ps.execute();
 			logger.trace("Executed statement: {}", r);
 			if(r){
-				rs = (VirtuosoResultSet) ps.getResultSet();
+				rs = (ResultSet) ps.getResultSet();
 				logger.trace("Got result set, has next?");
 				boolean hn = rs.next();
 				logger.trace(" > {}", hn);
@@ -621,17 +570,10 @@ public class DataAccess {
 			logger.error("ERROR while executing statement", ps);
 			e = e1;
 		} finally {
-			try {
-				if (rs != null)
-					rs.close();
-			} catch (Throwable ex) {
-				logger.error("Cannot close result set", ex);
-			}
+			close(rs, ps, connection);
 		}
 		
 		if (size == -1 || e != null) {
-			// We also close the statement
-			close(COUNT_TRIPLES_OF_GRAPH);
 			throw new RuntimeException(e);
 		}
 
@@ -649,11 +591,8 @@ public class DataAccess {
 		Object o = null;
 
 		public TripleBuilder(Object s, Object p, Object o) {
-			if (logger.isDebugEnabled()) {
-				logger.debug("TripleBuilder(Object s, Object p, Object o)");
-				logger.debug("> s: {}", s);
-				logger.debug("> p: {}", p);
-				logger.debug("> o: {}", o);
+			if (logger.isTraceEnabled()) {
+				logger.trace("TripleBuilder({}, {}, {})", new Object[]{ s, p, o });
 			}
 			this.s = s;
 			this.p = p;
@@ -661,7 +600,6 @@ public class DataAccess {
 		}
 
 		private NonLiteral buildSubject() {
-			logger.debug("TripleBuilder.getSubject() : {}", s);
 			if (s instanceof VirtuosoExtendedString) {
 				VirtuosoExtendedString vs = (VirtuosoExtendedString) s;
 				if (vs.iriType == VirtuosoExtendedString.IRI
@@ -682,7 +620,6 @@ public class DataAccess {
 		}
 
 		private UriRef buildPredicate() {
-			logger.debug("TripleBuilder.getPredicate() : {}", p);
 			if (p instanceof VirtuosoExtendedString) {
 				VirtuosoExtendedString vs = (VirtuosoExtendedString) p;
 				if (vs.iriType == VirtuosoExtendedString.IRI
@@ -699,8 +636,6 @@ public class DataAccess {
 		}
 
 		Resource buildObject() {
-			logger.debug("TripleBuilder.getObject() : {}", o);
-
 			if (o instanceof VirtuosoExtendedString) {
 				// In case is IRI
 				VirtuosoExtendedString vs = (VirtuosoExtendedString) o;
@@ -788,10 +723,10 @@ public class DataAccess {
 		logger.debug("Exec Plan B: {}", sql);
 		Exception e = null;
 		PreparedStatement st = null;
+		Connection connection = null;
 		try {
-			st = getStatement(sql);
-			String s = b.toString();
-			logger.trace(" TTL is \n{}\n", s);
+			connection = getConnection();
+			st = getStatement(connection, sql);
 			st.setNString(1, b.toString());
 			st.execute();
 		} catch (VirtuosoException ve) {
@@ -800,17 +735,10 @@ public class DataAccess {
 		} catch (SQLException se) {
 			logger.error("ERROR while executing statement", se);
 			e = se;
+		} finally {
+			close(st, connection);
 		}
 		if (e != null) {
-			close(sql);
-			if(logger.isDebugEnabled()){
-				logger.error("S {}", triple.getSubject());
-				logger.error("P {}", triple.getPredicate());
-				logger.error("O {}", triple.getObject());
-				logger.error(" O length: {}", triple.getObject().toString()
-					.length());
-			}
-			logger.error("Sql: {}", sql);
 			throw new RuntimeException(e);
 		}
 		return true;

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProvider.java
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProvider.java b/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProvider.java
index 1e4628b..238577c 100644
--- a/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProvider.java
+++ b/rdf.virtuoso.storage/src/main/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProvider.java
@@ -24,7 +24,9 @@ import java.io.Writer;
 import java.math.BigInteger;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
+import java.sql.Connection;
 import java.sql.DriverManager;
+import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
@@ -34,6 +36,8 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
+import javax.sql.PooledConnection;
+
 import org.apache.clerezza.rdf.core.Graph;
 import org.apache.clerezza.rdf.core.MGraph;
 import org.apache.clerezza.rdf.core.TripleCollection;
@@ -58,10 +62,8 @@ import org.osgi.service.component.ComponentException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import virtuoso.jdbc4.VirtuosoConnection;
+import virtuoso.jdbc4.VirtuosoConnectionPoolDataSource;
 import virtuoso.jdbc4.VirtuosoException;
-import virtuoso.jdbc4.VirtuosoPreparedStatement;
-import virtuoso.jdbc4.VirtuosoResultSet;
 import virtuoso.jdbc4.VirtuosoStatement;
 
 /**
@@ -104,6 +106,9 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 	// DataAccess registry
 	private Set<DataAccess> dataAccessSet = new HashSet<DataAccess>();
 
+	// ConnectionPool
+	private VirtuosoConnectionPoolDataSource pds = null;
+	
 	// Logger
 	private Logger logger = LoggerFactory
 			.getLogger(VirtuosoWeightedProvider.class);
@@ -113,9 +118,11 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 	private Integer port;
 	private String user;
 	private String pwd;
-	private String connStr;
+	
 	private int weight = DEFAULT_WEIGHT;
-
+	private String charset = "UTF-8";
+	private String roundrobin = "0";
+	
 	/**
 	 * Creates a new {@link VirtuosoWeightedProvider}.
 	 * 
@@ -126,13 +133,41 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 		logger.debug("Created VirtuosoWeightedProvider.");
 	}
 
-	public VirtuosoWeightedProvider(String jdbcConnectionString,
+	public VirtuosoWeightedProvider(String host, Integer port,
 			String jdbcUser, String jdbcPassword) {
-		connStr = jdbcConnectionString;
-		user = jdbcUser;
-		pwd = jdbcPassword;
+		this.host = host;
+		this.port = port;
+		this.user = jdbcUser;
+		this.pwd = jdbcPassword;
+		initConnectionPoolDataSource();
 	}
 
+	private void initConnectionPoolDataSource(){
+		if(pds != null){
+			try {
+				pds.close();
+			} catch (SQLException e) {
+				logger.error("Cannot close connection pool datasource", e);
+			}finally{
+				pds = null;
+			}
+		}
+		// Build connection string
+		pds = new VirtuosoConnectionPoolDataSource();
+		try {
+			pds.setInitialPoolSize(10);
+		} catch (SQLException e) {
+			logger.error("Cannot set initial pool size", e);
+		}
+		pds.setUsepstmtpool(true);
+		pds.setServerName(host);
+		pds.setPortNumber(port);
+		pds.setUser(user);
+		pds.setPassword(pwd);
+		pds.setCharset(charset);
+		pds.setRoundrobin(roundrobin.equals("1"));
+	}
+	
 	/**
 	 * Activates this component.<br />
 	 * 
@@ -233,15 +268,18 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 				user = (String) puser;
 				pwd = (String) ppwd;
 
-				// Build connection string
-				connStr = getConnectionString(host, port);
-
+				initConnectionPoolDataSource();
+				
 				// Check connection
-				VirtuosoConnection connection = getConnection(connStr, user,
-						pwd);
-				logger.info("Connection to {} initialized. User is {}", connStr, user);
-				// everything went ok
+				Connection connection = getConnection();
+				boolean ok = connection.isValid(10); // Please answer in 10 sec!
 				connection.close();
+				if(!ok){
+					logger.error("Connection test failed: {}", ok);
+					throw new ComponentException("A problem occurred while initializing connection to Virtuoso.");
+				}
+				logger.info("Connection {} initialized. User is {}", connection, user);
+				// everything went ok
 			} catch (VirtuosoException e) {
 				logger.error(
 						"A problem occurred while initializing connection to Virtuoso",
@@ -256,14 +294,7 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 				logger.error("Be sure you have configured the connection parameters correctly in the OSGi/SCR configuration");
 				cCtx.disableComponent(pid);
 				throw new ComponentException(e.getLocalizedMessage());
-			} catch (ClassNotFoundException e) {
-				logger.error(
-						"A problem occurred while initializing connection to Virtuoso",
-						e);
-				logger.error("Be sure you have configured the connection parameters correctly in the OSGi/SCR configuration");
-				cCtx.disableComponent(pid);
-				throw new ComponentException(e.getLocalizedMessage());
-			}
+			} 
 		}
 		// Load remembered graphs
 		Set<UriRef> remembered = readRememberedGraphs();
@@ -282,7 +313,7 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 	public static final String getConnectionString(String hostName,
 			Integer portNumber) {
 		return new StringBuilder().append("jdbc:virtuoso://").append(hostName)
-				.append(":").append(portNumber).append("/CHARSET=UTF-8")
+				.append(":").append(portNumber).append("/charset=UTF-8/log_enable=2")
 				.toString();
 	}
 
@@ -290,16 +321,16 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 		logger.trace(" readRememberedGraphs()");
 		String SQL = "SPARQL SELECT DISTINCT ?G FROM <" + ACTIVE_GRAPHS_GRAPH
 				+ "> WHERE { ?G a <urn:x-virtuoso/active-graph> }";
-		VirtuosoConnection connection = null;
+		Connection connection = null;
 		Exception e = null;
 		VirtuosoStatement st = null;
-		VirtuosoResultSet rs = null;
+		ResultSet rs = null;
 		Set<UriRef> remembered = new HashSet<UriRef>();
 		try {
 			connection = getConnection();
 			st = (VirtuosoStatement) connection.createStatement();
 			logger.debug("Executing SQL: {}", SQL);
-			rs = (VirtuosoResultSet) st.executeQuery(SQL);
+			rs = (ResultSet) st.executeQuery(SQL);
 			while (rs.next()) {
 				UriRef name = new UriRef(rs.getString(1));
 				logger.debug(" > Graph {}", name);
@@ -311,29 +342,23 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 		} catch (SQLException e1) {
 			logger.error("Error while executing query/connection.", e1);
 			e = e1;
-		} catch (ClassNotFoundException e1) {
-			logger.error("Error while executing query/connection.", e1);
-			e = e1;
 		} finally {
-
 			try {
 				if (rs != null)
 					rs.close();
 			} catch (Exception ex) {
+				logger.error("Cannot close result set", ex);
 			}
-			;
 			try {
 				if (st != null)
 					st.close();
 			} catch (Exception ex) {
+				logger.error("Cannot close statement", ex);
 			}
-			;
-			if (connection != null) {
-				try {
-					connection.close();
-				} catch (VirtuosoException e1) {
-					logger.error("Cannot close connection", e1);
-				}
+			try{
+				if(connection != null) connection.close();
+			}catch (Exception ex) {
+				logger.error("Cannot close connection", ex);
 			}
 		}
 		if (e != null) {
@@ -348,15 +373,14 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 			// Returns the list of graphs in the virtuoso quad store
 			String SQL = "SPARQL INSERT INTO <" + ACTIVE_GRAPHS_GRAPH
 					+ "> { `iri(??)` a <urn:x-virtuoso/active-graph> }";
-			VirtuosoConnection connection = null;
+			Connection connection = null;
 			Exception e = null;
-			VirtuosoPreparedStatement st = null;
-			VirtuosoResultSet rs = null;
+			PreparedStatement st = null;
+			ResultSet rs = null;
 			try {
 				try {
 					connection = getConnection();
-					connection.setAutoCommit(false);
-					st = (VirtuosoPreparedStatement) connection
+					st = (PreparedStatement) connection
 							.prepareStatement(SQL);
 					logger.debug("Executing SQL: {}", SQL);
 					for (UriRef u : graphs) {
@@ -364,34 +388,27 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 						st.setString(1, u.getUnicodeString());
 						st.executeUpdate();
 					}
-					connection.commit();
 				} catch (Exception e1) {
 					logger.error("Error while executing query/connection.", e1);
 					e = e1;
-					connection.rollback();
 				}
-			} catch (SQLException e1) {
-				logger.error("Error while executing query/connection.", e1);
-				e = e1;
 			} finally {
 				try {
 					if (rs != null)
 						rs.close();
 				} catch (Exception ex) {
+					logger.error("Cannot close result set", ex);
 				}
-				;
 				try {
 					if (st != null)
 						st.close();
 				} catch (Exception ex) {
+					logger.error("Cannot close statement", ex);
 				}
-				;
-				if (connection != null) {
-					try {
-						connection.close();
-					} catch (VirtuosoException e1) {
-						logger.error("Cannot close connection", e1);
-					}
+				try{
+					if(connection != null) connection.close();
+				}catch (Exception ex) {
+					logger.error("Cannot close connection", ex);
 				}
 			}
 			if (e != null) {
@@ -407,50 +424,41 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 			String SQL = "SPARQL WITH <"
 					+ ACTIVE_GRAPHS_GRAPH
 					+ "> DELETE { ?s ?p ?v } WHERE { ?s ?p ?v . FILTER( ?s = iri(??) ) }";
-			VirtuosoConnection connection = null;
 			Exception e = null;
-			VirtuosoPreparedStatement st = null;
-			VirtuosoResultSet rs = null;
+			Connection connection = null;
+			PreparedStatement st = null;
+			ResultSet rs = null;
 			try {
-				try {
-					connection = getConnection();
-					connection.setAutoCommit(false);
-					st = (VirtuosoPreparedStatement) connection
-							.prepareStatement(SQL);
-					logger.debug("Executing SQL: {}", SQL);
-					for (UriRef u : graphs) {
-						logger.trace(" > remembering {}", u);
-						st.setString(1, u.getUnicodeString());
-						st.executeUpdate();
-					}
-					connection.commit();
-				} catch (Exception e1) {
-					logger.error("Error while executing query/connection.", e1);
-					e = e1;
-					connection.rollback();
+				connection = getConnection();
+				st = (PreparedStatement) connection
+						.prepareStatement(SQL);
+				logger.debug("Executing SQL: {}", SQL);
+				for (UriRef u : graphs) {
+					logger.trace(" > remembering {}", u);
+					st.setString(1, u.getUnicodeString());
+					st.executeUpdate();
 				}
 			} catch (SQLException e1) {
 				logger.error("Error while executing query/connection.", e1);
 				e = e1;
 			} finally {
+
 				try {
 					if (rs != null)
 						rs.close();
 				} catch (Exception ex) {
+					logger.error("Cannot close result set", ex);
 				}
-				;
 				try {
 					if (st != null)
 						st.close();
 				} catch (Exception ex) {
+					logger.error("Cannot close statement", ex);
 				}
-				;
-				if (connection != null) {
-					try {
-						connection.close();
-					} catch (VirtuosoException e1) {
-						logger.error("Cannot close connection", e1);
-					}
+				try{
+					if(connection != null) connection.close();
+				}catch (Exception ex) {
+					logger.error("Cannot close connection", ex);
 				}
 			}
 			if (e != null) {
@@ -474,47 +482,61 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 		for (DataAccess mg : dataAccessSet) {
 			mg.close();
 		}
+		try {
+			pds.close();
+		} catch (SQLException e) {
+			logger.error("Cannot close connection pool data source", e);
+		}
 		logger.info("Shutdown complete.");
 	}
 
-	public VirtuosoConnection getConnection() throws SQLException,
-			ClassNotFoundException {
-		return getConnection(connStr, user, pwd);
-	}
-
-	private VirtuosoConnection getConnection(final String connStr,final String user,
-			final String pwd) throws SQLException, ClassNotFoundException {
-		logger.debug("getConnection(String {}, String {}, String *******)",
-				connStr, user);
-		/**
-		 * FIXME For some reasons, it looks the DriverManager is instantiating a
-		 * new virtuoso.jdbc4.Driver instance upon any activation. (Enable DEBUG
-		 * to see this)
-		 */
-		logger.debug("Loading JDBC Driver");
-		try {
-			VirtuosoConnection c = AccessController
-					.doPrivileged(new PrivilegedAction<VirtuosoConnection>() {
-						public VirtuosoConnection run() {
-							try {
-								Class.forName(VirtuosoWeightedProvider.DRIVER,
-										true, this.getClass().getClassLoader());
-								return (VirtuosoConnection) DriverManager
-										.getConnection(connStr, user, pwd);
-							} catch (ClassNotFoundException e) {
-								throw new RuntimeException(e);
-							} catch (SQLException e) {
-								throw new RuntimeException(e);
-							}
+	public Connection getConnection() throws SQLException {
+		return AccessController
+				.doPrivileged(new PrivilegedAction<Connection>() {
+					public Connection run() {
+						try {
+							PooledConnection pconn = pds.getPooledConnection();
+							return pconn.getConnection();
+						} catch (Throwable e) {
+							throw new RuntimeException(e);
 						}
-					});
-			c.setAutoCommit(true);
-			return c;
-		} catch (SQLException e) {
-			throw new RuntimeException(e);
-		}
+					}
+				});
 	}
 
+//	private VirtuosoConnection getConnection(final String connStr,final String user,
+//			final String pwd) throws SQLException, ClassNotFoundException {
+//		logger.debug("getConnection(String {}, String {}, String *******)",
+//				connStr, user);
+//		/**
+//		 * FIXME For some reasons, it looks the DriverManager is instantiating a
+//		 * new virtuoso.jdbc4.Driver instance upon any activation. (Enable DEBUG
+//		 * to see this)
+//		 */
+//		logger.debug("Loading JDBC Driver");
+//		try {
+//			VirtuosoConnection c = AccessController
+//					.doPrivileged(new PrivilegedAction<VirtuosoConnection>() {
+//						public VirtuosoConnection run() {
+//							try {
+//								Class.forName(VirtuosoWeightedProvider.DRIVER,
+//										true, this.getClass().getClassLoader());
+//								return (VirtuosoConnection) DriverManager
+//										.getConnection(connStr, user, pwd);
+//							} catch (ClassNotFoundException e) {
+//								throw new RuntimeException(e);
+//							} catch (SQLException e) {
+//								throw new RuntimeException(e);
+//							}
+//						}
+//					});
+//			c.setAutoCommit(true);
+//			return c;
+//		} catch (SQLException e) {
+//			throw new RuntimeException(e);
+//		}
+//	}
+
 	/**
 	 * Retrieves the Graph (unmodifiable) with the given UriRef If no graph
 	 * exists with such name, throws a NoSuchEntityException
@@ -577,15 +599,15 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 					+ name + ")} LIMIT 1";
 
 			Statement st = null;
-			VirtuosoResultSet rs = null;
-			VirtuosoConnection connection = null;
+			ResultSet rs = null;
+			Connection connection = null;
 			Exception e = null;
 			try {
-				connection = getConnection(connStr, user, pwd);
+				connection = getConnection();
 				st = connection.createStatement();
 				logger.debug("Executing SQL: {}", SQL);
 				st.execute(SQL);
-				rs = (VirtuosoResultSet) st.getResultSet();
+				rs = (ResultSet) st.getResultSet();
 				if (rs.next() == false) {
 					// The graph is empty, it is not readable or does not exists
 					logger.debug("Graph does not exists: {}", name);
@@ -617,28 +639,24 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 			} catch (SQLException se) {
 				logger.error("Error while executing query/connection.", se);
 				e = se;
-			} catch (ClassNotFoundException ce) {
-				logger.error("Error while executing query/connection.", ce);
-				e = ce;
 			} finally {
 				try {
 					if (rs != null)
 						rs.close();
 				} catch (Exception ex) {
+					logger.error("Cannot close result set", ex);
 				}
 				;
 				try {
 					if (st != null)
 						st.close();
 				} catch (Exception ex) {
+					logger.error("Cannot close statement", ex);
 				}
-				;
-				if (connection != null) {
-					try {
-						connection.close();
-					} catch (VirtuosoException e1) {
-						logger.error("Cannot close connection", e1);
-					}
+				try{
+					if(connection != null) connection.close();
+				}catch (Exception ex) {
+					logger.error("Cannot close connection", ex);
 				}
 			}
 			if (e != null) {
@@ -650,7 +668,7 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 	}
 
 	public DataAccess createDataAccess() {
-		DataAccess da = new DataAccess(connStr, user, pwd);
+		DataAccess da = new DataAccess(pds);
 		dataAccessSet.add(da);
 		// Remember all opened ones
 		return da;
@@ -682,15 +700,15 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 		graphs.addAll(this.graphs.keySet());
 		// Returns the list of graphs in the virtuoso quad store
 		String SQL = "SPARQL SELECT DISTINCT ?G WHERE {GRAPH ?G {[] [] []} }";
-		VirtuosoConnection connection = null;
+		Connection connection = null;
 		Exception e = null;
-		VirtuosoStatement st = null;
-		VirtuosoResultSet rs = null;
+		Statement st = null;
+		ResultSet rs = null;
 		try {
 			connection = getConnection();
-			st = (VirtuosoStatement) connection.createStatement();
+			st = (Statement) connection.createStatement();
 			logger.debug("Executing SQL: {}", SQL);
-			rs = (VirtuosoResultSet) st.executeQuery(SQL);
+			rs = (ResultSet) st.executeQuery(SQL);
 			while (rs.next()) {
 				UriRef graph = new UriRef(rs.getString(1));
 				logger.debug(" > Graph {}", graph);
@@ -702,27 +720,26 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 		} catch (SQLException e1) {
 			logger.error("Error while executing query/connection.", e1);
 			e = e1;
-		} catch (ClassNotFoundException e1) {
-			logger.error("Error while executing query/connection.", e1);
-			e = e1;
 		} finally {
 
 			try {
 				if (rs != null)
 					rs.close();
 			} catch (Exception ex) {
+				logger.error("Cannot close result set", ex);
 			}
 			;
 			try {
 				if (st != null)
 					st.close();
 			} catch (Exception ex) {
+				logger.error("Cannot close statement", ex);
 			}
 			;
 			if (connection != null) {
 				try {
 					connection.close();
-				} catch (VirtuosoException e1) {
+				} catch (Throwable e1) {
 					logger.error("Cannot close connection", e1);
 				}
 			}
@@ -749,7 +766,7 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 	}
 
 	private long getPermissions(String graph) {
-		VirtuosoConnection connection = null;
+		Connection connection = null;
 		ResultSet rs = null;
 		Statement st = null;
 		logger.debug("getPermissions(String {})", graph);
@@ -772,28 +789,23 @@ public class VirtuosoWeightedProvider implements WeightedTcProvider {
 		} catch (SQLException se) {
 			logger.error("An SQL exception occurred.");
 			e = se;
-		} catch (ClassNotFoundException e1) {
-			logger.error("An ClassNotFoundException occurred.");
-			e = e1;
 		} finally {
 			try {
 				if (rs != null)
 					rs.close();
 			} catch (Exception ex) {
+				logger.error("Cannot close result set", ex);
 			}
-			;
 			try {
 				if (st != null)
 					st.close();
 			} catch (Exception ex) {
+				logger.error("Cannot close statement", ex);
 			}
-			;
-			if (connection != null) {
-				try {
-					connection.close();
-				} catch (VirtuosoException e1) {
-					logger.error("Cannot close connection", e1);
-				}
+			try{
+				if(connection != null) connection.close();
+			}catch (Exception ex) {
+				logger.error("Cannot close connection", ex);
 			}
 		}
 		if (e != null) {

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/test/java/.DS_Store
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/test/java/.DS_Store b/rdf.virtuoso.storage/src/test/java/.DS_Store
new file mode 100644
index 0000000..353ff0a
Binary files /dev/null and b/rdf.virtuoso.storage/src/test/java/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/.DS_Store
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/.DS_Store b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/.DS_Store
new file mode 100644
index 0000000..88ced45
Binary files /dev/null and b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ConnectionTest.java
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ConnectionTest.java b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ConnectionTest.java
index 6a1e4b5..2fc6e3f 100644
--- a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ConnectionTest.java
+++ b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ConnectionTest.java
@@ -21,6 +21,7 @@ package org.apache.clerezza.rdf.virtuoso.storage;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -33,9 +34,6 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import virtuoso.jdbc4.VirtuosoConnection;
-import virtuoso.jdbc4.VirtuosoException;
-
 /**
  * Tests the connection to the Virtuoso DBMS
  * 
@@ -45,27 +43,21 @@ public class ConnectionTest {
 
 	static final Logger log = LoggerFactory.getLogger(ConnectionTest.class);
 
-	private static VirtuosoConnection connection = null;
+	private static Connection connection = null;
 
 	@BeforeClass
 	public static void before() throws ClassNotFoundException, SQLException {
 		org.junit.Assume.assumeTrue(!TestUtils.SKIP);
 		connection = TestUtils.getConnection();
 	}
-
-	@Test
-	public void testIsClosed() {
-		assertFalse(connection.isClosed());
+	
+	public void testIsValid() throws SQLException {
+		assertTrue(connection.isValid(10));
 	}
 
 	@Test
-	public void testIsConnectionLost() {
-		assertFalse(connection.isConnectionLost(0));
-	}
-
-	@Test
-	public void testIsReadOnly() throws VirtuosoException {
-		assertFalse(connection.isReadOnly());
+	public void testIsClosed() throws SQLException {
+		assertFalse(connection.isClosed());
 	}
 
 	@Test
@@ -111,16 +103,16 @@ public class ConnectionTest {
 	public void test() throws ClassNotFoundException, SQLException {
 		DatabaseMetaData dm = connection.getMetaData();
 		log.debug("Username is {}", dm.getUserName());
-		Properties p = connection.getClientInfo();
-		if (p == null) {
-			log.warn("Client info is null...");
-		} else
-			for (Entry<Object, Object> e : p.entrySet()) {
-				log.info("Client info property: {} => {}", e.getKey(),
-						e.getValue());
-			}
+//		Properties p = connection.getClientInfo();
+//		if (p == null) {
+//			log.warn("Client info is null...");
+//		} else
+//			for (Entry<Object, Object> e : p.entrySet()) {
+//				log.info("Client info property: {} => {}", e.getKey(),
+//						e.getValue());
+//			}
 		String SQL = "SELECT DISTINCT id_to_iri(G) FROM DB.DBA.RDF_QUAD quad ";
-		VirtuosoConnection cn = TestUtils.getConnection();
+		Connection cn = TestUtils.getConnection();
 		long startAt = System.currentTimeMillis();
 		// get the list of quad using SQL
 		log.debug("Executing SQL: {}", SQL);

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/TestUtils.java
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/TestUtils.java b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/TestUtils.java
index e96d62b..e39d761 100644
--- a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/TestUtils.java
+++ b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/TestUtils.java
@@ -18,6 +18,7 @@
  */
 package org.apache.clerezza.rdf.virtuoso.storage;
 
+import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
@@ -27,10 +28,8 @@ import org.apache.clerezza.rdf.virtuoso.storage.access.VirtuosoWeightedProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import virtuoso.jdbc4.VirtuosoConnection;
 import virtuoso.jdbc4.VirtuosoExtendedString;
 import virtuoso.jdbc4.VirtuosoRdfBox;
-import virtuoso.jdbc4.VirtuosoResultSet;
 
 /**
  * Utilities for tests
@@ -43,10 +42,8 @@ public class TestUtils {
 	public static final String FOAF_NS = "http://xmlns.com/foaf/0.1/";
 
 	private static VirtuosoWeightedProvider provider = null;
-	private static String jdbcConnectionString = null;
 	private static String jdbcUser = null;
 	private static String jdbcPassword = null;
-	private static String jdbcDriver = null;
 
 	static Logger log = LoggerFactory.getLogger(TestUtils.class);
 	public static boolean SKIP = false;
@@ -59,7 +56,7 @@ public class TestUtils {
 			SKIP = !skipProperty.equals("true");
 	}
 
-	public static VirtuosoConnection getConnection() throws SQLException, ClassNotFoundException{
+	public static Connection getConnection() throws SQLException, ClassNotFoundException{
 		return getProvider().getConnection();
 	}
 	public static VirtuosoWeightedProvider getProvider()
@@ -80,7 +77,6 @@ public class TestUtils {
 		String port = System.getProperty("virtuoso.port");
 		jdbcUser = System.getProperty("virtuoso.user");
 		jdbcPassword = System.getProperty("virtuoso.password");
-		jdbcDriver = System.getProperty("virtuoso.driver");
 		if (host == null) {
 			host = "localhost";
 			log.info("Missing param 'host', setting to default: {}", host);
@@ -98,24 +94,10 @@ public class TestUtils {
 			log.info("Missing param 'password', setting to default: {}",
 					jdbcPassword);
 		}
-		if (jdbcDriver == null) {
-			jdbcDriver = "virtuoso.jdbc4.Driver";
-			log.info("Missing param 'password', setting to default: {}",
-					jdbcDriver);
-		}
-
-		StringBuilder cb = new StringBuilder();
-		cb.append("jdbc:virtuoso://");
-		cb.append(host);
-		cb.append(":");
-		cb.append(port).append("/CHARSET=UTF-8");
-		jdbcConnectionString = cb.toString();
-//		Class.forName(VirtuosoWeightedProvider.DRIVER);
+		
 		log.info("Create provider");
-//		connection = (VirtuosoConnection) DriverManager.getConnection(
-//				jdbcConnectionString, jdbcUser, jdbcPassword);
-		provider = new VirtuosoWeightedProvider(jdbcConnectionString, jdbcUser, jdbcPassword);
-		log.debug("Connection URL: {}", jdbcConnectionString);
+		provider = new VirtuosoWeightedProvider(host, Integer.valueOf(port), jdbcUser, jdbcPassword);
+		log.debug("Connection to: {}:{}", host, port);
 		log.debug("Connection user: {}", jdbcUser);
 	}
 
@@ -132,7 +114,7 @@ public class TestUtils {
 			while (rs.next()) {
 				for (int i = 1; i <= rsmd.getColumnCount(); i++) {
 					String s = rs.getString(i);
-					Object o = ((VirtuosoResultSet) rs).getObject(i);
+					Object o = ((ResultSet) rs).getObject(i);
 					if (o instanceof VirtuosoExtendedString) {
 						// In case is IRI
 						VirtuosoExtendedString vs = (VirtuosoExtendedString) o;

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ThreadSafetyTest.java
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ThreadSafetyTest.java b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ThreadSafetyTest.java
index fb418ab..fd2939f 100644
--- a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ThreadSafetyTest.java
+++ b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/ThreadSafetyTest.java
@@ -95,7 +95,7 @@ public class ThreadSafetyTest {
 		// Produce first...
 		Future<Result> fp = executor.submit(new Producer("A", 100));
 		fp.get().assertResult();
-
+		
 		// ...and then consume
 		Future<Result> fc = executor.submit(new Consumer("A", 100));
 		fc.get().assertResult();
@@ -227,9 +227,10 @@ public class ThreadSafetyTest {
 				final Triple t = createTriple(elementName);
 				if (mgraph.add(t)) {
 					counter++;
+					log.debug("Produced {} {}", collectionName, counter);
 					yield();
 				} else {
-					System.out.println("WARNING: element " + t + "NOT created");
+					log.warn("WARNING: element {} NOT created", t);
 				}
 			}
 			return new Result(collectionName, "Produced elements", numElements,
@@ -293,6 +294,7 @@ public class ThreadSafetyTest {
 					if (triple != null && mgraph.remove(triple)) {
 						counter++;
 					}
+					log.debug("Consumed {} {}", collectionName, counter);
 				} finally {
 					mgraph.getLock().writeLock().unlock();
 				}

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccessTest.java
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccessTest.java b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccessTest.java
index 3ca89f0..5e5146b 100644
--- a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccessTest.java
+++ b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/DataAccessTest.java
@@ -102,28 +102,28 @@ public class DataAccessTest {
 		testTriple(t);
 	}
 	
-	@Test
-	public void testRenew(){
-		int i = 100;
-		while(i>0){
-			test_Uri_Uri_Uri();
-			test_Uri_Uri_PlainLiteral();
-			i--;
-		}
-		da.renew();
-		i = 100;
-		while(i>0){
-			test_Uri_Uri_Uri();
-			test_Uri_Uri_PlainLiteral();
-			i--;
-		}
-		da.renew();
-		i = 100;
-		while(i>0){
-			test_Uri_Uri_Uri();
-			test_Uri_Uri_PlainLiteral();
-			i--;
-		}
-	}
+//	@Test
+//	public void testRenew(){
+//		int i = 100;
+//		while(i>0){
+//			test_Uri_Uri_Uri();
+//			test_Uri_Uri_PlainLiteral();
+//			i--;
+//		}
+//		da.renew();
+//		i = 100;
+//		while(i>0){
+//			test_Uri_Uri_Uri();
+//			test_Uri_Uri_PlainLiteral();
+//			i--;
+//		}
+//		da.renew();
+//		i = 100;
+//		while(i>0){
+//			test_Uri_Uri_Uri();
+//			test_Uri_Uri_PlainLiteral();
+//			i--;
+//		}
+//	}
 
 }

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProviderTest.java
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProviderTest.java b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProviderTest.java
index 0ac3a27..4bfa40e 100644
--- a/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProviderTest.java
+++ b/rdf.virtuoso.storage/src/test/java/org/apache/clerezza/rdf/virtuoso/storage/access/VirtuosoWeightedProviderTest.java
@@ -43,6 +43,7 @@ import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -61,7 +62,7 @@ public class VirtuosoWeightedProviderTest {
 			.getLogger(VirtuosoWeightedProviderTest.class);
 
 	private static final String TEST_GRAPH_URI = "VirtuosoWeightedProviderTest";
-
+	
 	private static VirtuosoWeightedProvider wp = null;
 
 	@BeforeClass
@@ -238,7 +239,7 @@ public class VirtuosoWeightedProviderTest {
 			// Nothing to do
 		}
 	}
-	
+	@Ignore
 	@Test
 	public void testCreateEmptyMGraph(){
 		log.info("testCreateEmptyMGraph()");
@@ -246,14 +247,20 @@ public class VirtuosoWeightedProviderTest {
 			UriRef ur = new UriRef("urn:my-empty-graph");
 			Assert.assertFalse(wp.listGraphs().contains(ur));
 			Assert.assertFalse(wp.listMGraphs().contains(ur));
+			log.info("--1");
 			wp.createMGraph(ur);
+			log.info("--2");
 			Assert.assertTrue(wp.canRead(ur));
 			Assert.assertTrue(wp.canModify(ur));
+			log.info("--3");
 			Assert.assertTrue(wp.listGraphs().contains(ur));
 			Assert.assertTrue(wp.listMGraphs().contains(ur));
+			log.info("--4");
 			wp.deleteTripleCollection(ur);
+			log.info("--5");
 			Assert.assertFalse(wp.listGraphs().contains(ur));
 			Assert.assertFalse(wp.listMGraphs().contains(ur));
+			log.info("--6");
 //		} catch (NoSuchEntityException nsee) {
 //			// Nothing to do
 //		}

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/test/resources/.DS_Store
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/test/resources/.DS_Store b/rdf.virtuoso.storage/src/test/resources/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/rdf.virtuoso.storage/src/test/resources/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/clerezza/blob/385f0b58/rdf.virtuoso.storage/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/rdf.virtuoso.storage/src/test/resources/log4j.properties b/rdf.virtuoso.storage/src/test/resources/log4j.properties
index ad89d4d..a544ea6 100644
--- a/rdf.virtuoso.storage/src/test/resources/log4j.properties
+++ b/rdf.virtuoso.storage/src/test/resources/log4j.properties
@@ -1,6 +1,6 @@
-log4j.rootLogger=INFO, S
+log4j.rootLogger=TRACE, S
 log4j.appender.S = org.apache.log4j.ConsoleAppender
 log4j.appender.S.layout = org.apache.log4j.PatternLayout
 log4j.appender.S.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
 
-log4j.logger.rdf.virtuoso.storage=DEBUG
+log4j.logger.org.apache.clerezza.rdf.virtuoso.storage.access=TRACE


Mime
View raw message