arminw      2005/12/31 11:03:43

  Modified:    src/java/org/apache/ojb/broker/core Tag: OJB_1_0_RELEASE
                        PersistenceBrokerImpl.java
  Log:
  minor performance improvement, code cleanup
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.83.2.31 +23 -16    
db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java
  
  Index: PersistenceBrokerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java,v
  retrieving revision 1.83.2.30
  retrieving revision 1.83.2.31
  diff -u -r1.83.2.30 -r1.83.2.31
  --- PersistenceBrokerImpl.java        13 Dec 2005 18:21:23 -0000      
1.83.2.30
  +++ PersistenceBrokerImpl.java        31 Dec 2005 19:03:43 -0000      
1.83.2.31
  @@ -142,12 +142,12 @@
       with user implemented equals/hashCode methods of persistence capable 
objects
       (e.g. objects are equals but PK fields not)
       */
  -    private List nowStoring = new IdentityArrayList();
  +    private IdentityArrayList nowStoring = new IdentityArrayList();
   
       /**
        * Lists for object registration during delete operations.
        * We reuse these list to avoid excessive object creation.
  -     * @see #clearRegistrationLists
  +     * @see #refreshRegistrationLists
        */
       /*
       arminw: list was cleared before delete method end. Internal we only
  @@ -157,7 +157,7 @@
       with user implemented equals/hashCode methods of persistence capable 
objects
       (e.g. objects are equals but PK fields not)
       */
  -    private List markedForDelete = new IdentityArrayList();
  +    private IdentityArrayList markedForDelete = new IdentityArrayList();
   
       /**
        * The set of identities of all deleted objects during current 
transaction
  @@ -369,7 +369,7 @@
           try
           {
               fireBrokerEvent(BEFORE_CLOSE_EVENT);
  -            clearRegistrationLists();
  +            refreshRegistrationLists();
               referencesBroker.removePrefetchingListeners();
               if (connectionManager != null)
               {
  @@ -411,7 +411,7 @@
           {
               fireBrokerEvent(BEFORE_ROLLBACK_EVENT);
               setInTransaction(false);
  -            clearRegistrationLists();
  +            refreshRegistrationLists();
               referencesBroker.removePrefetchingListeners();
               /*
               arminw:
  @@ -460,7 +460,7 @@
           }
           fireBrokerEvent(BEFORE_COMMIT_EVENT);
           setInTransaction(false);
  -        clearRegistrationLists();
  +        refreshRegistrationLists();
           referencesBroker.removePrefetchingListeners();
           /*
           arminw:
  @@ -1637,7 +1637,7 @@
       public Object getObjectByIdentity(Identity id) throws 
PersistenceBrokerException
       {
           objectCache.enableMaterializationCache();
  -        Object result = null;
  +        Object result;
           try
           {
               result = doGetObjectByIdentity(id);
  @@ -2145,26 +2145,35 @@
   
       protected void finalize()
       {
  -        if (!isClosed)
  +        try
  +        {
  +            super.finalize();
  +            if (!isClosed)
  +            {
  +                logger.warn("Garbage collection: Unclosed PersistenceBroker 
instance detected, check code for PB leaks");
  +                close();
  +            }
  +        }
  +        catch(Throwable ignore)
           {
  -            close();
  +            // ignore
           }
       }
   
       /**
        * clean up the maps for reuse by the next transaction.
        */
  -    private void clearRegistrationLists()
  +    private void refreshRegistrationLists()
       {
  -        nowStoring.clear();
  -        objectCache.doLocalClear();
  -        deletedDuringTransaction.clear();
  +        if(nowStoring.size() > 0) nowStoring = new IdentityArrayList();
  +        if(deletedDuringTransaction.size() > 0) 
deletedDuringTransaction.clear();
           /*
           arminw:
           for better performance I don't register MtoNBroker as listner,
           so use this method to reset on commit/rollback
           */
           mtoNBroker.reset();
  +        objectCache.doLocalClear();
       }
       
   
  @@ -2223,6 +2232,4 @@
               throw new PersistenceBrokerException("Unable to create proxy 
using class:"+baseClassForProxy.getName(), ex);
           }
       }
  -    
  -    
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to