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]