From: Andrew G. <ag...@us...> - 2007-06-10 03:12:56
|
Update of /cvsroot/zoolib/zoolib/java/org/zoolib/tuplebase In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15938 Modified Files: ZTSoup.java Log Message: Make appropriate local variables final. Annotate collection entities with the type they'll be containing. In update, return if fTSWatcher is null, indicating that close() had been called. This most often happens when the owner of a ZTSoup has queued a runnable that will call update, but calls close before that runnable gets invoked. Index: ZTSoup.java =================================================================== RCS file: /cvsroot/zoolib/zoolib/java/org/zoolib/tuplebase/ZTSoup.java,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- ZTSoup.java 4 Jun 2007 22:51:59 -0000 1.30 +++ ZTSoup.java 10 Jun 2007 03:12:14 -0000 1.31 @@ -64,8 +64,7 @@ public ZTSoup(ZTSWatcher iTSWatcher) { - fTSWatcher = iTSWatcher; - fTSWatcher.setCallback(this); + this(iTSWatcher, null, null); } public ZTSoup(ZTSWatcher iTSWatcher, UpdateNeededListener iUpdateNeededListener, SyncNeededListener iSyncNeededListener) @@ -167,13 +166,13 @@ fCalled_SyncNeeded = false; - Set removedIDs = new TreeSet(); - Set addedIDs = new TreeSet(); - Map writtenTuples = new TreeMap(); + final Set removedIDs = new TreeSet(); + final Set addedIDs = new TreeSet(); + final Map writtenTuples = new TreeMap(); - for (Iterator iter = fPCroutons_Sync.iteratorEraseAll(); iter.hasNext(); /*no increment*/) + for (Iterator iter = fPCroutons_Sync.iteratorEraseAll(); iter.hasNext(); /*no inc*/) { - PCrouton thePCrouton = (PCrouton)iter.next(); + final PCrouton thePCrouton = (PCrouton)iter.next(); if (thePCrouton.fHasValue_ForServer) { @@ -216,12 +215,12 @@ } } - Set removedQueries = new TreeSet(); - Map addedQueries = new TreeMap(); + final Set removedQueries = new TreeSet(); + final Map addedQueries = new TreeMap(); - for (Iterator iter = fPSieves_Sync.iteratorEraseAll(); iter.hasNext(); /*no increment*/) + for (Iterator iter = fPSieves_Sync.iteratorEraseAll(); iter.hasNext(); /*no inc*/) { - PSieve thePSieve = (PSieve)iter.next(); + final PSieve thePSieve = (PSieve)iter.next(); if (!thePSieve.fUsingTSieves.empty()) { @@ -252,9 +251,9 @@ fMutex_Structure.release(); - Set serverAddedIDs = new TreeSet(); - Map changedTuples = new TreeMap(); - Map changedQueries = new TreeMap(); + final Set serverAddedIDs = new TreeSet(); + final Map changedTuples = new TreeMap(); + final Map changedQueries = new TreeMap(); fTSWatcher.sync(removedIDs, addedIDs, removedQueries, addedQueries, @@ -264,20 +263,20 @@ fMutex_Structure.acquire(); - for (Iterator i = serverAddedIDs.iterator(); i.hasNext(); /*no increment*/) + for (Iterator i = serverAddedIDs.iterator(); i.hasNext(); /*no inc*/) { - ZID theZID = (ZID)i.next(); - PCrouton thePCrouton = this.pGetPCrouton(theZID); + final ZID theZID = (ZID)i.next(); + final PCrouton thePCrouton = this.pGetPCrouton(theZID); ZDebug.sAssert(!thePCrouton.fServerKnown); thePCrouton.fServerKnown = true; fPCroutons_Pending.insertIfNotContains(thePCrouton.fLink_Pending); } - for (Iterator i = changedTuples.entrySet().iterator(); i.hasNext(); /*no increment*/) + for (Iterator i = changedTuples.entrySet().iterator(); i.hasNext(); /*no inc*/) { - Map.Entry theEntry = (Map.Entry)i.next(); - ZID theZID = (ZID)theEntry.getKey(); - PCrouton thePCrouton = (PCrouton)fMap_ID_To_PCrouton.get(theZID); + final Map.Entry theEntry = (Map.Entry)i.next(); + final ZID theZID = (ZID)theEntry.getKey(); + final PCrouton thePCrouton = (PCrouton)fMap_ID_To_PCrouton.get(theZID); if (thePCrouton != null) { if (!thePCrouton.fWrittenLocally) @@ -288,18 +287,21 @@ } } - for (Iterator i = changedQueries.entrySet().iterator(); i.hasNext(); /*no increment*/) + for (Iterator i = changedQueries.entrySet().iterator(); i.hasNext(); /*no inc*/) { - Map.Entry theEntry = (Map.Entry)i.next(); - Long theIdentity = (Long)theEntry.getKey(); - PSieve thePSieve = (PSieve)fMap_Identity_To_PSieve.get(theIdentity); + final Map.Entry theEntry = (Map.Entry)i.next(); + final Long theIdentity = (Long)theEntry.getKey(); + final PSieve thePSieve = (PSieve)fMap_Identity_To_PSieve.get(theIdentity); ZDebug.sAssert(thePSieve != null); thePSieve.fResults_Remote = (List)theEntry.getValue(); fPSieves_Changed.insertIfNotContains(thePSieve.fLink_Changed); } - for (Iterator iter = fPCroutons_Syncing.iteratorEraseAll(); iter.hasNext(); /*no increment*/) - fPCroutons_Pending.insertIfNotContains(((PCrouton)iter.next()).fLink_Pending); + for (Iterator iter = fPCroutons_Syncing.iteratorEraseAll(); iter.hasNext(); /*no inc*/) + { + final PCrouton thePCrouton = (PCrouton)iter.next(); + fPCroutons_Pending.insertIfNotContains(thePCrouton.fLink_Pending); + } fMutex_CallSync.release(); @@ -320,6 +322,13 @@ fCalled_UpdateNeeded = false; + if (fTSWatcher == null) + { + fMutex_Structure.release(); + fMutex_CallUpdate.release(); + return; + } + if (fPSieves_Update.empty() && fPSieves_Changed.empty() && fPCroutons_Update.empty() && fPCroutons_Changed.empty()) { @@ -328,9 +337,9 @@ return; } - for (Iterator iter = fPCroutons_Update.iteratorEraseAll(); iter.hasNext(); /*no increment*/) + for (Iterator iter = fPCroutons_Update.iteratorEraseAll(); iter.hasNext(); /*no inc*/) { - PCrouton thePCrouton = (PCrouton)iter.next(); + final PCrouton thePCrouton = (PCrouton)iter.next(); if (thePCrouton.fWrittenLocally) { @@ -375,9 +384,9 @@ } } - for (Iterator iter = fPSieves_Update.iteratorEraseAll(); iter.hasNext(); /*no increment*/) + for (Iterator iter = fPSieves_Update.iteratorEraseAll(); iter.hasNext(); /*no inc*/) { - PSieve thePSieve = (PSieve)iter.next(); + final PSieve thePSieve = (PSieve)iter.next(); if (!thePSieve.fUsingTSieves.empty()) { @@ -404,25 +413,25 @@ } // Pick up remotely changed croutons. - List localTCroutons = new ArrayList(); - for (Iterator iter = fPCroutons_Changed.iteratorEraseAll(); iter.hasNext(); /*no increment*/) + final List localTCroutons = new ArrayList(); + for (Iterator iter = fPCroutons_Changed.iteratorEraseAll(); iter.hasNext(); /*no inc*/) { - PCrouton thePCrouton = (PCrouton)iter.next(); + final PCrouton thePCrouton = (PCrouton)iter.next(); thePCrouton.fHasValue_Prior = thePCrouton.fHasValue_Current; thePCrouton.fHasValue_Current = true; thePCrouton.fValue_Prior = thePCrouton.fValue_Current; thePCrouton.fValue_Current = thePCrouton.fValue_FromServer; - for (Iterator i = thePCrouton.fUsingTCroutons.iterator(); i.hasNext(); /*no increment*/) + for (Iterator i = thePCrouton.fUsingTCroutons.iterator(); i.hasNext(); /*no inc*/) localTCroutons.add(i.next()); } // Pick up remotely changed sieves - List localTSieves = new ArrayList(); - for (Iterator iter = fPSieves_Changed.iteratorEraseAll(); iter.hasNext(); /*no increment*/) + final List localTSieves = new ArrayList(); + for (Iterator iter = fPSieves_Changed.iteratorEraseAll(); iter.hasNext(); /*no inc*/) { - PSieve thePSieve = (PSieve)iter.next(); + final PSieve thePSieve = (PSieve)iter.next(); thePSieve.fHasResults_Prior = thePSieve.fHasResults_Current; thePSieve.fHasResults_Current = true; @@ -433,15 +442,18 @@ thePSieve.fAdded.clear(); thePSieve.fRemoved.clear(); - for (Iterator i = thePSieve.fUsingTSieves.iterator(); i.hasNext(); /*no increment*/) + for (Iterator i = thePSieve.fUsingTSieves.iterator(); i.hasNext(); /*no inc*/) localTSieves.add(i.next()); } if (!fPCroutons_Pending.empty()) { - for (Iterator i = fPCroutons_Pending.iteratorEraseAll(); i.hasNext(); /*no increment*/) - fPCroutons_Update.insertIfNotContains(((PCrouton)i.next()).fLink_Update); + for (Iterator i = fPCroutons_Pending.iteratorEraseAll(); i.hasNext(); /*no inc*/) + { + final PCrouton thePCrouton = (PCrouton)i.next(); + fPCroutons_Update.insertIfNotContains(thePCrouton.fLink_Update); + } this.pTriggerUpdate(); } @@ -451,13 +463,13 @@ fMutex_Structure.release(); - for (Iterator i = localTSieves.iterator(); i.hasNext(); /*no increment*/) + for (Iterator i = localTSieves.iterator(); i.hasNext(); /*no inc*/) { try { ((ZTSieve)i.next()).changed(); } catch (Exception ex) {} } - for (Iterator i = localTCroutons.iterator(); i.hasNext(); /*no increment*/) + for (Iterator i = localTCroutons.iterator(); i.hasNext(); /*no inc*/) { try { ((ZTCrouton)i.next()).changed(ZTCrouton.eChange_Remote); } catch (Exception ex) {} @@ -488,11 +500,9 @@ ++fCountTSieves; - Object existing = fMap_TBQuery_To_PSieve.get(iTBQuery); - PSieve thePSieve; - if (existing != null) + PSieve thePSieve = (PSieve)fMap_TBQuery_To_PSieve.get(iTBQuery); + if (thePSieve != null) { - thePSieve = (PSieve)existing; if (iPrefetch && !thePSieve.fPrefetch) { thePSieve.fPrefetch = true; @@ -539,7 +549,7 @@ --fCountTSieves; - PSieve thePSieve = iTSieve.fPSieve; + final PSieve thePSieve = iTSieve.fPSieve; iTSieve.fPSieve = null; thePSieve.fUsingTSieves.remove(iTSieve.fLink_PSieve); @@ -564,7 +574,7 @@ ++fCountTCroutons; - PCrouton thePCrouton = this.pGetPCrouton(iZID); + final PCrouton thePCrouton = this.pGetPCrouton(iZID); iTCrouton.fPCrouton = thePCrouton; thePCrouton.fUsingTCroutons.insert(iTCrouton.fLink_PCrouton); @@ -594,7 +604,7 @@ --fCountTCroutons; - PCrouton thePCrouton = iTCrouton.fPCrouton; + final PCrouton thePCrouton = iTCrouton.fPCrouton; iTCrouton.fPCrouton = null; thePCrouton.fUsingTCroutons.remove(iTCrouton.fLink_PCrouton); @@ -633,14 +643,14 @@ private final PCrouton pGetPCrouton(ZID iZID) { ZDebug.sAssert(fMutex_Structure.isLocked()); - Object existing = fMap_ID_To_PCrouton.get(iZID); + final Object existing = fMap_ID_To_PCrouton.get(iZID); if (existing != null) { return (PCrouton)existing; } else { - PCrouton thePCrouton = new PCrouton(this, iZID); + final PCrouton thePCrouton = new PCrouton(this, iZID); sInsertMustNotContain(fMap_ID_To_PCrouton, iZID, thePCrouton); thePCrouton.fServerKnown = false; thePCrouton.fHasValue_Current = false; @@ -678,13 +688,13 @@ this.pTriggerUpdate(); - List localTCroutons = new ArrayList(); - for (Iterator i = iPCrouton.fUsingTCroutons.iterator(); i.hasNext(); /*no increment*/) + final List localTCroutons = new ArrayList(); + for (Iterator i = iPCrouton.fUsingTCroutons.iterator(); i.hasNext(); /*no inc*/) localTCroutons.add(i.next()); fMutex_Structure.release(); - for (Iterator i = localTCroutons.iterator(); i.hasNext(); /*no increment*/) + for (Iterator i = localTCroutons.iterator(); i.hasNext(); /*no inc*/) { try { ((ZTCrouton)i.next()).changed(ZTCrouton.eChange_Local); } catch (Exception ex) {} @@ -791,13 +801,13 @@ boolean fHasResults_Current; boolean fHasResults_Prior; - List fResults_Local_Prior = new ArrayList(); - List fResults_Local_Current = new ArrayList(); - List fResults_Remote = new ArrayList(); + List fResults_Local_Prior = new ArrayList(); // ZID + List fResults_Local_Current = new ArrayList(); // ZID + List fResults_Remote = new ArrayList(); // ZID boolean fHasDiffs; - Set fAdded = new TreeSet(); - Set fRemoved = new TreeSet(); + Set fAdded = new TreeSet(); // ZID + Set fRemoved = new TreeSet(); // ZID private final Long fIdentity = new Long(ZTSoup.sNewIdentity()); |