You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by fr...@apache.org on 2002/02/09 19:51:44 UTC

cvs commit: jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence TransactionManager.java TransactionImpl.java Transaction.java StorageException.java Storage.java PersistentProxy.java Persistent.java PersistenceManager.java ObjectNotFound.java MetaObject.java InternalTransaction.java AbstractStorage.java

froehlich    02/02/09 10:51:43

  Modified:    simplestore/src/sample/org/apache/commons/simplestore/persistence
                        TransactionManager.java TransactionImpl.java
                        Transaction.java StorageException.java Storage.java
                        PersistentProxy.java Persistent.java
                        PersistenceManager.java ObjectNotFound.java
                        MetaObject.java InternalTransaction.java
                        AbstractStorage.java
  Log:
  added full license and reformated with jedit's JavaStyle
  
  Revision  Changes    Path
  1.2       +57 -12    jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/TransactionManager.java
  
  Index: TransactionManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/TransactionManager.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TransactionManager.java	7 Feb 2002 16:25:36 -0000	1.1
  +++ TransactionManager.java	9 Feb 2002 18:51:43 -0000	1.2
  @@ -1,22 +1,67 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: TransactionManager.java,v 1.1 2002/02/07 16:25:36 baliuka Exp $
  + *@version    $Id: TransactionManager.java,v 1.2 2002/02/09 18:51:43 froehlich Exp $
    */
   public interface TransactionManager {
   
       public InternalTransaction getTransaction();
  -    
  +
   }
   
  
  
  
  1.2       +127 -74   jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/TransactionImpl.java
  
  Index: TransactionImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/TransactionImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TransactionImpl.java	7 Feb 2002 16:25:36 -0000	1.1
  +++ TransactionImpl.java	9 Feb 2002 18:51:43 -0000	1.2
  @@ -1,124 +1,177 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   import org.apache.commons.simplestore.*;
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: TransactionImpl.java,v 1.1 2002/02/07 16:25:36 baliuka Exp $
  + *@version    $Id: TransactionImpl.java,v 1.2 2002/02/09 18:51:43 froehlich Exp $
    */
   
  -public class TransactionImpl implements InternalTransaction{
  -    
  -    static private Store instances = SoftRefMemoryStore.getInstance( new java.util.HashMap(), null , 0x00 );    
  -    
  -   
  +public class TransactionImpl implements InternalTransaction {
  +
  +    private static Store instances = SoftRefMemoryStore.getInstance(new java.util.HashMap(), null, 0x00);
  +
       int threadId = getCurrentThreadId();
       InternalTransaction transaction;
       java.util.Set objects;
       java.util.Map attributes = new java.util.HashMap();
       boolean complete = true;
  -    
  -    /** Creates new TransactionImpl */
  -    public TransactionImpl( InternalTransaction transaction, java.util.Set objects) {
  +
  +    /**
  +     * Creates new TransactionImpl
  +     *
  +     *@param  transaction
  +     *@param  objects
  +     */
  +    public TransactionImpl(InternalTransaction transaction, java.util.Set objects) {
           this.objects = objects;
           this.transaction = transaction;
  - 
  +
       }
  -    
  -    private static int getCurrentThreadId(){
  -        return System.identityHashCode( Thread.currentThread() );
  -    }
  -    
  -    public static InternalTransaction getInstance(InternalTransaction transaction){
  -        
  +
  +    public static InternalTransaction getInstance(InternalTransaction transaction) {
  +
           Number threadId = new Integer(getCurrentThreadId());
           InternalTransaction tr = (InternalTransaction) instances.get(threadId);
  -        if( tr != null )return tr;
  -        
  -        tr = new TransactionImpl(transaction,new java.util.HashSet());
  -        instances.put(threadId,tr);
  -        
  +        if (tr != null) {
  +            return tr;
  +        }
  +
  +        tr = new TransactionImpl(transaction, new java.util.HashSet());
  +        instances.put(threadId, tr);
  +
           return tr;
  -        
  -        
  +
  +    }
  +
  +    private static int getCurrentThreadId() {
  +        return System.identityHashCode(Thread.currentThread());
  +    }
  +
  +    public void setAttribute(String name, Object value) {
  +
  +        attributes.put(name, value);
  +    }
  +
  +    public int getThreadId() {
  +
  +        return threadId;
       }
  -    
  +
  +    public Object getAttribute(String name) {
  +        return attributes.get(name);
  +    }
  +
       public void commit() {
           checkState();
           checkState(!complete);
           transaction.commit(objects);
           complete = true;
  -        
  +
       }
  -    
  +
       public void begin() {
           checkState();
  -        checkState( complete );
  -        transaction.begin( objects );
  +        checkState(complete);
  +        transaction.begin(objects);
           complete = false;
       }
  -    
  +
       public void rollback() {
           checkState();
  -        checkState( !complete );
  -        transaction.rollback( objects );
  +        checkState(!complete);
  +        transaction.rollback(objects);
           complete = true;
       }
  -    
  -    public int  getThreadId(){
  -        
  -        return threadId;
  -        
  -    }
  -    
  -    void checkState( boolean b ){
  -        if( !b  )
  -            throw new  java.lang.IllegalStateException("Illegal Transaction state");
  -    }
  -    void checkState(){
  -        int id = getCurrentThreadId();
  -        if( threadId != id )
  -            throw new  java.lang.IllegalStateException("Accessed Transaction " + threadId + " in " + id);
  -    }
  -    
  +
       public void add(MetaObject props) {
           checkState();
           objects.add(props);
  -        
  +
       }
  -    
  +
       public void begin(java.util.Set objects) {
           transaction.begin(objects);
       }
  -    
  +
       public void rollback(java.util.Set objects) {
           transaction.rollback(objects);
       }
  -    
  +
       public void commit(java.util.Set objects) {
           transaction.commit(objects);
       }
  -    
  -    public Object getAttribute(String name) {
  -        return attributes.get(name);
  -    }    
  -    
  +
       public void removeAttribute(String name) {
           attributes.remove(name);
  -    }    
  -    
  -    public void setAttribute(String name, Object value) {
  -        
  -        attributes.put(name,value);
       }
  -    
  +
  +    void checkState(boolean b) {
  +        if (!b) {
  +            throw new java.lang.IllegalStateException("Illegal Transaction state");
  +        }
  +    }
  +
  +    void checkState() {
  +        int id = getCurrentThreadId();
  +        if (threadId != id) {
  +            throw new java.lang.IllegalStateException("Accessed Transaction " + threadId + " in " + id);
  +        }
  +    }
  +
   }
  +
  
  
  
  1.2       +60 -15    jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/Transaction.java
  
  Index: Transaction.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/Transaction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Transaction.java	7 Feb 2002 16:25:36 -0000	1.1
  +++ Transaction.java	9 Feb 2002 18:51:43 -0000	1.2
  @@ -1,27 +1,72 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: Transaction.java,v 1.1 2002/02/07 16:25:36 baliuka Exp $
  + *@version    $Id: Transaction.java,v 1.2 2002/02/09 18:51:43 froehlich Exp $
    */
   public interface Transaction {
  -    
  +
       void begin();
  -    
  +
       void commit();
  -    
  +
       void rollback();
  -    
  +
       // TODO Transaction Synchronization
   }
   
  
  
  
  1.2       +68 -24    jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/StorageException.java
  
  Index: StorageException.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/StorageException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- StorageException.java	7 Feb 2002 16:25:36 -0000	1.1
  +++ StorageException.java	9 Feb 2002 18:51:43 -0000	1.2
  @@ -1,47 +1,91 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: StorageException.java,v 1.1 2002/02/07 16:25:36 baliuka Exp $
  + *@version    $Id: StorageException.java,v 1.2 2002/02/09 18:51:43 froehlich Exp $
    */
   public class StorageException extends java.lang.Exception {
   
       public Throwable detail;
  +
       /**
        * Creates new <code>StorageException</code> without detail message.
        */
  -    public StorageException() {
  -    }
  +    public StorageException() { }
   
   
       /**
        * Constructs an <code>StorageException</code> with the specified detail message.
  -     * @param msg the detail message.
  -     * @param detail the detail Throwable.
  +     *
  +     *@param  msg     the detail message.
  +     *@param  detail  the detail Throwable.
        */
  -    public StorageException(String msg,Throwable detail ) {
  +    public StorageException(String msg, Throwable detail) {
           super(msg);
           this.detail = detail;
       }
  -    
  +
       public java.lang.String getMessage() {
  -        
  -        return super.getMessage() + ( detail == null ? "" : " : " +  detail.getMessage()  ) ;
  -        
  -    }    
  -    
  -    
  -    
  +
  +        return super.getMessage() + (detail == null ? "" : " : " + detail.getMessage());
  +    }
  +
  +
   }
   
   
  
  
  
  1.2       +71 -28    jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/Storage.java
  
  Index: Storage.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/Storage.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Storage.java	7 Feb 2002 16:25:36 -0000	1.1
  +++ Storage.java	9 Feb 2002 18:51:43 -0000	1.2
  @@ -1,39 +1,82 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   import org.apache.commons.simplestore.*;
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: Storage.java,v 1.1 2002/02/07 16:25:36 baliuka Exp $
  + *@version    $Id: Storage.java,v 1.2 2002/02/09 18:51:43 froehlich Exp $
    */
   
   public interface Storage {
  -   
  -   
  -   public void storeObject( MetaObject properties )throws StorageException;
  -    
  -   public Object retrieveObject( Class clasz, Object id )throws StorageException;
  -   
  -   public void registerClass( Class clasz )throws StorageException;
  -    
  -   public void setContext( Store store );
  -   
  -   public java.util.Set retrieveAll( Class clasz )throws StorageException;
  -    
  -   public java.util.Set query( Class clasz, String procName,Object[] args )throws StorageException; 
  -   
  -   public void close()throws StorageException;
  -    
  -    
  +
  +    public void storeObject(MetaObject properties) throws StorageException;
  +
  +    public Object retrieveObject(Class clasz, Object id) throws StorageException;
  +
  +    public void registerClass(Class clasz) throws StorageException;
  +
  +    public void setContext(Store store);
  +
  +    public java.util.Set retrieveAll(Class clasz) throws StorageException;
  +
  +    public java.util.Set query(Class clasz, String procName, Object[] args) throws StorageException;
  +
  +    public void close() throws StorageException;
  +
   
   }
   
  
  
  
  1.4       +303 -266  jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/PersistentProxy.java
  
  Index: PersistentProxy.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/PersistentProxy.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PersistentProxy.java	9 Feb 2002 14:58:51 -0000	1.3
  +++ PersistentProxy.java	9 Feb 2002 18:51:43 -0000	1.4
  @@ -1,336 +1,373 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   import java.lang.reflect.*;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: PersistentProxy.java,v 1.3 2002/02/09 14:58:51 baliuka Exp $
  + *@version    $Id: PersistentProxy.java,v 1.4 2002/02/09 18:51:43 froehlich Exp $
    */
   public class PersistentProxy implements MetaObject, InvocationHandler, java.io.Serializable {
  -    
  -    
  +
       private static Method HASH_CODE;
       private static Method EQUALS;
       private static Method TO_STRING;
       private static Method GET_OID;
       private static Method GET_META_OBJECT;
       private static java.util.Map defaults = new java.util.Hashtable();
  -    
  -    static{
  -        
  -        try{
  -            
  -            GET_OID         = Persistent.class.getMethod("getOID",null);
  -            GET_META_OBJECT = Persistent.class.getMethod("getMetaObject",null);
  -            
  -            
  -            HASH_CODE       = Object.class.getMethod("hashCode",null);
  -            TO_STRING       = Object.class.getMethod("toString",null);
  -            EQUALS          = Object.class.getMethod("equals",new Class[]{Object.class});
  -            
  -           defaults.put( byte.class,new java.lang.Byte((byte)0) );
  -           defaults.put( short.class,new java.lang.Short((short)0) );
  -           defaults.put( int.class,new java.lang.Integer(0) );
  -           defaults.put( long.class,new java.lang.Long(0) );
  -           defaults.put( float.class,new java.lang.Float(0) );
  -           defaults.put( double.class,new java.lang.Double(0) );
  -           defaults.put( char.class,new java.lang.Character('\u0000') );
  -           defaults.put( boolean.class,new java.lang.Boolean(false) );
  -        
  -        }catch(Exception e){
  -            e.printStackTrace();
  -            throw new Error(e.getMessage());
  -            
  -        }
  -        
  -    }
  -    
  +
       java.util.Map map = new java.util.HashMap();
  -    
  -    Object  oid  = null;
  -    Persistent  object;
  +
  +    Object oid = null;
  +    Persistent object;
       Class pClass;
       TransactionManager transactionManager;
  -    boolean dirty   = false;
  +    boolean dirty = false;
       boolean deleted = false;
  -    boolean newCreated ;
  -    
  -    
  -    /** Creates new ValueProxy */
  -    public PersistentProxy(Class pClass,Object oid, boolean newCreated, TransactionManager transactionManager) {
  -        
  +    boolean newCreated;
  +
  +
  +    /**
  +     * Creates new ValueProxy
  +     *
  +     *@param  pClass
  +     *@param  oid
  +     *@param  newCreated
  +     *@param  transactionManager
  +     */
  +    public PersistentProxy(Class pClass, Object oid, boolean newCreated, TransactionManager transactionManager) {
  +
           this.oid = oid;
           this.newCreated = newCreated;
           this.transactionManager = transactionManager;
  -        this.pClass  = pClass;
  -        
  +        this.pClass = pClass;
  +
       }
  -    
  -    public java.lang.Object handleEquals(java.lang.Object obj ){
  -        
  -        if( obj == null   ){
  -            return new Boolean(false);
  +
  +
  +    public static Persistent getPersitent(Class persistent, Object oid, boolean newCreated, TransactionManager transactionManager) {
  +        PersistentProxy handler = new PersistentProxy(persistent, oid, newCreated, transactionManager);
  +        Persistent p = (Persistent) Proxy.newProxyInstance(
  +                Thread.currentThread().getContextClassLoader(), new Class[]{persistent, Persistent.class}, handler);
  +        handler.object = p;
  +        if (newCreated) {
  +
  +            MetaObject mo = p.getMetaObject();
  +            transactionManager.getTransaction().add(mo);
           }
  -        
  -        if(! (obj instanceof Persistent ) ){
  -            return new Boolean(false);
  +        return p;
  +    }
  +// TODO must be converter interface
  +    public static Object convertNumber(Number number, Class cls) {
  +
  +        if (cls.equals(Byte.class)) {
  +            return new Byte(number.byteValue());
  +        } else if (cls.equals(Short.class)) {
  +            return new Short(number.shortValue());
  +        } else if (cls.equals(Integer.class)) {
  +            return new Integer(number.intValue());
  +        } else if (cls.equals(Long.class)) {
  +            return new Long(number.longValue());
  +        } else if (cls.equals(Float.class)) {
  +            return new Float(number.floatValue());
  +        } else if (cls.equals(Double.class)) {
  +            return new Double(number.doubleValue());
  +        } else if (cls.equals(Boolean.class)) {
  +            return new Boolean(number.intValue() != 0);
  +        } else if (cls.equals(Character.TYPE)) {
  +            return new Character(number.toString().charAt(0));
  +        } else {
  +            throw new java.lang.UnsupportedOperationException("Number class = " + number.getClass().getName() + " Target Class " + cls.getName());
           }
  -        
  -        Persistent object = (Persistent)obj;
  -        
  -        
  -        if( oid == null ){
  -            
  -            return new Boolean( oid == object.getOID() );
  -            
  -        }else{
  -            
  -            return new Boolean( oid.equals( object.getOID() ) );
  +
  +    }
  +    // TODO must be converter interface
  +    public static Object convertPrimityve(Number number, Class cls) {
  +
  +        if (cls.equals(Byte.TYPE)) {
  +            return new Byte(number.byteValue());
  +        } else if (cls.equals(Short.TYPE)) {
  +            return new Short(number.shortValue());
  +        } else if (cls.equals(Integer.TYPE)) {
  +            return new Integer(number.intValue());
  +        } else if (cls.equals(Long.TYPE)) {
  +            return new Long(number.longValue());
  +        } else if (cls.equals(Float.TYPE)) {
  +            return new Float(number.floatValue());
  +        } else if (cls.equals(Double.TYPE)) {
  +            return new Double(number.doubleValue());
  +        } else if (cls.equals(Boolean.TYPE)) {
  +            return new Boolean(number.intValue() != 0);
  +        } else if (cls.equals(Character.TYPE)) {
  +            return new Character(number.toString().charAt(0));
  +        } else {
  +            throw new java.lang.UnsupportedOperationException("Number class = " + number.getClass().getName() + " Target Class " + cls.getName());
           }
  -        
  -        
  +
       }
  -    
  -    public java.lang.Object invoke(Object obj, Method method, Object[] obj2) throws java.lang.Throwable {
  -        
  -        synchronized( this ){
  -            
  -            if ( GET_META_OBJECT.equals( method) ){
  -                return this;
  -                
  -            }else if( TO_STRING.equals( method ) ){
  -                
  -                return oid + "";
  -                
  -            }else if( GET_OID.equals( method ) ){
  -                
  -                return oid;
  -                
  -            }else if ( HASH_CODE.equals( method ) ){
  -                
  -                if(oid == null){
  -                    return new Integer(0);
  +    // TODO must be converter interface
  +    public static Object convert(Object object, Class cls) {
  +        try {
  +            if (cls.isPrimitive()) {
  +                if (object == null) {
  +                    return defaults.get(cls);
                   }
  -                return new Integer(oid.hashCode());
  -                
  -            }else if( EQUALS.equals(method) ){
  -                
  -                return handleEquals(obj2[0]);
  -                
  -                
  -            } else{
  -                
  -                return  handleProperty(obj,method,obj2);
  -                
  +                if (object instanceof Number) {
  +                    return convertPrimityve((Number) object, cls);
  +                }
  +            }
  +
  +            if (object == null) {
  +                return null;
               }
  -            
  +
  +            if (cls.isAssignableFrom(object.getClass())) {
  +                return object;
  +            }
  +
  +            // if( object instanceof String ){ ?????
  +            //     return org.apache.commons.beanutils.ConvertUtils.convert((String)object,cls);
  +            // }
  +
  +
  +            if (cls.isAssignableFrom(Number.class) && object instanceof Number) {
  +                return convertNumber((Number) object, cls);
  +            }
  +
  +            if (cls.equals(Boolean.class) && object instanceof Number) {
  +                return new Boolean(((Number) object).intValue() != 0);
  +            }
  +
  +            if (cls.equals(Character.TYPE)) {
  +                return new Character(object.toString().charAt(0));
  +            }
  +
  +            throw new java.lang.UnsupportedOperationException(cls.getName() + ":" + object);
  +        } catch (Throwable t) {
  +            // TODO
  +            t.printStackTrace();
  +            throw new RuntimeException(t.getClass().getName() + ":" + t.getMessage());
           }
       }
  -    
  -    
  -    public java.lang.Object handleProperty(java.lang.Object obj, java.lang.reflect.Method method, java.lang.Object[] obj2) throws java.lang.Throwable {
  -        
  -        String name = method.getName();
  -        
  -        
  -        if( name.startsWith("set")){
  -            
  -            setProperty(name.substring(3), obj2[0] );
  -            return null;
  -            
  -        }else if( name.startsWith("get") || name.startsWith("is")  ){
  -            
  -            if(method.getName().startsWith("get"))
  -                name = method.getName().substring(3);
  -            else name = method.getName().substring(2);
  -            Object value = getProperty(name);
  -            if( value == null && method.getReturnType().isPrimitive() )
  -                value = convert(value, method.getReturnType());
  -            return value;
  -            
  +
  +    public void setProperty(String name, Object value) {
  +
  +        Object old = map.put(name, value);
  +        if (old == null || !old.equals(value)) {
  +            dirty = true;
  +            transactionManager.getTransaction().add(this);
           }
  -        
  -        throw new java.lang.IllegalStateException("pure method " + method.getName());
  -        
  -        
       }
  -    
  -    
  -    public static Persistent getPersitent(Class persistent,Object oid,boolean newCreated, TransactionManager transactionManager){
  -        PersistentProxy handler = new PersistentProxy(persistent,oid,newCreated, transactionManager);
  -        Persistent p =  (Persistent)Proxy.newProxyInstance(
  -        Thread.currentThread().getContextClassLoader(),new Class[]{persistent,Persistent.class},handler);
  -        handler.object = p; 
  -        if( newCreated ) {
  -            
  -            MetaObject mo = p.getMetaObject();
  -            transactionManager.getTransaction().add(mo);
  -        }
  -        return p;
  -        
  +
  +    public void setDirty(boolean dirty) {
  +        this.dirty = dirty;
  +        this.newCreated = false;
       }
  -    
  -    
  +
  +
       public boolean isDeleted() {
           return deleted;
       }
  -    
  +
       public boolean isNew() {
           return newCreated;
       }
  -    
  +
       public MetaObject getMetaObject() {
           return this;
       }
  -    
  -    public void setProperty( String name, Object value ) {
  -        
  -        Object old = map.put(name,value);
  -        if( old == null || !old.equals(value )){
  -            dirty = true;
  -            transactionManager.getTransaction().add( this );
  -        }
  -        
  -    }
  -    
  +
       public java.util.Map getProperties() {
           return map;
       }
  -    
  +
       public Object getProperty(String name) {
  -        return  map.get(name);
  -        
  +        return map.get(name);
       }
  -    
  +
       public boolean isLoaded() {
           return true;
       }
  -    
  -    public void remove() {
  -        deleted = true;
  -    }
  -    
  +
       public Class getPersistentClass() {
           return pClass;
       }
  -    
  +
       public Object getOID() {
           return oid;
       }
  -    
  +
       public boolean isDirty() {
           return dirty;
       }
  -    
  -    public void setDirty(boolean dirty) {
  -        this.dirty = dirty;
  -        this.newCreated = false;
  -    }
  -    
  +
       public Persistent getObject() {
           return object;
       }
  -// TODO must be converter interface
  -    public static Object convertNumber(Number number,Class cls){
  -        
  -        if(cls.equals(Byte.class))
  -            return new Byte(number.byteValue());
  -        else if( cls.equals(Short.class) )
  -            return new Short(number.shortValue());
  -        else if(cls.equals(Integer.class))
  -            return new Integer(number.intValue());
  -        else if( cls.equals( Long.class ) )
  -            return new Long(number.longValue());
  -        else if( cls.equals( Float.class ) )
  -            return new Float(number.floatValue());
  -        else if( cls.equals( Double.class ) )
  -            return new Double(number.doubleValue());
  -        else if( cls.equals( Boolean.class ) )
  -            return new Boolean( number.intValue() != 0  );
  -        else if( cls.equals( Character.TYPE ) )
  -            return new Character( number.toString().charAt(0)  );
  -        else
  -            throw new java.lang.UnsupportedOperationException( "Number class = " + number.getClass().getName() + " Target Class " + cls.getName());
  -        
  -    }
  -    // TODO must be converter interface
  -    public static Object convertPrimityve(Number number,Class cls){
  -        
  -        if(cls.equals(Byte.TYPE))
  -            return new Byte(number.byteValue());
  -        else if (cls.equals(Short.TYPE))
  -            return new Short( number.shortValue());
  -        else if(cls.equals(Integer.TYPE))
  -            return new Integer(number.intValue());
  -        else if ( cls.equals( Long.TYPE ) )
  -            return new Long(number.longValue());
  -        else if ( cls.equals( Float.TYPE ) )
  -            return new Float(number.floatValue());
  -        else if ( cls.equals( Double.TYPE ) )
  -            return new Double(number.doubleValue());
  -        else if ( cls.equals( Boolean.TYPE ) )
  -            return new Boolean( number.intValue() != 0  );
  -        else if ( cls.equals( Character.TYPE ) )
  -            return new Character( number.toString().charAt(0)  );
  -        else
  -            throw new java.lang.UnsupportedOperationException( "Number class = " + number.getClass().getName() + " Target Class " + cls.getName());
  -        
  +
  +    public java.lang.Object handleEquals(java.lang.Object obj) {
  +
  +        if (obj == null) {
  +            return new Boolean(false);
  +        }
  +
  +        if (!(obj instanceof Persistent)) {
  +            return new Boolean(false);
  +        }
  +
  +        Persistent object = (Persistent) obj;
  +
  +        if (oid == null) {
  +
  +            return new Boolean(oid == object.getOID());
  +        } else {
  +
  +            return new Boolean(oid.equals(object.getOID()));
  +        }
  +
       }
  -    // TODO must be converter interface
  -    public static Object convert(Object object,Class cls){
  -        try{
  -            if( cls.isPrimitive() ){
  -                if( object == null ){
  -                    return defaults.get(cls);
  -                }
  -                if( object instanceof Number ){
  -                    return convertPrimityve((Number)object,cls);
  +
  +    public java.lang.Object invoke(Object obj, Method method, Object[] obj2) throws java.lang.Throwable {
  +
  +        synchronized (this) {
  +
  +            if (GET_META_OBJECT.equals(method)) {
  +                return this;
  +            } else if (TO_STRING.equals(method)) {
  +
  +                return oid + "";
  +            } else if (GET_OID.equals(method)) {
  +
  +                return oid;
  +            } else if (HASH_CODE.equals(method)) {
  +
  +                if (oid == null) {
  +                    return new Integer(0);
                   }
  -                
  -            }
  -            
  -            if(object == null){
  -                return null;
  -            }
  -            
  -            if( cls.isAssignableFrom(object.getClass())  ){
  -                return object;
  -            }
  -            
  -           // if( object instanceof String ){ ?????
  -           //     return org.apache.commons.beanutils.ConvertUtils.convert((String)object,cls);
  -           // }
  -            
  -            
  -            if( cls.isAssignableFrom(Number.class ) && object instanceof Number ){
  -                return convertNumber((Number)object,cls);
  +                return new Integer(oid.hashCode());
  +            } else if (EQUALS.equals(method)) {
  +
  +                return handleEquals(obj2[0]);
  +
  +            } else {
  +
  +                return handleProperty(obj, method, obj2);
               }
  -            
  -            if( cls.equals( Boolean.class ) && object instanceof Number ){
  -                return new Boolean((( Number )object).intValue() != 0  );
  +
  +        }
  +    }
  +
  +
  +    public java.lang.Object handleProperty(java.lang.Object obj, java.lang.reflect.Method method, java.lang.Object[] obj2) throws java.lang.Throwable {
  +
  +        String name = method.getName();
  +
  +        if (name.startsWith("set")) {
  +
  +            setProperty(name.substring(3), obj2[0]);
  +            return null;
  +        } else if (name.startsWith("get") || name.startsWith("is")) {
  +
  +            if (method.getName().startsWith("get")) {
  +                name = method.getName().substring(3);
  +            } else {
  +                name = method.getName().substring(2);
               }
  -            
  -            if( cls.equals( Character.TYPE ) ){
  -                return new Character( object.toString().charAt(0)  );
  +            Object value = getProperty(name);
  +            if (value == null && method.getReturnType().isPrimitive()) {
  +                value = convert(value, method.getReturnType());
               }
  -            
  -            throw new java.lang.UnsupportedOperationException( cls.getName() + ":" + object );
  -            
  -        }catch(Throwable t){
  -            // TODO
  -            t.printStackTrace();
  -            throw new RuntimeException( t.getClass().getName() + ":" + t.getMessage() );
  +            return value;
  +        }
  +
  +        throw new java.lang.IllegalStateException("pure method " + method.getName());
  +
  +    }
  +
  +    public void remove() {
  +        deleted = true;
  +    }
  +
  +    static {
  +
  +        try {
  +
  +            GET_OID = Persistent.class.getMethod("getOID", null);
  +            GET_META_OBJECT = Persistent.class.getMethod("getMetaObject", null);
  +
  +            HASH_CODE = Object.class.getMethod("hashCode", null);
  +            TO_STRING = Object.class.getMethod("toString", null);
  +            EQUALS = Object.class.getMethod("equals", new Class[]{Object.class});
  +
  +            defaults.put(byte.class, new java.lang.Byte((byte) 0));
  +            defaults.put(short.class, new java.lang.Short((short) 0));
  +            defaults.put(int.class, new java.lang.Integer(0));
  +            defaults.put(long.class, new java.lang.Long(0));
  +            defaults.put(float.class, new java.lang.Float(0));
  +            defaults.put(double.class, new java.lang.Double(0));
  +            defaults.put(char.class, new java.lang.Character('\u0000'));
  +            defaults.put(boolean.class, new java.lang.Boolean(false));
  +
  +        } catch (Exception e) {
  +            e.printStackTrace();
  +            throw new Error(e.getMessage());
           }
  +
       }
  -        
  +
   }
  +
  
  
  
  1.2       +61 -16    jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/Persistent.java
  
  Index: Persistent.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/Persistent.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Persistent.java	7 Feb 2002 16:25:36 -0000	1.1
  +++ Persistent.java	9 Feb 2002 18:51:43 -0000	1.2
  @@ -1,25 +1,70 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: Persistent.java,v 1.1 2002/02/07 16:25:36 baliuka Exp $
  + *@version    $Id: Persistent.java,v 1.2 2002/02/09 18:51:43 froehlich Exp $
    */
   
   public interface Persistent {
  -    
  -  public Object getOID();
  -  
  -  public  MetaObject getMetaObject(); 
  -  
  +
  +    public Object getOID();
  +
  +    public MetaObject getMetaObject();
  +
   }
   
  
  
  
  1.3       +122 -76   jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/PersistenceManager.java
  
  Index: PersistenceManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/PersistenceManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PersistenceManager.java	9 Feb 2002 13:49:47 -0000	1.2
  +++ PersistenceManager.java	9 Feb 2002 18:51:43 -0000	1.3
  @@ -1,116 +1,162 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   import org.apache.commons.simplestore.*;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: PersistenceManager.java,v 1.2 2002/02/09 13:49:47 baliuka Exp $
  + *@version    $Id: PersistenceManager.java,v 1.3 2002/02/09 18:51:43 froehlich Exp $
    */
   
   public class PersistenceManager {
  -  
  +
       private static PersistenceManager pm;
  -    
  +
  +    private static java.security.SecureRandom seeder = new java.security.SecureRandom();
  +
       private Storage storage;
       private TransactionManager transactionManager;
  -    private Store store = SoftRefMemoryStore.getInstance( new java.util.HashMap(), null , 0xFF );
  -    
  -    /** Creates new PersiatenceManager */
  -    protected  PersistenceManager( Storage storage, TransactionManager transactionManager ) {
  +    private Store store = SoftRefMemoryStore.getInstance(new java.util.HashMap(), null, 0xFF);
  +
  +    /**
  +     * Creates new PersiatenceManager
  +     *
  +     *@param  storage
  +     *@param  transactionManager
  +     */
  +    protected PersistenceManager(Storage storage, TransactionManager transactionManager) {
           this.storage = storage;
           this.transactionManager = transactionManager;
  -        
  +
       }
  -    
  -    static public PersistenceManager getPersistenceManager( Storage storage,TransactionManager transactions ){
  -        if( pm == null ){
  -            pm = new PersistenceManager( storage,transactions );
  +
  +    public static PersistenceManager getPersistenceManager(Storage storage, TransactionManager transactions) {
  +        if (pm == null) {
  +            pm = new PersistenceManager(storage, transactions);
               storage.setContext(pm.store);
  -        }  
  +        }
           return pm;
  -        
       }
  -    
  -    public Transaction getTransaction(){
  -    
  +
  +    public Transaction getTransaction() {
  +
           return transactionManager.getTransaction();
  -    
       }
  -    
  -    public Object createInstance( Class aclass ){
  -        
  +
  +    public Object getOID(Object pc) {
  +
  +        return ((Persistent) pc).getOID();
  +
  +    }
  +
  +    public Object createInstance(Class aclass) {
  +
           Object id = generateOID(aclass);
  -        Persistent p = PersistentProxy.getPersitent(aclass,id,true,transactionManager);
  -        store.put(id,p);
  -        
  +        Persistent p = PersistentProxy.getPersitent(aclass, id, true, transactionManager);
  +        store.put(id, p);
  +
           return p;
  -        
       }
  -    
  -    public Object findInstance( Class clasz,Object oid )throws StorageException{
  -    
  -         return storage.retrieveObject(clasz, oid );
  -        
  -    }
  -   public java.util.Set findAll( Class clasz )throws StorageException{
  -   
  -       return storage.retrieveAll( clasz );
  -   }
  -    
  -    public void removeInstance(Object pc){
  -        
  -        MetaObject p = ((Persistent)pc).getMetaObject();
  -        if( p != null )
  +
  +    public Object findInstance(Class clasz, Object oid) throws StorageException {
  +
  +        return storage.retrieveObject(clasz, oid);
  +    }
  +
  +    public java.util.Set findAll(Class clasz) throws StorageException {
  +
  +        return storage.retrieveAll(clasz);
  +    }
  +
  +    public void removeInstance(Object pc) {
  +
  +        MetaObject p = ((Persistent) pc).getMetaObject();
  +        if (p != null) {
               p.remove();
  -        
  +        }
       }
  -   public Object getOID( Object pc ){
  -        
  -        return ((Persistent)pc).getOID();
  -        
  -        
  -    }
  - 
  -    public void registerClass( Class clasz )throws StorageException{
  -    
  +
  +    public void registerClass(Class clasz) throws StorageException {
  +
           storage.registerClass(clasz);
  -       
  +
       }
  -   
  -   
  -    private static java.security.SecureRandom seeder = new java.security.SecureRandom();
  -    
  -    private synchronized Object  generateOID( Class aclass ){
  -      
  -   //TODO ADD interface OIDGenerator  
  -        
  +
  +    private synchronized Object generateOID(Class aclass) {
  +
  +        //TODO ADD interface OIDGenerator
  +
           byte[] bytes = new byte[8];
           int value = seeder.nextInt();
           int i = 0;
  -        
  +
           bytes[i++] = (byte) ((value >>> 24) & 0xFF);
           bytes[i++] = (byte) ((value >>> 16) & 0xFF);
           bytes[i++] = (byte) ((value >>> 8) & 0xFF);
           bytes[i++] = (byte) (value & 0xFF);
  -       
  -        value = (int) System.currentTimeMillis() & 0xFFFFFFFF; 
  -       
  +
  +        value = (int) System.currentTimeMillis() & 0xFFFFFFFF;
  +
           bytes[i++] = (byte) ((value >>> 24) & 0xFF);
           bytes[i++] = (byte) ((value >>> 16) & 0xFF);
           bytes[i++] = (byte) ((value >>> 8) & 0xFF);
           bytes[i++] = (byte) (value & 0xFF);
  -        
  -      return new Long( new java.math.BigInteger(bytes).longValue());
  -      
  +
  +        return new Long(new java.math.BigInteger(bytes).longValue());
       }
   }
  +
  
  
  
  1.2       +66 -19    jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/ObjectNotFound.java
  
  Index: ObjectNotFound.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/ObjectNotFound.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ObjectNotFound.java	9 Feb 2002 11:09:22 -0000	1.1
  +++ ObjectNotFound.java	9 Feb 2002 18:51:43 -0000	1.2
  @@ -1,33 +1,80 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: ObjectNotFound.java,v 1.1 2002/02/09 11:09:22 baliuka Exp $
  + *@version    $Id: ObjectNotFound.java,v 1.2 2002/02/09 18:51:43 froehlich Exp $
    */
   public class ObjectNotFound extends StorageException {
  -    
  +
       /**
        * Creates a new instance of <code>ObjectNotFound</code> without detail message.
        */
  -    public ObjectNotFound() {
  -    }
  -    
  -    
  +    public ObjectNotFound() { }
  +
  +
       /**
        * Constructs an instance of <code>ObjectNotFound</code> with the specified detail message.
  -     * @param msg the detail message.
  +     *
  +     *@param  msg  the detail message.
  +     *@param  th
        */
  -    public ObjectNotFound(String msg,Throwable th) {
  -        super(msg,th);
  +    public ObjectNotFound(String msg, Throwable th) {
  +        super(msg, th);
       }
   }
  +
  
  
  
  1.3       +70 -25    jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/MetaObject.java
  
  Index: MetaObject.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/MetaObject.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MetaObject.java	9 Feb 2002 13:49:47 -0000	1.2
  +++ MetaObject.java	9 Feb 2002 18:51:43 -0000	1.3
  @@ -1,44 +1,89 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: MetaObject.java,v 1.2 2002/02/09 13:49:47 baliuka Exp $
  + *@version    $Id: MetaObject.java,v 1.3 2002/02/09 18:51:43 froehlich Exp $
    */
   
  -public interface MetaObject  {
  -    
  +public interface MetaObject {
  +
       public Object getOID();
  -    
  +
       public Object getProperty(String name);
  -    
  -    public void setProperty(String name,Object value);
  -    
  +
  +    public void setProperty(String name, Object value);
  +
       public java.util.Map getProperties();
  -    
  +
       public Class getPersistentClass();
  -    
  +
       public boolean isDirty();
  -    
  +
       public boolean isNew();
  -    
  +
       public boolean isDeleted();
  -    
  +
       public void remove();
  -    
  +
       public boolean isLoaded();
  -    
  +
       public void setDirty(boolean dirty);
  -    
  +
       public Persistent getObject();
   }
   
  
  
  
  1.2       +68 -24    jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/InternalTransaction.java
  
  Index: InternalTransaction.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/InternalTransaction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InternalTransaction.java	7 Feb 2002 16:25:36 -0000	1.1
  +++ InternalTransaction.java	9 Feb 2002 18:51:43 -0000	1.2
  @@ -1,36 +1,80 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: InternalTransaction.java,v 1.1 2002/02/07 16:25:36 baliuka Exp $
  + *@version    $Id: InternalTransaction.java,v 1.2 2002/02/09 18:51:43 froehlich Exp $
    */
   
   public interface InternalTransaction extends Transaction {
  -    
  +
       public void begin(java.util.Set objects);
  -    
  +
       public void commit(java.util.Set objects);
  -    
  +
       public void rollback(java.util.Set objects);
  -    
  -    void add( MetaObject props);
  -    
  -    void setAttribute(String name,Object value);
  -    
  -    Object getAttribute(String name );
  -    
  -    void removeAttribute(String name );
  -    
  -    
  +
  +    void add(MetaObject props);
  +
  +    void setAttribute(String name, Object value);
  +
  +    Object getAttribute(String name);
  +
  +    void removeAttribute(String name);
  +
   }
   
  
  
  
  1.3       +117 -69   jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/AbstractStorage.java
  
  Index: AbstractStorage.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/simplestore/src/sample/org/apache/commons/simplestore/persistence/AbstractStorage.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AbstractStorage.java	9 Feb 2002 13:49:47 -0000	1.2
  +++ AbstractStorage.java	9 Feb 2002 18:51:43 -0000	1.3
  @@ -1,140 +1,188 @@
  -/*****************************************************************************
  - * Copyright (C) The Apache Software Foundation. All rights reserved.        *
  - * ------------------------------------------------------------------------- *
  - * This software is published under the terms of the Apache Software License *
  - * version 1.1, a copy of which has been included  with this distribution in *
  - * the LICENSE file.                                                         *
  - *****************************************************************************/
  -
  +/*
  + * The Apache Software License, Version 1.1
  + *
  + *
  + * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache Cocoon" and "Apache Software Foundation" must
  + *    not be used to endorse or promote products derived from this
  + *    software without prior written permission. For written
  + *    permission, please contact apache@apache.org.
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    nor may "Apache" appear in their name, without prior written
  + *    permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.commons.simplestore.persistence;
   
   import org.apache.commons.simplestore.*;
   
   /**
  - *
  - * @author Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
  + *@author     Juozas Baliuka <a href="mailto:baliuka@mwm.lt">
    *      baliuka@mwm.lt</a>
  - * @version $Id: AbstractStorage.java,v 1.2 2002/02/09 13:49:47 baliuka Exp $
  + *@version    $Id: AbstractStorage.java,v 1.3 2002/02/09 18:51:43 froehlich Exp $
    */
   
  -public abstract class AbstractStorage implements Storage, InternalTransaction, TransactionManager{
  -    
  +public abstract class AbstractStorage implements Storage, InternalTransaction, TransactionManager {
  +
       java.util.Map attributes = new java.util.HashMap();
  -    
  -    protected abstract void createObject(  MetaObject properties )throws StorageException;
  -    protected abstract void removeObject(  MetaObject properties )throws StorageException;
  -    protected abstract void internalCommit()throws StorageException;
  -    protected abstract void internalRollback()throws StorageException;
  -    protected abstract void internalBegin()throws StorageException;
  -    
  -    
  -    
  -    
  +
  +    public void setAttribute(String name, Object value) {
  +
  +        attributes.put(name, value);
  +    }
  +
  +
  +
       public InternalTransaction getTransaction() {
  -        
  +
           return TransactionImpl.getInstance(this);
  -        
       }
  -    
  -    
  +
  +    public Object getAttribute(String name) {
  +        return attributes.get(name);
  +    }
  +
  +
       public void begin(java.util.Set objects) {
  -        try{
  +        try {
               internalBegin();
  -        }catch(java.lang.Throwable t){
  +        } catch (java.lang.Throwable t) {
               // TODO
               t.printStackTrace();
               throw new RuntimeException(t.getClass() + ":" + t.getMessage());
           }
       }
  -    
  +
       public void add(MetaObject props) {
  -        ((InternalTransaction)getTransaction()).add(props);
  +        ((InternalTransaction) getTransaction()).add(props);
       }
  -    
  +
       public void commit() {
  -        try{
  +        try {
               getTransaction().commit();
               internalCommit();
  -        }catch(java.lang.Throwable t){
  +        } catch (java.lang.Throwable t) {
               // TODO
               t.printStackTrace();
               throw new RuntimeException(t.getClass() + ":" + t.getMessage());
           }
       }
  -    
  +
       public void begin() {
  -        try{
  +        try {
               getTransaction().begin();
               internalBegin();
  -        }catch(java.lang.Throwable t){
  +        } catch (java.lang.Throwable t) {
               // TODO
               throw new RuntimeException(t.getClass() + ":" + t.getMessage());
           }
       }
  -    
  +
       public void rollback(java.util.Set objects) {
  -        try{
  +        try {
               //TODO implement roolback
               internalRollback();
               objects.clear();
  -        }catch(java.lang.Throwable t){
  +        } catch (java.lang.Throwable t) {
               throw new RuntimeException(t.getClass() + ":" + t.getMessage());
           }
       }
  -    
  +
       public void rollback() {
  -        
  -        try{
  +
  +        try {
               getTransaction().rollback();
               internalRollback();
  -        }catch(java.lang.Throwable t){
  +        } catch (java.lang.Throwable t) {
               // TODO
               throw new RuntimeException(t.getClass() + ":" + t.getMessage());
           }
  -        
  +
       }
  -    
  +
       public void commit(java.util.Set objects) {
  -        
  -        
  -        try{
  +
  +        try {
               java.util.Iterator iterator = objects.iterator();
  -            while(iterator.hasNext()){
  -                
  -                MetaObject pp = (MetaObject)iterator.next();
  -                if( pp.isNew() ){
  +            while (iterator.hasNext()) {
  +
  +                MetaObject pp = (MetaObject) iterator.next();
  +                if (pp.isNew()) {
                       createObject(pp);
  -                    
  +
                   }
  -                if( pp.isDirty() && ! pp.isNew() ){
  +                if (pp.isDirty() && !pp.isNew()) {
                       storeObject(pp);
  -                    
  +
                   }
  -                if( pp.isDeleted() ){
  -                    
  +                if (pp.isDeleted()) {
  +
                       removeObject(pp);
                   }
                   pp.setDirty(false);
               }
               objects.clear();
               internalCommit();
  -        }catch( Throwable t ){
  +        } catch (Throwable t) {
               // TODO
               t.printStackTrace();
               throw new java.lang.RuntimeException("Error");
           }
  -        
  -    }
  -    public Object getAttribute(String name) {
  -        return attributes.get(name);
  +
       }
  -    
  +
       public void removeAttribute(String name) {
           attributes.remove(name);
       }
  -    
  -    public void setAttribute(String name, Object value) {
  -        
  -        attributes.put(name,value);
  -    }
  +
  +    protected abstract void createObject(MetaObject properties) throws StorageException;
  +
  +    protected abstract void removeObject(MetaObject properties) throws StorageException;
  +
  +    protected abstract void internalCommit() throws StorageException;
  +
  +    protected abstract void internalRollback() throws StorageException;
  +
  +    protected abstract void internalBegin() throws StorageException;
   }
  +
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>