You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by to...@apache.org on 2004/11/29 23:11:59 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/broker/core QueryReferenceBroker.java

tomdz       2004/11/29 14:11:59

  Modified:    src/java/org/apache/ojb/broker/core/proxy
                        SetProxyDefaultImpl.java ListProxyDefaultImpl.java
                        CollectionProxyDefaultImpl.java ProxyFactory.java
               src/java/org/apache/ojb/otm/core ConcreteEditingContext.java
               src/java/org/apache/ojb/otm/swizzle CopySwizzling.java
               src/java/org/apache/ojb/broker/core
                        QueryReferenceBroker.java
  Log:
  Removed static calls from the proxy classes to the PersistenceBrokerFactory
  
  Revision  Changes    Path
  1.4       +8 -8      db-ojb/src/java/org/apache/ojb/broker/core/proxy/SetProxyDefaultImpl.java
  
  Index: SetProxyDefaultImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/proxy/SetProxyDefaultImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SetProxyDefaultImpl.java	14 Nov 2004 09:34:27 -0000	1.3
  +++ SetProxyDefaultImpl.java	29 Nov 2004 22:11:59 -0000	1.4
  @@ -18,8 +18,8 @@
   import java.util.Collection;
   import java.util.Set;
   
  -import org.apache.ojb.broker.PBKey;
   import org.apache.ojb.broker.PersistenceBrokerException;
  +import org.apache.ojb.broker.PersistenceConfiguration;
   import org.apache.ojb.broker.query.Query;
   import org.apache.ojb.broker.util.collections.ManageableHashSet;
   
  @@ -36,23 +36,23 @@
   
       /**
   	 * Constructor for SetProxy.
  -	 * @param aKey
  +	 * @param persistenceConf
   	 * @param aQuery
   	 */
  -	public SetProxyDefaultImpl(PBKey aKey, Query aQuery)
  +	public SetProxyDefaultImpl(PersistenceConfiguration persistenceConf, Query aQuery)
   	{
  -		this(aKey, ManageableHashSet.class, aQuery);
  +		this(persistenceConf, ManageableHashSet.class, aQuery);
   	}
   
   	/**
   	 * Constructor for SetProxy.
  -	 * @param aKey
  +	 * @param persistenceConf
   	 * @param aCollClass
   	 * @param aQuery
   	 */
  -	public SetProxyDefaultImpl(PBKey aKey, Class aCollClass, Query aQuery)
  +	public SetProxyDefaultImpl(PersistenceConfiguration persistenceConf, Class aCollClass, Query aQuery)
   	{
  -		super(aKey, aCollClass, aQuery);
  +		super(persistenceConf, aCollClass, aQuery);
   	}
   
       protected Set getSetData()
  
  
  
  1.4       +8 -8      db-ojb/src/java/org/apache/ojb/broker/core/proxy/ListProxyDefaultImpl.java
  
  Index: ListProxyDefaultImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/proxy/ListProxyDefaultImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ListProxyDefaultImpl.java	14 Nov 2004 09:34:27 -0000	1.3
  +++ ListProxyDefaultImpl.java	29 Nov 2004 22:11:59 -0000	1.4
  @@ -19,8 +19,8 @@
   import java.util.List;
   import java.util.ListIterator;
   
  -import org.apache.ojb.broker.PBKey;
   import org.apache.ojb.broker.PersistenceBrokerException;
  +import org.apache.ojb.broker.PersistenceConfiguration;
   import org.apache.ojb.broker.query.Query;
   import org.apache.ojb.broker.util.collections.RemovalAwareCollection;
   
  @@ -37,23 +37,23 @@
   
       /**
        * Constructor for ListProxy.
  -     * @param aKey
  +     * @param persistenceConf
        * @param aQuery
        */
  -    public ListProxyDefaultImpl(PBKey aKey, Query aQuery)
  +    public ListProxyDefaultImpl(PersistenceConfiguration persistenceConf, Query aQuery)
       {
  -        this(aKey, RemovalAwareCollection.class, aQuery);
  +        this(persistenceConf, RemovalAwareCollection.class, aQuery);
       }
   
       /**
        * Constructor for ListProxy.
  -     * @param aKey
  +     * @param persistenceConf
        * @param aCollClass
        * @param aQuery
        */
  -    public ListProxyDefaultImpl(PBKey aKey, Class aCollClass, Query aQuery)
  +    public ListProxyDefaultImpl(PersistenceConfiguration persistenceConf, Class aCollClass, Query aQuery)
       {
  -        super(aKey, aCollClass, aQuery);
  +        super(persistenceConf, aCollClass, aQuery);
       }
   
       /**
  
  
  
  1.16      +49 -25    db-ojb/src/java/org/apache/ojb/broker/core/proxy/CollectionProxyDefaultImpl.java
  
  Index: CollectionProxyDefaultImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/proxy/CollectionProxyDefaultImpl.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- CollectionProxyDefaultImpl.java	28 Nov 2004 03:13:16 -0000	1.15
  +++ CollectionProxyDefaultImpl.java	29 Nov 2004 22:11:59 -0000	1.16
  @@ -15,6 +15,9 @@
    * limitations under the License.
    */
   
  +import java.io.IOException;
  +import java.io.ObjectInputStream;
  +import java.io.ObjectOutputStream;
   import java.util.ArrayList;
   import java.util.Collection;
   import java.util.Iterator;
  @@ -25,7 +28,7 @@
   import org.apache.ojb.broker.PBKey;
   import org.apache.ojb.broker.PersistenceBroker;
   import org.apache.ojb.broker.PersistenceBrokerException;
  -import org.apache.ojb.broker.PersistenceBrokerFactory;
  +import org.apache.ojb.broker.PersistenceConfiguration;
   import org.apache.ojb.broker.core.PersistenceBrokerThreadMapping;
   import org.apache.ojb.broker.metadata.CollectionDescriptor;
   import org.apache.ojb.broker.query.Query;
  @@ -44,8 +47,12 @@
   {
       private static final long serialVersionUID = -6505291808050247424L;
   
  -    /** The key for acquiring the above broker */
  -    private PBKey m_brokerKey;
  +    /**
  +     * The persistence configuration that this proxy is bound to. Note that
  +     * upon loading of the collection this reference will be cleared to avoid
  +     * holding onto a link into OJB for longer than necessary.
  +     */
  +    private transient PersistenceConfiguration persistenceConf;
       /** The query that defines the values in the collection */
       private Query m_query;
       /** The actual data (if already loaded) */
  @@ -70,24 +77,24 @@
        * {@link org.apache.ojb.broker.util.collections.RemovalAwareCollection}
        * as the collection class).
        * 
  -     * @param brokerKey The key of the persistence broker
  -     * @param query     The defining query
  +     * @param persistenceConf The persistence configuration that this proxy is bound to
  +     * @param query           The defining query
        */
  -    public CollectionProxyDefaultImpl(PBKey brokerKey, Query query)
  +    public CollectionProxyDefaultImpl(PersistenceConfiguration persistenceConf, Query query)
       {
  -        this(brokerKey, RemovalAwareCollection.class, query);
  +        this(persistenceConf, RemovalAwareCollection.class, query);
       }
   
       /**
        * Creates a new collection proxy that uses the given collection type.
        * 
  -     * @param brokerKey The key of the persistence broker
  -     * @param collClass The collection type
  -     * @param query     The defining query
  +     * @param persistenceConf The persistence configuration that this proxy is bound to
  +     * @param collClass       The collection type
  +     * @param query           The defining query
        */
  -    public CollectionProxyDefaultImpl(PBKey brokerKey, Class collClass, Query query)
  +    public CollectionProxyDefaultImpl(PersistenceConfiguration persistenceConf, Class collClass, Query query)
       {
  -        setBrokerKey(brokerKey);
  +        this.persistenceConf = persistenceConf;
           setCollectionClass(collClass);
           setQuery(query);
       }
  @@ -101,6 +108,8 @@
           {
               beforeLoading();
               setData(loadData());
  +            // release reference into OJB
  +            persistenceConf = null;
               afterLoading();
           }
           
  @@ -423,7 +432,7 @@
           // current broker not found or was closed, create a intern new one
           if (broker == null || broker.isClosed())
           {
  -            broker = PersistenceBrokerFactory.createPersistenceBroker(getBrokerKey());
  +            broker = persistenceConf.createPersistenceBroker();
               // signal that we use a new internal obtained PB instance to read the
               // data and that this instance have to be closed after use
               m_needsClose = true;
  @@ -523,17 +532,7 @@
        */
       public PBKey getBrokerKey()
       {
  -        return m_brokerKey;
  -    }
  -
  -    /**
  -     * Sets the key of the persistence broker used by this collection.
  -     * 
  -     * @param brokerKey The key of the broker
  -     */
  -    protected void setBrokerKey(PBKey brokerKey)
  -    {
  -        m_brokerKey = brokerKey;
  +        return persistenceConf.getKey();
       }
   
       /**
  @@ -563,4 +562,29 @@
           }
       }
   
  +    /**
  +     * This method (together with the {@link #readObject(ObjectInputStream)} method) overrides
  +     * the default serialization mechanism so that the real collection is serialized.
  +     *  
  +     * @param out The output stream
  +     */
  +    private void writeObject(ObjectOutputStream out) throws IOException
  +    {
  +        // force loading of the data
  +        load();
  +        // and then default action
  +        out.defaultWriteObject();
  +    }
  +
  +    /**
  +     * This method (together with the {@link #writeObject(ObjectOutputStream)} method) overrides
  +     * the default serialization mechanism so that the real collection is serialized.
  +     *  
  +     * @param in The input stream
  +     */
  +    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
  +    {
  +        // default action
  +        in.defaultReadObject();
  +    }
   }
  
  
  
  1.3       +7 -6      db-ojb/src/java/org/apache/ojb/broker/core/proxy/ProxyFactory.java
  
  Index: ProxyFactory.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/proxy/ProxyFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ProxyFactory.java	14 Nov 2004 09:34:27 -0000	1.2
  +++ ProxyFactory.java	29 Nov 2004 22:11:59 -0000	1.3
  @@ -26,6 +26,7 @@
   import org.apache.ojb.broker.ManageableCollection;
   import org.apache.ojb.broker.PBKey;
   import org.apache.ojb.broker.PersistenceBrokerException;
  +import org.apache.ojb.broker.PersistenceConfiguration;
   import org.apache.ojb.broker.metadata.MetadataException;
   import org.apache.ojb.broker.query.Query;
   
  @@ -150,7 +151,7 @@
               throw new MetadataException("Illegal class "+proxyClass.getName()+" specified for "+typeDesc+". Must be a concrete subclass of "+baseType.getName());
           }
   
  -        Class[] paramType = {PBKey.class, Class.class, Query.class};
  +        Class[] paramType = {PersistenceConfiguration.class, Class.class, Query.class};
   
           try
           {
  @@ -160,7 +161,7 @@
           {
               throw new MetadataException("The class "+proxyClass.getName()+" specified for "+
                                           typeDesc+" is required to have a public constructor with signature ("+
  -                                        PBKey.class.getName()+", "+Class.class.getName()+", "+Query.class.getName()+").");
  +                                        PersistenceConfiguration.class.getName()+", "+Class.class.getName()+", "+Query.class.getName()+").");
           }
       }
       
  @@ -288,14 +289,14 @@
       /**
        * Create a Collection Proxy for a given query.
        * 
  -     * @param brokerKey       The key of the persistence broker
  +     * @param persistenceConf The persistence configuration that the proxy will be bound to
        * @param query           The query
        * @param collectionClass The class to build the proxy for
        * @return The collection proxy
        */
  -    public ManageableCollection createCollectionProxy(PBKey brokerKey, Query query, Class collectionClass)
  +    public ManageableCollection createCollectionProxy(PersistenceConfiguration persistenceConf, Query query, Class collectionClass)
       {
  -        Object args[] = { brokerKey, collectionClass, query };
  +        Object args[] = { persistenceConf, collectionClass, query };
   
           try
           {
  
  
  
  1.53      +1 -1      db-ojb/src/java/org/apache/ojb/otm/core/ConcreteEditingContext.java
  
  Index: ConcreteEditingContext.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/otm/core/ConcreteEditingContext.java,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- ConcreteEditingContext.java	14 Nov 2004 09:39:57 -0000	1.52
  +++ ConcreteEditingContext.java	29 Nov 2004 22:11:59 -0000	1.53
  @@ -1162,7 +1162,7 @@
                   {
                       CollectionProxy cp = (CollectionProxy) col;
                       
  -                    col = (Collection)_pb.getProxyFactory().createCollectionProxy(_pb.getPBKey(), null, cp.getCollectionClass());
  +                    col = (Collection)_pb.getProxyFactory().createCollectionProxy(_pb.getConfiguration(), null, cp.getCollectionClass());
                       col.clear();
                   }
                   else
  
  
  
  1.15      +1 -1      db-ojb/src/java/org/apache/ojb/otm/swizzle/CopySwizzling.java
  
  Index: CopySwizzling.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/otm/swizzle/CopySwizzling.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- CopySwizzling.java	14 Nov 2004 09:39:57 -0000	1.14
  +++ CopySwizzling.java	29 Nov 2004 22:11:59 -0000	1.15
  @@ -124,7 +124,7 @@
                   if (newCol instanceof CollectionProxy)
                   {
                       CollectionProxy cp = (CollectionProxy) newCol;
  -                    oldCol = (Collection)((PersistenceBrokerInternal)pb).getProxyFactory().createCollectionProxy(pb.getPBKey(), cp.getQuery(), cp.getCollectionClass());
  +                    oldCol = (Collection)((PersistenceBrokerInternal)pb).getProxyFactory().createCollectionProxy(pb.getConfiguration(), cp.getQuery(), cp.getCollectionClass());
   
                       if (!((CollectionProxy) newCol).isLoaded())
                       {
  
  
  
  1.24      +2 -2      db-ojb/src/java/org/apache/ojb/broker/core/QueryReferenceBroker.java
  
  Index: QueryReferenceBroker.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/QueryReferenceBroker.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- QueryReferenceBroker.java	14 Nov 2004 09:34:27 -0000	1.23
  +++ QueryReferenceBroker.java	29 Nov 2004 22:11:59 -0000	1.24
  @@ -221,7 +221,7 @@
               {
                   if (lazy)
                   {
  -                    result = pb.getProxyFactory().createCollectionProxy(pb.getPBKey(), query, collectionClass);
  +                    result = pb.getProxyFactory().createCollectionProxy(pb.getConfiguration(), query, collectionClass);
                   }
                   else
                   {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org