baliuka 02/04/13 06:28:09
Modified: simplestore/src/java/org/apache/commons/simplestore/jdbc
DriverDataSource.java
simplestore/src/java/org/apache/commons/simplestore/persistence/impl
PersistentProxy.java
simplestore/src/test/org/apache/commons/simplestore
TestSample.java
Log:
Revision Changes Path
1.10 +27 -11
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/jdbc/DriverDataSource.java
Index: DriverDataSource.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/jdbc/DriverDataSource.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DriverDataSource.java 19 Mar 2002 12:48:08 -0000 1.9
+++ DriverDataSource.java 13 Apr 2002 13:28:09 -0000 1.10
@@ -78,7 +78,7 @@
/**
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: DriverDataSource.java,v 1.9 2002/03/19 12:48:08 baliuka Exp $
+ *@version $Id: DriverDataSource.java,v 1.10 2002/04/13 13:28:09 baliuka Exp $
*
*/
public class DriverDataSource implements ConnectionFactory {
@@ -213,14 +213,17 @@
synchronized (this) {
if (connection == null) {
- connection = new ConnectionWrapper[maxConnections];
+ connection =
+ new ConnectionWrapper[
+ maxConnections < 1 ? 1 : maxConnections
+ ];
}
int i = 0;
while ( true ) { // must loop and wait not used connection
- if (connection[i] != null) { // if we will return used
connection, it is very possible
- if (!connection[i].isUsed()) { // we will break transaction
demarcation
- counter = i; // it is not a problem for
"readonly" data
+ if (connection[i] != null) {
+ if (!connection[i].isUsed()) {
+ counter = i;
if (connection[ i ].isClosed()) { // expired ?
try {
@@ -230,6 +233,7 @@
} catch (Exception ignore) {
}
+
connection[ i ] = newConnection();
}
@@ -242,7 +246,9 @@
i = ( i + 1 ) % maxConnections;
try{
- if( i == 0 ) wait();
+ if( i == 0 ) {
+ wait( 1000 );
+ }
}catch( java.lang.InterruptedException ie ){
@@ -289,7 +295,7 @@
class ConnectionProxy implements InvocationHandler {
- boolean used = true;
+ private Thread used;
private Connection connection;
private ConnectionFactory ds;
@@ -302,7 +308,7 @@
throws Throwable{
if( method.getName().equals("close") ) {
- used = false;
+ used = null;
synchronized( ds ){
ds.notifyAll();
}
@@ -312,11 +318,21 @@
connection.close();
return null;
}else if (method.getName().equals("isUsed")){
- return new Boolean(used);
+
+ return ( used == null || !used.isAlive() ||
+ used == Thread.currentThread()
+
+ ) ? Boolean.FALSE : Boolean.TRUE ;
+
+
}else if (method.getName().equals("setUsed")){
- used = ((Boolean) args[0] ).booleanValue();
+ if( ((Boolean) args[0] ).booleanValue()){
+ used = Thread.currentThread();
+ }else{
+ used = null;
+ }
return null;
- }else return method.invoke(connection,args) ;
+ }else return method.invoke(connection,args) ;
}
public static ConnectionWrapper create(Connection connection, ConnectionFactory
ds){
return (ConnectionWrapper)
1.26 +2 -2
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/PersistentProxy.java
Index: PersistentProxy.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/PersistentProxy.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- PersistentProxy.java 3 Apr 2002 18:17:08 -0000 1.25
+++ PersistentProxy.java 13 Apr 2002 13:28:09 -0000 1.26
@@ -77,7 +77,7 @@
* [EMAIL PROTECTED]</a>
*@author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: PersistentProxy.java,v 1.25 2002/04/03 18:17:08 baliuka Exp $
+ *@version $Id: PersistentProxy.java,v 1.26 2002/04/13 13:28:09 baliuka Exp $
*/
public class PersistentProxy
implements MetaObject, org.apache.commons.simplestore.tools.Constants ,
@@ -343,7 +343,7 @@
retrieveObject( method.getReturnType(),value );
}
- return value;
+ return
m_context.getTypeConverter().toAppType(value,method.getReturnType());
}
throw new java.lang.NoSuchMethodError("pure method invoked: " + method);
}
1.21 +38 -37
jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestSample.java
Index: TestSample.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestSample.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- TestSample.java 24 Mar 2002 09:24:31 -0000 1.20
+++ TestSample.java 13 Apr 2002 13:28:09 -0000 1.21
@@ -72,7 +72,7 @@
/**
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: TestSample.java,v 1.20 2002/03/24 09:24:31 baliuka Exp $
+ *@version $Id: TestSample.java,v 1.21 2002/04/13 13:28:09 baliuka Exp $
*/
public class TestSample extends TestCase implements
org.apache.commons.simplestore.tools.Constants{
@@ -101,22 +101,22 @@
Object oid = pm.getOID(object1);
object1.doSomething(object1.toString());
transaction.commit();
-
+
transaction.begin();
TestPersistentClassType object2 = (TestPersistentClassType)
pm.findInstance(TestPersistentClassType.class, oid);
transaction.commit();
transaction.begin();
TestPersistentClassType object3 = (TestPersistentClassType)
pm.createInstance(TestPersistentClassType.class);
- try{
-
- object3.setNuls();
- fail("ValidationException expected");
-
- }catch(ValidationException ve){
- if(DEBUG)
- ve.printStackTrace();
- }
+ try{
+
+ object3.setNuls();
+ fail("ValidationException expected");
+
+ }catch(ValidationException ve){
+ if(DEBUG)
+ ve.printStackTrace();
+ }
object3.setDateVal(new java.util.Date());
object3.setIntVal(i);
object3.setFloatVal(i / 2);
@@ -140,20 +140,21 @@
transaction.begin();
java.util.Set objects = pm.findAll(TestPersistentClassType.class);
- if( DEBUG )
- System.out.println("retrieved " + objects.size());
+
+ if( DEBUG )
+ System.out.println("retrieved " + objects.size());
java.util.Iterator i = objects.iterator();
while (i.hasNext()) {
TestPersistentClassType object = (TestPersistentClassType) i.next();
- object.toString();
- object.getBoolVal();
- object.getDateVal();
- object.getIntVal();
- object.getFloatVal();
- object.getStrVal1();
- object.getParent();
+ object.toString();
+ object.getBoolVal();
+ object.getDateVal();
+ object.getIntVal();
+ object.getFloatVal();
+ object.getStrVal1();
+ object.getParent();
}
@@ -186,8 +187,8 @@
transaction.begin();
TestPersistentClassType object = (TestPersistentClassType)
pm.createInstance(TestPersistentClassType.class);
object.setStrVal("Test roolback on new created " + object);
- if( DEBUG )
- System.out.println(object.getStrVal());
+ if( DEBUG )
+ System.out.println(object.getStrVal());
transaction.rollback();
transaction.begin();
@@ -222,21 +223,21 @@
protected void setUp() throws java.lang.Exception {
super.setUp();
long time = System.currentTimeMillis();
- if(false){
- DBPersistenceManagerFactory factory = new DBPersistenceManagerFactory();
- factory.setDriver("org.hsqldb.jdbcDriver");
- factory.setUrl("jdbc:hsqldb:sample");
- factory.setUser("sa");
- factory.setPassword("");
- factory.setMaxConnections(1);
- factory.setMetaResource("org/apache/commons/simplestore/storage.xml");
- pm = factory.getPersistenceManager();
- }else{
- JDBMPersistenceManagerFactory factory = new JDBMPersistenceManagerFactory();
- factory.setFile("sample");
- factory.setMetaResource("org/apache/commons/simplestore/storage.xml");
- pm = factory.getPersistenceManager();
- }
+ if(true){
+ DBPersistenceManagerFactory factory = new DBPersistenceManagerFactory();
+ factory.setDriver("org.hsqldb.jdbcDriver");
+ factory.setUrl("jdbc:hsqldb:sample");
+ factory.setUser("sa");
+ factory.setPassword("");
+ factory.setMaxConnections(1);
+ factory.setMetaResource("org/apache/commons/simplestore/storage.xml");
+ pm = factory.getPersistenceManager();
+ }else{
+ JDBMPersistenceManagerFactory factory = new
JDBMPersistenceManagerFactory();
+ factory.setFile("sample");
+ factory.setMetaResource("org/apache/commons/simplestore/storage.xml");
+ pm = factory.getPersistenceManager();
+ }
System.out.println("Setup: " + ( System.currentTimeMillis()/1000f -
time/1000f ) );
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>