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]>

Reply via email to