baliuka 2002/06/09 01:01:31
Modified: simplestore build.properties.sample build.xml
simplestore/src/java/org/apache/commons/simplestore/cache/impl
SoftRefMemoryCache.java
simplestore/src/java/org/apache/commons/simplestore/persistence
Context.java MetaObject.java
simplestore/src/java/org/apache/commons/simplestore/persistence/impl
AbstractStorage.java ContextImpl.java
DefaultTypeConverter.java
PersistenceManagerImpl.java PersistentProxy.java
TransactionImpl.java
simplestore/src/jdbc/org/apache/commons/simplestore/jdbc
DBPersistenceManagerFactory.java DBStorage.java
DriverDataSource.java TypeNameMapImpl.properties
simplestore/src/test/org/apache/commons/simplestore
TestEnhancer.java TestSample.java
Log:
Revision Changes Path
1.8 +6 -1 jakarta-commons-sandbox/simplestore/build.properties.sample
Index: build.properties.sample
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/build.properties.sample,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- build.properties.sample 7 Mar 2002 14:20:27 -0000 1.7
+++ build.properties.sample 9 Jun 2002 08:01:30 -0000 1.8
@@ -1,4 +1,4 @@
-$Id: build.properties.sample,v 1.7 2002/03/07 14:20:27 froehlich Exp $
+$Id: build.properties.sample,v 1.8 2002/06/09 08:01:30 baliuka Exp $
# See the README.txt file for details
@@ -22,4 +22,9 @@
# swapping. Set it low and you'll see
# swapping working.
maxmemory=100000
+db.driver=org.postgresql.Driver
+db.url=jdbc:postgresql:test
+db.user=user
+db.password=
+
1.31 +13 -27 jakarta-commons-sandbox/simplestore/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/build.xml,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- build.xml 25 May 2002 13:48:58 -0000 1.30
+++ build.xml 9 Jun 2002 08:01:30 -0000 1.31
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="all" name="simplestore">
-<!-- "simplestore" component of the Jakarta Commons Subproject $Id:
build.xml,v 1.30 2002/05/25 13:48:58 baliuka Exp $ -->
+<!-- "simplestore" component of the Jakarta Commons Subproject $Id:
build.xml,v 1.31 2002/06/09 08:01:30 baliuka Exp $ -->
<!-- ========== Executable Targets ======================================== -->
@@ -272,38 +272,24 @@
</target>
-<target name="create-test-table">
-<sql driver="org.hsqldb.jdbcDriver" onerror="continue" password=""
url="jdbc:hsqldb:sample" userid="sa">
- <classpath>
- <fileset dir="./lib">
- <include name="*.*"/>
- </fileset>
- </classpath>
- CREATE TABLE TEST_PERSISTENT ( ID bigint not null primary key, parent_object
bigint,Bool_Val smallint,
- Int_Val integer, Float_Val float, Date_Val date, Str_Val longVarChar,
s_1_str_val longVarChar ) ;
-
- </sql>
-</target>
-
-<target name="drop-test-table">
-<sql driver="org.hsqldb.jdbcDriver" onerror="continue" password=""
url="jdbc:hsqldb:sample" userid="sa">
- <classpath>
- <fileset dir="./lib">
- <include name="*.*"/>
- </fileset>
- </classpath>
- DROP TABLE TEST_PERSISTENT;
-
- </sql>
-</target>
- <target depends="build-test" description="runs (junit) unit tests" name="test">
- <java classname="${test.runner}" failonerror="${test.failonerror}" fork="yes"
maxmemory="${maxmemory}">
+ <target depends="init,build-test"
+ description="runs (junit) unit tests"
+ name="test">
+ <java classname="${test.runner}"
+ failonerror="${test.failonerror}"
+ fork="yes"
+ maxmemory="${maxmemory}">
+
<!-- jvmarg value="-Xrunhprof:cpu=times,file=debug.txt" / -->
<!-- jvmarg value="-verbose:gc" / -->
<!-- jvmarg value="-verbose:class" / -->
<sysproperty key="DEBUG" value="false"/>
+ <sysproperty key="db.driver" value="${db.driver}"/>
+ <sysproperty key="db.url" value="${db.url}"/>
+ <sysproperty key="db.user" value="${db.user}"/>
+ <sysproperty key="db.password" value="${db.password}"/>
<arg value="${test.entry}"/>
<classpath>
<pathelement path="${build.home}/classes"/>
1.5 +3 -7
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/cache/impl/SoftRefMemoryCache.java
Index: SoftRefMemoryCache.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/cache/impl/SoftRefMemoryCache.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SoftRefMemoryCache.java 10 Mar 2002 12:32:30 -0000 1.4
+++ SoftRefMemoryCache.java 9 Jun 2002 08:01:30 -0000 1.5
@@ -65,9 +65,9 @@
* [EMAIL PROTECTED]</a>
*@author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: SoftRefMemoryCache.java,v 1.4 2002/03/10 12:32:30 baliuka Exp $
+ *@version $Id: SoftRefMemoryCache.java,v 1.5 2002/06/09 08:01:30 baliuka Exp $
*/
-public class SoftRefMemoryCache implements Cache,
org.apache.commons.simplestore.tools.Constants {
+public final class SoftRefMemoryCache implements Cache{
@@ -140,10 +140,6 @@
while (ref != null) {
m_map.remove(ref.key);
-
- if (DEBUG) {
- System.out.println("Key " + ref.key + " removed from Reference
queue, map size is " + m_map.size());
- }
ref = (SoftRef) m_queue.poll();
}
}
@@ -160,7 +156,7 @@
m_map.put(key, ref);
}
- static class SoftRef extends SoftReference {
+ final static class SoftRef extends SoftReference {
Object key;
private SoftRef(Object key, Object object, ReferenceQueue queue) {
1.6 +1 -9
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/Context.java
Index: Context.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/Context.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Context.java 20 Apr 2002 10:30:18 -0000 1.5
+++ Context.java 9 Jun 2002 08:01:31 -0000 1.6
@@ -74,7 +74,7 @@
* </pre>
* @author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- * @version $Id: Context.java,v 1.5 2002/04/20 10:30:18 baliuka Exp $
+ * @version $Id: Context.java,v 1.6 2002/06/09 08:01:31 baliuka Exp $
*/
public interface Context {
@@ -110,14 +110,6 @@
*/
public TypeConverter getTypeConverter();
- /** interceptor calls this method before invoking any public
- * or protected method on persistent object
- * @param object persistent
- * @param method intercepted method
- * @param args params
- */
-
- public void onInvoke(java.lang.Object object, java.lang.reflect.Method method,
Object[] args);
}
1.7 +2 -3
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/MetaObject.java
Index: MetaObject.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/MetaObject.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- MetaObject.java 15 May 2002 18:15:40 -0000 1.6
+++ MetaObject.java 9 Jun 2002 08:01:31 -0000 1.7
@@ -60,7 +60,7 @@
* used internaly by implementation
* @author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- * @version $Id: MetaObject.java,v 1.6 2002/05/15 18:15:40 baliuka Exp $
+ * @version $Id: MetaObject.java,v 1.7 2002/06/09 08:01:31 baliuka Exp $
*/
public interface MetaObject extends Cloneable {
@@ -147,9 +147,8 @@
*/
public MetaClass getMetaClass();
- public void afterCommit();
- public void afterRollback();
+
}
1.16 +2 -2
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/AbstractStorage.java
Index: AbstractStorage.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/AbstractStorage.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- AbstractStorage.java 25 May 2002 13:48:58 -0000 1.15
+++ AbstractStorage.java 9 Jun 2002 08:01:31 -0000 1.16
@@ -71,7 +71,7 @@
/**
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: AbstractStorage.java,v 1.15 2002/05/25 13:48:58 baliuka Exp $
+ *@version $Id: AbstractStorage.java,v 1.16 2002/06/09 08:01:31 baliuka Exp $
*/
public abstract class AbstractStorage
@@ -253,7 +253,7 @@
public final void enumerate(Class clasz, EnumeratorCallback callback) throws
StorageException {
- final java.util.Set objects = new java.util.HashSet();
+ final java.util.Set objects = new java.util.HashSet(1000);
//find uncommited objects first
java.util.Collection tObjects =
context.getTransactionManager().getTransaction().getTransactionalObjects();
1.6 +7 -9
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/ContextImpl.java
Index: ContextImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/ContextImpl.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ContextImpl.java 20 Apr 2002 10:30:18 -0000 1.5
+++ ContextImpl.java 9 Jun 2002 08:01:31 -0000 1.6
@@ -62,16 +62,16 @@
*
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: ContextImpl.java,v 1.5 2002/04/20 10:30:18 baliuka Exp $
+ *@version $Id: ContextImpl.java,v 1.6 2002/06/09 08:01:31 baliuka Exp $
*/
public class ContextImpl implements Context {
- MetaClass metaClass;
- Storage storage;
- Cache cache;
- TransactionManager transactionManager;
- TypeConverter typeConverter;
- OIDGenerator generator;
+ final MetaClass metaClass;
+ final Storage storage;
+ final Cache cache;
+ final TransactionManager transactionManager;
+ final TypeConverter typeConverter;
+ final OIDGenerator generator;
/** Creates new ContextImpl */
public ContextImpl( MetaClass metaClass,TypeConverter typeConverter,
@@ -117,7 +117,5 @@
return typeConverter;
}
- public void onInvoke(java.lang.Object object, java.lang.reflect.Method method,
Object[] args) {
- }
}
1.6 +15 -1
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/DefaultTypeConverter.java
Index: DefaultTypeConverter.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/DefaultTypeConverter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DefaultTypeConverter.java 1 Apr 2002 17:08:09 -0000 1.5
+++ DefaultTypeConverter.java 9 Jun 2002 08:01:31 -0000 1.6
@@ -61,7 +61,7 @@
*
*@author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: DefaultTypeConverter.java,v 1.5 2002/04/01 17:08:09 baliuka Exp $
+ *@version $Id: DefaultTypeConverter.java,v 1.6 2002/06/09 08:01:31 baliuka Exp $
*/
public class DefaultTypeConverter implements TypeConverter {
@@ -138,6 +138,19 @@
if ( cls.isPrimitive() && object instanceof Number) {
return convertPrimitives((Number) object, cls);
}
+
+ if( cls == String.class && object.getClass() == byte[].class ){
+ return new String((byte[])object);
+ }
+
+ if( cls == byte[].class && object.getClass() == String.class ){
+ return ((String)object).getBytes();
+ }
+
+ if( cls == char[].class && object.getClass() == String.class ){
+ return ((String)object).toCharArray();
+ }
+
return object;
@@ -155,6 +168,7 @@
if (object instanceof java.util.Date && !(object instanceof java.sql.Date))
{
return new java.sql.Date(((java.util.Date) object).getTime());
}
+
return object;
}
1.7 +2 -2
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/PersistenceManagerImpl.java
Index: PersistenceManagerImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/PersistenceManagerImpl.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- PersistenceManagerImpl.java 25 May 2002 13:48:58 -0000 1.6
+++ PersistenceManagerImpl.java 9 Jun 2002 08:01:31 -0000 1.7
@@ -73,7 +73,7 @@
/**
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: PersistenceManagerImpl.java,v 1.6 2002/05/25 13:48:58 baliuka
Exp $
+ *@version $Id: PersistenceManagerImpl.java,v 1.7 2002/06/09 08:01:31 baliuka
Exp $
*/
public class PersistenceManagerImpl implements PersistenceManager{
@@ -134,7 +134,7 @@
if(cachedSet != null)
return cachedSet;
- final java.util.Set set = new java.util.HashSet();
+ final java.util.Set set = new java.util.HashSet(1000);
context.getStorage().enumerate(clasz,
new EnumeratorCallback(){
1.40 +50 -82
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.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- PersistentProxy.java 2 Jun 2002 11:53:35 -0000 1.39
+++ PersistentProxy.java 9 Jun 2002 08:01:31 -0000 1.40
@@ -77,7 +77,7 @@
* [EMAIL PROTECTED]</a>
*@author Gerhard Froehlich <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: PersistentProxy.java,v 1.39 2002/06/02 11:53:35 baliuka Exp $
+ *@version $Id: PersistentProxy.java,v 1.40 2002/06/09 08:01:31 baliuka Exp $
*/
public class PersistentProxy
implements MetaObject, org.apache.commons.simplestore.tools.Constants ,
@@ -103,12 +103,12 @@
private Class m_clazz;
private MetaClass m_metaClass;
private Context m_context;
- private void setState(boolean flag,int state){
- lock();
- this.state = flag ? this.state | state : this.state & ~state;
+
+ synchronized private void setState(boolean flag,int state){
+ this.state = flag ? this.state | state : this.state & ~state;
}
- private boolean getState( int state ){
- lock();
+ synchronized boolean getState( int state ){
+
return ( this.state & state ) != 0;
}
public PersistentProxy(Class clazz,
@@ -176,16 +176,16 @@
return this;
}
- public Object[] getProperties() {
+ synchronized public Object[] getProperties() {
return m_props;
}
- public Object getProperty(int index) {
+ synchronized public Object getProperty(int index) {
return m_props[index];
}
- public void setProperty(int index, Object value) {
+ synchronized public void setProperty(int index, Object value) {
Object old = m_props[ index ];
if (old == null || !old.equals(value)) {
@@ -251,9 +251,7 @@
throw e;
}
if( invokedSuper ){
- if( e != null){
- throw e;
- }
+
return retValFromSuper;
}
return invoke(obj,method,args);
@@ -261,38 +259,35 @@
}
public boolean invokeSuper(Object obj,Method method,Object[] args) throws
Throwable{
- if( Enhancer.equals(method, HASH_CODE) ||
- Enhancer.equals(method,EQUALS) ||
- Enhancer.equals(method,GET_META_OBJECT)||
- Enhancer.equals(method,GET_OID) ){
+ if( method.equals( HASH_CODE ) ||
+ method.equals( EQUALS ) ||
+ method.equals( GET_META_OBJECT )||
+ method.equals( GET_OID ) ){
return false;
}else return true;
}
- public Object beforeInvoke(Object obj,Method method,Object[] args) throws
Throwable{
- m_context.onInvoke(obj,method,args);
- return null;
- }
+
public Object invoke(Object obj, Method method, Object[] obj2) throws Throwable
{
- synchronized (this) {
- if ( Enhancer.equals(method,GET_META_OBJECT) ) {
- return this;
- } else if (Enhancer.equals(method,TO_STRING)) {
- return toString();
- } else if (Enhancer.equals(method,GET_OID)) {
- return m_oid;
-
- } else if ( Enhancer.equals(method,HASH_CODE)) {
- if (m_oid == null) {
- return new Integer(0);
- }
- return new Integer(m_oid.hashCode());
- } else if ( Enhancer.equals( method, EQUALS) ) {
- return handleEquals(obj2[0]);
- } else {
- return handleProperty(obj, method, obj2);
+
+ if ( method.equals(GET_META_OBJECT) ) {
+ return this;
+ } else if (method.equals(TO_STRING)) {
+ return toString();
+ } else if (method.equals(GET_OID)) {
+ return m_oid;
+
+ } else if ( method.equals(HASH_CODE)) {
+ if (m_oid == null) {
+ return new Integer(0);
}
+ return new Integer(m_oid.hashCode());
+ } else if ( method.equals(EQUALS) ) {
+ return handleEquals(obj2[0]);
+ } else {
+ return handleProperty(obj, method, obj2);
}
+
}
public String toString(){
@@ -317,7 +312,7 @@
}
Object value = getProperty(index);;
if( value != null && m_metaClass.isReference( method ) ){
- return m_context.getStorage().
+ return m_context.getStorage().
retrieveObject( method.getReturnType(),value );
}
@@ -381,36 +376,26 @@
}
- private void lock(){
-
- if( lock != null && lock != Thread.currentThread() ){
- try{
- if( TRANSACTION_TIMEOUT < 0){
- System.out.println("WAIT");
- wait();
- }else wait(TRANSACTION_TIMEOUT);
- }catch(Exception e){ }
-
- lock = Thread.currentThread();
- }
-
- }
+
private Object handleProperty(Object obj, Method method, Object[] params)
throws Throwable {
- if( isClean() || isDeleted() )
- throw new IllegalStateException("Object properties invalidated");
-
- lock();
-
- if ( method.getReturnType() == Void.TYPE && params.length == 1 ) {
- writeProperty( method, params[0] );
- return null;
- } else if( params.length == 0 ){
+ synchronized (this) {
+
+ if( isClean() || isDeleted() )
+ throw new IllegalStateException("Object properties invalidated");
- return readProperty(method);
+
+
+ if ( method.getReturnType() == Void.TYPE && params.length == 1 ) {
+ writeProperty( method, params[0] );
+ return null;
+ } else if( params.length == 0 ){
+
+ return readProperty(method);
+ }
+ throw new java.lang.NoSuchMethodError("pure method invoked: " + method);
}
- throw new java.lang.NoSuchMethodError("pure method invoked: " + method);
}
public void remove() {
@@ -419,14 +404,14 @@
setState( true, DELETED );
}
- public Object clone() throws CloneNotSupportedException {
+ synchronized public Object clone() throws CloneNotSupportedException {
PersistentProxy cln = (PersistentProxy) super.clone();
cln.m_props = (Object[])m_props.clone();
return cln;
}
- public void assign(MetaObject mo) {
+ synchronized public void assign(MetaObject mo) {
System.arraycopy(((PersistentProxy)mo).m_props,0,m_props,0,m_props.length);
m_oid = mo.getOID();
@@ -439,24 +424,7 @@
public boolean isClean() {
return getState(CLEAN);
}
- public void afterCommit(){
- if(lock != null){
- synchronized(this){
- try{
-
- notifyAll();
-
- }catch(Exception e){}
-
- lock = null;
- }
-
- }
- }
- public void afterRollback(){
- afterCommit();
- }
static final long TRANSACTION_TIMEOUT = -1;
static {
1.12 +14 -21
jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/TransactionImpl.java
Index: TransactionImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/java/org/apache/commons/simplestore/persistence/impl/TransactionImpl.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- TransactionImpl.java 17 May 2002 22:20:51 -0000 1.11
+++ TransactionImpl.java 9 Jun 2002 08:01:31 -0000 1.12
@@ -71,7 +71,7 @@
/**
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: TransactionImpl.java,v 1.11 2002/05/17 22:20:51 baliuka Exp $
+ *@version $Id: TransactionImpl.java,v 1.12 2002/06/09 08:01:31 baliuka Exp $
*/
public class TransactionImpl
@@ -79,15 +79,15 @@
InternalTransaction {
- int threadId = getCurrentThreadId();
- InternalTransaction transaction;
- Set objects;
- Map attributes = new HashMap();
- Map storedState = new HashMap();
- Map storedCollections = new HashMap();
+ final int threadId = getCurrentThreadId();
+ final InternalTransaction transaction;
+ final Set objects;
+ final Map attributes = new HashMap();
+ final Map storedState = new HashMap();
+ final Map storedCollections = new HashMap();
boolean complete = true;
- Context context;
- java.util.List strongRefs = new java.util.ArrayList();
+ final Context context;
+ final java.util.List strongRefs = new java.util.ArrayList();
/**
* Creates new TransactionImpl
@@ -104,7 +104,7 @@
}
- public static InternalTransaction getInstance(InternalTransaction transaction,
+ synchronized public static InternalTransaction getInstance(InternalTransaction
transaction,
Context context ) {
Object threadId = new KeyPair(InternalTransaction.class, new
Integer(getCurrentThreadId()));
@@ -137,8 +137,9 @@
return attributes.get(name);
}
+
public void commit() {
-
+
checkState();
checkState(!complete);
transaction.commit(objects);
@@ -147,11 +148,6 @@
strongRefs.clear();
storedCollections.clear();
storedState.clear();
- Iterator iterator = objects.iterator();
- while ( iterator.hasNext()) {
- MetaObject mo = (MetaObject)iterator.next();
- mo.afterCommit();
- }
objects.clear();
}
@@ -172,6 +168,7 @@
private void doRollback() {
try{
+
Iterator i = objects.iterator();
while (i.hasNext()) {
MetaObject mo = (MetaObject) i.next();
@@ -190,11 +187,6 @@
}finally{
strongRefs.clear();
storedCollections.clear();
- Iterator iterator = objects.iterator();
- while ( iterator.hasNext()) {
- MetaObject mo = (MetaObject)iterator.next();
- mo.afterRollback();
- }
objects.clear();
complete = true;
}
@@ -204,6 +196,7 @@
checkState();
if (objects.add(props)) {
try {
+
storedState.put(props.getOID(), props.clone());
strongRefs.add(props.getObject());
} catch (CloneNotSupportedException cnse) {
1.2 +9 -3
jakarta-commons-sandbox/simplestore/src/jdbc/org/apache/commons/simplestore/jdbc/DBPersistenceManagerFactory.java
Index: DBPersistenceManagerFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/jdbc/org/apache/commons/simplestore/jdbc/DBPersistenceManagerFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DBPersistenceManagerFactory.java 25 May 2002 13:48:59 -0000 1.1
+++ DBPersistenceManagerFactory.java 9 Jun 2002 08:01:31 -0000 1.2
@@ -66,7 +66,7 @@
* soft reference cache and XML metadata
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: DBPersistenceManagerFactory.java,v 1.1 2002/05/25 13:48:59
baliuka Exp $
+ *@version $Id: DBPersistenceManagerFactory.java,v 1.2 2002/06/09 08:01:31
baliuka Exp $
*/
public class DBPersistenceManagerFactory implements PersistenceManagerFactory{
@@ -148,9 +148,14 @@
for( int i=0; i< mcs.length; i++){
String ddl = generateCreateTableStatement(mcs[i],tnm);
- try{
+ try{
+
+ try{
statement.execute(ddl);
+
+ }finally{
connection.commit();
+ }
System.out.println(ddl);
}catch(java.sql.SQLException sqle){
System.out.println( sqle );
@@ -159,6 +164,7 @@
}
}finally{
+
connection.close();
}
@@ -167,7 +173,7 @@
mclass, new DefaultTypeConverter(),
new RandomOIDGenerator(),
storage,
- SoftRefMemoryCache.getInstance(new java.util.HashMap(),maxStrongRef),
+ SoftRefMemoryCache.getInstance(new
java.util.HashMap(10000),maxStrongRef),
storage );
pm = PersistenceManagerImpl.getPersistenceManager(context);
1.4 +65 -50
jakarta-commons-sandbox/simplestore/src/jdbc/org/apache/commons/simplestore/jdbc/DBStorage.java
Index: DBStorage.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/jdbc/org/apache/commons/simplestore/jdbc/DBStorage.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DBStorage.java 7 Jun 2002 18:53:12 -0000 1.3
+++ DBStorage.java 9 Jun 2002 08:01:31 -0000 1.4
@@ -77,13 +77,13 @@
/**
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: DBStorage.java,v 1.3 2002/06/07 18:53:12 baliuka Exp $
+ *@version $Id: DBStorage.java,v 1.4 2002/06/09 08:01:31 baliuka Exp $
*/
-public class DBStorage extends AbstractStorage implements
org.apache.commons.simplestore.tools.Constants {
-
+public final class DBStorage extends AbstractStorage implements
org.apache.commons.simplestore.tools.Constants {
+
private final static String CONNECTION =
"org.apache.commons.simplestore.jdbc.DBStorage.connection";
private final static String INTERNAL_OID = "INTERNAL_OID";
- private ConnectionFactory ds;
+ private final ConnectionFactory ds;
/**
@@ -96,14 +96,15 @@
}
- public Object toSQLType(Object object) {
+ private Object toSQLType(final Object object) {
return context.getTypeConverter().toStorageType(object,null);
}
- private int excecute( String sql, Object[] args, ResultSetHandler eh) throws
StorageException {
+ private int excecute( final String sql,final Object[] args,final
ResultSetHandler eh) throws StorageException {
Connection connection = getConnection();
-
+
+
int result = 0;
try {
@@ -132,20 +133,22 @@
ResultSetMetaData rsmd = rs.getMetaData();
int cnt = rsmd.getColumnCount();
-
+ synchronized(this){
while (rs.next()) {
result++;
for (int i = 1; i <= cnt; i++) {
- if(! eh.nextResult(i - 1, rs.getObject(i) ) ){
+ if(! eh.nextResult(i - 1, rs.getObject(i) ) )
+ {
break;
}
}
}
-
}
+ }
+
} finally {
-
+
if ( rs != null ) {
rs.close();
}
@@ -153,7 +156,7 @@
statement.close();
}
}
- } catch (SQLException se) {
+ } catch (Exception se) {
throw new StorageException(sql, se.fillInStackTrace());
}
return result;
@@ -161,11 +164,15 @@
- public Object retrieveObjectInternal( final Class clasz, Object id ) throws
StorageException {
-
+ final public Object retrieveObjectInternal( final Class clasz, Object id )
throws StorageException {
+
final MetaClass mClass = context.getMetaClass( clasz );
final java.beans.PropertyDescriptor[] descriptors = mClass.getProperties();
- final String sql = "SELECT * FROM " + propertyList(mClass) + " WHERE
"+mClass.getOIDName()+"=?";
+
+ final String sql = "SELECT " + propertyList(mClass) +
+ " FROM " + mClass.getName() +
+ " WHERE "+mClass.getOIDName() + "=?";
+
Persistent result = (Persistent) mClass.newInstance( id );
final MetaObject pc = result.getMetaObject();
final Object props[] = pc.getProperties();
@@ -179,7 +186,7 @@
//OID is known
return true;
}
-
+
props[ index - 1 ] = value;
return true;
} catch (Throwable t) {
@@ -194,10 +201,10 @@
throw new ObjectNotFound(pc.getOID().toString(), null);
}
- return result;
+ return result;
}
- public void enumerateInternal(final Class clasz, Set objects, final
EnumeratorCallback callback) throws StorageException {
+ final public void enumerateInternal(final Class clasz, Set objects, final
EnumeratorCallback callback) throws StorageException {
final MetaClass mClass = context.getMetaClass(clasz);
final String sql = "SELECT " + propertyList(mClass) + " FROM " +
mClass.getName();
@@ -207,29 +214,29 @@
}
private String propertyList(MetaClass mclass){
-
+
final java.beans.PropertyDescriptor[] beanProps = mclass.getProperties();
-
+
StringBuffer names = new StringBuffer();
names.append(mclass.getOIDName());
for (int i = 0; i < beanProps.length; i++) {
java.beans.PropertyDescriptor descriptor = beanProps[i];
names.append(",");
- if(! descriptor.getPropertyType().
- isAssignableFrom(java.util.Collection.class)){
+ if(! descriptor.getPropertyType().
+ isAssignableFrom(java.util.Collection.class)){
names.append( mclass.getPropertyName(i) );
- }else {
- names.append( mclass.getOIDName() );
- }
-
+ }else {
+ names.append( "null" );
}
+
+ }
+
-
return names.toString() + " ";
}
- public void storeObject(MetaObject properties) throws StorageException {
+ final public void storeObject(MetaObject properties) throws StorageException {
final Class clasz = properties.getPersistentClass();
final MetaClass mClass = context.getMetaClass(clasz);
@@ -258,7 +265,7 @@
}
- public void close() {
+ final public void close() {
try {
@@ -271,7 +278,7 @@
}
}
- protected void createObject(MetaObject properties) throws StorageException {
+ final public void createObject(MetaObject properties) throws StorageException {
final Class clasz = properties.getPersistentClass();
final MetaClass mClass = context.getMetaClass(clasz);
@@ -311,7 +318,7 @@
* this method doe's not removes object from cache
*/
- protected void removeObject(MetaObject obj) throws StorageException {
+ final public void removeObject(MetaObject obj) throws StorageException {
final MetaClass mClass = context.getMetaClass(obj.getPersistentClass());
final String name = mClass.getName();
@@ -324,7 +331,7 @@
}
}
- protected void internalCommit() throws StorageException {
+ public final void internalCommit() throws StorageException {
try {
Connection connection = getConnection();
try {
@@ -337,7 +344,7 @@
}
}
- protected void internalRollback() throws StorageException {
+ public final void internalRollback() throws StorageException {
try {
Connection connection = getConnection();
try {
@@ -371,27 +378,28 @@
}
}
- public void retrieveInternal(Class clasz, int index, Object value,java.util.Set
objects)
+ final public void retrieveInternal(Class clasz, int index, Object
value,java.util.Set objects)
throws StorageException{
final MetaClass mClass = context.getMetaClass(clasz);
- final String sql = "SELECT "+ propertyList(mClass) + " FROM " +
- mClass.getName() +
- " WHERE " + mClass.getPropertyName(index) + "=?";
+ final String sql = "SELECT "+ propertyList(mClass) + " FROM " +
+ mClass.getName() +
+ " WHERE " + mClass.getPropertyName(index) + "=?";
excecute( sql, new Object[]{value},
- new QueryHandler(objects, clasz, null ) );
+ new QueryHandler(objects, clasz, null ) );
}
- class QueryHandler implements ResultSetHandler {
+ final class QueryHandler implements ResultSetHandler {
+
Object props[];
- Set objects;
- MetaClass mClass ;
- java.beans.PropertyDescriptor[] descriptors;
- EnumeratorCallback callback;
+ final Set objects;
+ final MetaClass mClass ;
+ final java.beans.PropertyDescriptor[] descriptors;
+ final EnumeratorCallback callback;
QueryHandler(Set objects, Class clasz,EnumeratorCallback callback) {
@@ -399,14 +407,18 @@
this.mClass = context.getMetaClass(clasz);
this.descriptors = mClass.getProperties();
this.callback = callback;
+
}
- public boolean nextResult(int index, Object value ) throws
StorageException {
+
+ final public boolean nextResult(final int index, final Object value ) throws
StorageException {
+
try {
-
- if (index == 0) {
+
+ if (index == 0 ) {
//try to find in cache first
+
Persistent p = (Persistent) context.getCache().get(value);
if ( p != null ) {
@@ -414,21 +426,23 @@
callback.nextObject(p);
return false;
}
+
}
p = mClass.newInstance( value );
- MetaObject pc = p.getMetaObject();
+
+ final MetaObject pc = p.getMetaObject();
props = pc.getProperties();
context.getCache().put(value,p);
-
+
if( objects.add(p) && callback != null ){
- return callback.nextObject(p);
+ return callback.nextObject(p);
}
return true;
}
-
+
props[ index - 1 ] = value ;
@@ -438,6 +452,7 @@
t.printStackTrace();
throw new StorageException(t.getMessage(), t);
}
+
}
}
1.3 +9 -39
jakarta-commons-sandbox/simplestore/src/jdbc/org/apache/commons/simplestore/jdbc/DriverDataSource.java
Index: DriverDataSource.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/jdbc/org/apache/commons/simplestore/jdbc/DriverDataSource.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DriverDataSource.java 6 Jun 2002 17:42:32 -0000 1.2
+++ DriverDataSource.java 9 Jun 2002 08:01:31 -0000 1.3
@@ -78,7 +78,7 @@
/**
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: DriverDataSource.java,v 1.2 2002/06/06 17:42:32 baliuka Exp $
+ *@version $Id: DriverDataSource.java,v 1.3 2002/06/09 08:01:31 baliuka Exp $
*
*/
public class DriverDataSource implements ConnectionFactory {
@@ -172,7 +172,7 @@
this.getClass().getClassLoader() ).newInstance();
} catch (Exception e) {
e.printStackTrace();
- throw new SimplestoreException(e.getMessage());
+ throw new SimplestoreException(e.getMessage()+ ":" + driver );
}
}
@@ -212,10 +212,9 @@
return url;
}
- public Connection getConnection() throws SQLException {
+ synchronized public Connection getConnection() throws SQLException {
- synchronized (this) {
-
+
if (connection == null) {
connection =
new Connection[
@@ -251,13 +250,13 @@
}catch( java.lang.InterruptedException ie ){
}
- }
+ }
ConnectionProxy.lock( connection[i] ) ;
return connection[i];
- }
+
}
@@ -272,6 +271,8 @@
}
private Connection newConnection() throws SQLException {
+ if(driver == null)
+ throw new SQLException("Setup driver first");
Connection con = driver.connect(url, properties);
con.setAutoCommit(false);
return ConnectionProxy.create(con,this);
@@ -361,36 +362,6 @@
}
- private Object getStatementProxy(final Object stmt){
-
- return java.lang.reflect.Proxy.newProxyInstance(
- stmt.getClass().getClassLoader(),
- stmt.getClass().getInterfaces(),
- new java.lang.reflect.InvocationHandler(){
-
- public Object invoke(Object stmtObject,java.lang.reflect.Method
stmtMethod,Object[] stmtArgs)
- throws Throwable{
- try{
-
- Object stmtResult = stmtMethod.invoke(stmt, stmtArgs);
-
- if( stmtResult != null && (stmtResult instanceof
java.sql.ResultSet) ){
-
- jdbcResources.add(stmtResult);
-
- }
- return stmtResult;
-
- }catch( java.lang.reflect.InvocationTargetException itex ){
-
- throw itex.getTargetException().fillInStackTrace();
- }
- }
- }
- );
-
-
- }
public Object invoke(Object object,java.lang.reflect.Method method,Object[]
args)
throws Throwable{
try{
@@ -405,8 +376,7 @@
if ( result != null && (result instanceof java.sql.Statement) ){
jdbcResources.add(result);
- result = getStatementProxy( result );
-
+
}
1.2 +1 -1
jakarta-commons-sandbox/simplestore/src/jdbc/org/apache/commons/simplestore/jdbc/TypeNameMapImpl.properties
Index: TypeNameMapImpl.properties
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/jdbc/org/apache/commons/simplestore/jdbc/TypeNameMapImpl.properties,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TypeNameMapImpl.properties 25 May 2002 13:48:59 -0000 1.1
+++ TypeNameMapImpl.properties 9 Jun 2002 08:01:31 -0000 1.2
@@ -7,7 +7,7 @@
java.lang.Float=FLOAT
java.lang.Boolean=INT
java.lang.Long=BIGINT
-java.lang.String=LONGVARCHAR
+java.lang.String=TEXT
java.sql.Date=DATE
java.util.Date=DATE
1.17 +2 -2
jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestEnhancer.java
Index: TestEnhancer.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/simplestore/src/test/org/apache/commons/simplestore/TestEnhancer.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- TestEnhancer.java 2 Jun 2002 11:53:35 -0000 1.16
+++ TestEnhancer.java 9 Jun 2002 08:01:31 -0000 1.17
@@ -63,7 +63,7 @@
/**
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: TestEnhancer.java,v 1.16 2002/06/02 11:53:35 baliuka Exp $
+ *@version $Id: TestEnhancer.java,v 1.17 2002/06/09 08:01:31 baliuka Exp $
*/
public class TestEnhancer extends TestCase {
@@ -134,7 +134,7 @@
vector.contains(value);
vector.toArray(new Object[]{});
-}
+ }
}
1.31 +13 -8
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.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- TestSample.java 25 May 2002 13:48:59 -0000 1.30
+++ TestSample.java 9 Jun 2002 08:01:31 -0000 1.31
@@ -72,7 +72,7 @@
/**
*@author Juozas Baliuka <a href="mailto:[EMAIL PROTECTED]">
* [EMAIL PROTECTED]</a>
- *@version $Id: TestSample.java,v 1.30 2002/05/25 13:48:59 baliuka Exp $
+ *@version $Id: TestSample.java,v 1.31 2002/06/09 08:01:31 baliuka Exp $
*/
public class TestSample extends TestCase implements
org.apache.commons.simplestore.tools.Constants{
@@ -127,7 +127,7 @@
object3.setIntVal(0);
object3.setFloatVal(2f);
- object3.setStrVal1("Q");
+ object3.setStrVal1("Q\\000AAAAAA");
object3.setBoolVal(true);
object3.setParent(object2);
@@ -166,6 +166,7 @@
transaction.begin();
+
java.util.Set objects = pm.findAll(TestPersistentClassType.class);
assertTrue("Cache findAll ", objects ==
pm.findAll(TestPersistentClassType.class) );
@@ -209,9 +210,12 @@
Transaction transaction = pm.getTransaction();
transaction.begin();
+ pm.createInstance(TestPersistentClassType.class);
+
java.util.Set objects = pm.findAll(TestPersistentClassType.class);
- transaction.commit();
+ transaction.commit();
+ if(true)return;
java.util.Iterator it = objects.iterator();
while (it.hasNext()) {
@@ -282,16 +286,17 @@
super.setUp();
if(true){
+
DBPersistenceManagerFactory factory = new DBPersistenceManagerFactory();
- factory.setDriver("org.hsqldb.jdbcDriver");
- factory.setUrl("jdbc:hsqldb:sample");
- factory.setUser("sa");
- factory.setPassword("");
+ factory.setDriver(System.getProperty("db.driver","not set"));
+ factory.setUrl(System.getProperty("db.url","not set"));
+ factory.setUser(System.getProperty("db.user","not set"));
+ factory.setPassword(System.getProperty("db.password","not set"));
factory.setMaxConnections(1);
factory.setMetaResource("org/apache/commons/simplestore/storage.xml");
factory.setMaxStrongRef(1000);
pm = factory.getPersistenceManager();
-
+
}else{
JDBMPersistenceManagerFactory factory = new JDBMPersistenceManagerFactory();
factory.setFile("sample");
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>