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 ar...@apache.org on 2008/01/29 02:55:59 UTC

svn commit: r616136 - /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/cache/ObjectCacheDefaultImpl.java

Author: arminw
Date: Mon Jan 28 17:55:58 2008
New Revision: 616136

URL: http://svn.apache.org/viewvc?rev=616136&view=rev
Log:
minor improvement, avoid needless code within sync blocks

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/cache/ObjectCacheDefaultImpl.java

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/cache/ObjectCacheDefaultImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/cache/ObjectCacheDefaultImpl.java?rev=616136&r1=616135&r2=616136&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/cache/ObjectCacheDefaultImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/cache/ObjectCacheDefaultImpl.java Mon Jan 28 17:55:58 2008
@@ -219,10 +219,12 @@
         if((obj != null))
         {
             traceIdentity(oid);
+            Object key = buildKey(oid);
+            CacheEntry entry = buildEntry(obj, oid);
+            if(log.isDebugEnabled()) log.debug("Cache object " + oid);
             synchronized(lock)
             {
-                if(log.isDebugEnabled()) log.debug("Cache object " + oid);
-                objectTable.put(buildKey(oid), buildEntry(obj, oid));
+                objectTable.put(key, entry);
             }
         }
     }
@@ -239,14 +241,15 @@
 
     public boolean cacheIfNew(Identity oid, Object obj)
     {
-        //processQueue();
         boolean result = false;
         Object key = buildKey(oid);
         if((obj != null))
         {
-            synchronized(objectTable)
+            CacheEntry entry;
+            synchronized(lock)
             {
-                if(!objectTable.containsKey(key))
+                entry = (CacheEntry) objectTable.get(key);
+                if(entry == null || entry.get() == null)
                 {
                     objectTable.put(key, buildEntry(obj, oid));
                     result = true;
@@ -307,12 +310,13 @@
         //processQueue();
         if(oid != null)
         {
+            if(log.isDebugEnabled()) log.debug("Remove object " + oid);
             removeTracedIdentity(oid);
+            Object key = buildKey(oid);
             synchronized(lock)
             {
-                objectTable.remove(buildKey(oid));
+                objectTable.remove(key);
             }
-            if(log.isDebugEnabled()) log.debug("Remove object " + oid);
         }
     }
 
@@ -347,9 +351,10 @@
         for(Iterator iterator = identitiesInWork.iterator(); iterator.hasNext();)
         {
             oid = (Identity) iterator.next();
+            Object key = buildKey(oid);
             synchronized(lock)
             {
-                objectTable.remove(buildKey(oid));
+                objectTable.remove(key);
             }
         }
     }
@@ -413,7 +418,6 @@
 
     private void processQueue()
     {
-        // TODO: check this code block.
         if(counter++ > 500)
         {
             counter = 0;
@@ -422,7 +426,6 @@
                 CacheEntry sv;
                 while((sv = (CacheEntry) queue.poll()) != null)
                 {
-                    removeTracedIdentity(sv.getOid());
                     objectTable.remove(buildKey(sv.getOid()));
                 }
             }



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