/* * 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.jena.sdb.test.misc; import static org.junit.Assert.assertTrue; import org.apache.jena.graph.Graph ; import org.apache.jena.graph.Triple ; import org.apache.jena.sdb.SDBFactory ; import org.apache.jena.sdb.Store ; import org.apache.jena.sdb.sql.SDBConnection ; import org.apache.jena.sdb.sql.SDBConnectionFactory ; import org.apache.jena.sdb.store.StoreFactory ; import org.apache.jena.sdb.test.junit.ParamAllStores ; import org.apache.jena.sparql.sse.SSE ; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @RunWith(Parameterized.class) public class TestConnectionPooled extends ParamAllStores { java.sql.Connection conn ; // Use "AllStores" so the JDBC connections are already there public TestConnectionPooled(String name, Store store) { super(name, store) ; } @Before public void before() { store.getTableFormatter().create() ; conn = store.getConnection().getSqlConnection() ; } @After public void after() { } @Test public void reuseJDBCConection() { Triple t1 = SSE.parseTriple("(:x1 :p :z)") ; Triple t2 = SSE.parseTriple("(:x2 :p :z)") ; boolean explicitTransactions = false ; // Make store. { SDBConnection sConn1 = SDBConnectionFactory.create(conn) ; Store store1 = StoreFactory.create(sConn1, store.getLayoutType(), store.getDatabaseType()) ; if ( explicitTransactions ) store1.getConnection().getTransactionHandler().begin() ; Graph graph1 = SDBFactory.connectDefaultGraph(store1) ; graph1.add(t1) ; assertTrue(graph1.contains(t1)) ; if ( explicitTransactions ) { store1.getConnection().getTransactionHandler().commit() ; assertTrue(graph1.contains(t1)) ; } //store1.close() ; } // Mythically return conn to the pool. // Get from pool // i.e. same connection. Make a store around it { SDBConnection sConn2 = SDBConnectionFactory.create(conn) ; Store store2 = StoreFactory.create(sConn2, store.getLayoutType(), store.getDatabaseType()) ; if ( explicitTransactions ) store2.getConnection().getTransactionHandler().begin() ; Graph graph2 = SDBFactory.connectDefaultGraph(store2) ; assertTrue(graph2.contains(t1)) ; graph2.add(t2) ; assertTrue(graph2.contains(t2)) ; if ( explicitTransactions ) store2.getConnection().getTransactionHandler().commit() ; //store2.close() ; } System.exit(0) ; } }