You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tv...@apache.org on 2019/05/05 17:59:40 UTC

svn commit: r1858701 - in /commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs: auxiliary/disk/block/ auxiliary/disk/indexed/ auxiliary/disk/jdbc/dsfactory/ auxiliary/remote/server/ engine/ engine/control/ engine/memory/ engi...

Author: tv
Date: Sun May  5 17:59:39 2019
New Revision: 1858701

URL: http://svn.apache.org/viewvc?rev=1858701&view=rev
Log:
Remove most Iterators

Modified:
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCache.java
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/indexed/IndexedDiskCache.java
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/dsfactory/JndiDataSourceFactory.java
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/server/RemoteCacheServer.java
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/CacheListeners.java
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/AbstractMemoryCache.java
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/lru/LHMLRUMemoryCache.java
    commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/struct/AbstractLRUMap.java

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCache.java?rev=1858701&r1=1858700&r2=1858701&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCache.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCache.java Sun May  5 17:59:39 2019
@@ -24,7 +24,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -203,24 +202,28 @@ public class BlockDiskCache<K, V>
 
         try
         {
-            int maxToTest = 100;
-            int count = 0;
-            Iterator<Map.Entry<K, int[]>> it = this.keyStore.entrySet().iterator();
-            while ( it.hasNext() && count < maxToTest )
-            {
-                count++;
-                Map.Entry<K, int[]> entry = it.next();
-                Object data = this.dataFile.read( entry.getValue() );
-                if ( data == null )
-                {
-                    throw new Exception( logCacheName + "Couldn't find data for key [" + entry.getKey() + "]" );
-                }
-            }
+            this.keyStore.entrySet().stream()
+                .limit(100)
+                .forEach(entry -> {
+                    try
+                    {
+                        Object data = this.dataFile.read(entry.getValue());
+                        if ( data == null )
+                        {
+                            throw new IOException("Data is null");
+                        }
+                    }
+                    catch (IOException | ClassNotFoundException e)
+                    {
+                        throw new RuntimeException(logCacheName
+                                + " Couldn't find data for key [" + entry.getKey() + "]", e);
+                    }
+                });
             alright = true;
         }
         catch ( Exception e )
         {
-            log.warn( logCacheName + "Problem verifying disk.  Message [" + e.getMessage() + "]" );
+            log.warn(logCacheName + " Problem verifying disk.", e);
             alright = false;
         }
         finally

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/indexed/IndexedDiskCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/indexed/IndexedDiskCache.java?rev=1858701&r1=1858700&r2=1858701&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/indexed/IndexedDiskCache.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/indexed/IndexedDiskCache.java Sun May  5 17:59:39 2019
@@ -23,11 +23,10 @@ import java.io.File;
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -1364,24 +1363,15 @@ public class IndexedDiskCache<K, V> exte
      * Creates a snapshot of the IndexedDiskElementDescriptors in the keyHash and returns them
      * sorted by position in the dataFile.
      * <p>
-     * TODO fix values() method on the LRU map.
-     * <p>
      *
      * @return IndexedDiskElementDescriptor[]
      */
     private IndexedDiskElementDescriptor[] createPositionSortedDescriptorList()
     {
-        IndexedDiskElementDescriptor[] defragList = new IndexedDiskElementDescriptor[keyHash.size()];
-        Iterator<Map.Entry<K, IndexedDiskElementDescriptor>> iterator = keyHash.entrySet().iterator();
-        for (int i = 0; iterator.hasNext(); i++)
-        {
-            Map.Entry<K, IndexedDiskElementDescriptor> next = iterator.next();
-            defragList[i] = next.getValue();
-        }
-
-        Arrays.sort(defragList, new PositionComparator());
+        List<IndexedDiskElementDescriptor> defragList = new ArrayList<>(keyHash.values());
+        Collections.sort(defragList, new PositionComparator());
 
-        return defragList;
+        return defragList.toArray(new IndexedDiskElementDescriptor[0]);
     }
 
     /**

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/dsfactory/JndiDataSourceFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/dsfactory/JndiDataSourceFactory.java?rev=1858701&r1=1858700&r2=1858701&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/dsfactory/JndiDataSourceFactory.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/dsfactory/JndiDataSourceFactory.java Sun May  5 17:59:39 2019
@@ -21,7 +21,6 @@ package org.apache.commons.jcs.auxiliary
 
 import java.sql.SQLException;
 import java.util.Hashtable;
-import java.util.Iterator;
 import java.util.Map;
 
 import javax.naming.Context;
@@ -173,13 +172,8 @@ public class JndiDataSourceFactory imple
     {
         log.debug("InitialContext -------------------------------");
         Map<?, ?> env = ctx.getEnvironment();
-        Iterator<?> qw = env.entrySet().iterator();
         log.debug("Environment properties:" + env.size());
-        while (qw.hasNext())
-        {
-            Map.Entry<?, ?> entry = (Map.Entry<?, ?>) qw.next();
-            log.debug("    " + entry.getKey() + ": " + entry.getValue());
-        }
+        env.forEach((key, value) -> log.debug("    " + key + ": " + value));
         log.debug("----------------------------------------------");
     }
 }

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/server/RemoteCacheServer.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/server/RemoteCacheServer.java?rev=1858701&r1=1858700&r2=1858701&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/server/RemoteCacheServer.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/remote/server/RemoteCacheServer.java Sun May  5 17:59:39 2019
@@ -27,7 +27,6 @@ import java.rmi.server.RMISocketFactory;
 import java.rmi.server.UnicastRemoteObject;
 import java.rmi.server.Unreferenced;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
@@ -1234,21 +1233,11 @@ public class RemoteCacheServer<K, V>
     {
         synchronized ( eventQMap )
         {
-            for (Iterator<Map.Entry<Long, ICacheEventQueue<KK, VV>>> itr = eventQMap.entrySet().iterator(); itr.hasNext(); )
-            {
-                Map.Entry<Long, ICacheEventQueue<KK, VV>> e = itr.next();
-                ICacheEventQueue<KK, VV> q = e.getValue();
-
-                // this does not care if the q is alive (i.e. if
-                // there are active threads; it cares if the queue
-                // is working -- if it has not encountered errors
-                // above the failure threshold
-                if ( !q.isWorking() )
-                {
-                    itr.remove();
-                    log.warn( "Cache event queue " + q + " is not working and removed from cache server." );
-                }
-            }
+            // this does not care if the q is alive (i.e. if
+            // there are active threads; it cares if the queue
+            // is working -- if it has not encountered errors
+            // above the failure threshold
+            eventQMap.entrySet().removeIf(e -> !e.getValue().isWorking());
         }
     }
 

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/CacheListeners.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/CacheListeners.java?rev=1858701&r1=1858700&r2=1858701&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/CacheListeners.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/CacheListeners.java Sun May  5 17:59:39 2019
@@ -1,26 +1,5 @@
 package org.apache.commons.jcs.engine;
 
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.Iterator;
-import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
@@ -68,11 +47,9 @@ public class CacheListeners<K, V>
         {
             buffer.append( "\n Event Queue Map " );
             buffer.append( "\n size = " + eventQMap.size() );
-            Iterator<Map.Entry<Long, ICacheEventQueue<K, V>>> it = eventQMap.entrySet().iterator();
-            while ( it.hasNext() )
-            {
-                buffer.append( "\n Entry: " + it.next() );
-            }
+            eventQMap.forEach((key, value)
+                    -> buffer.append( "\n Entry: key: ").append(key)
+                        .append(", value: ").append(value));
         }
         else
         {

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java?rev=1858701&r1=1858700&r2=1858701&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/control/CompositeCache.java Sun May  5 17:59:39 2019
@@ -23,7 +23,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ScheduledExecutorService;
@@ -732,13 +731,8 @@ public class CompositeCache<K, V>
         throws IOException
     {
         Map<K, ICacheElement<K, V>> elementsFromMemory = memCache.getMultiple(keys);
-        Iterator<Map.Entry<K, ICacheElement<K, V>>> elementFromMemoryIterator = elementsFromMemory.entrySet().iterator();
-
-        while (elementFromMemoryIterator.hasNext())
-        {
-            Map.Entry<K, ICacheElement<K, V>> entry = elementFromMemoryIterator.next();
+        elementsFromMemory.entrySet().removeIf(entry -> {
             ICacheElement<K, V> element = entry.getValue();
-
             if (isExpired(element))
             {
                 if (log.isDebugEnabled())
@@ -747,7 +741,7 @@ public class CompositeCache<K, V>
                 }
 
                 doExpires(element);
-                elementFromMemoryIterator.remove();
+                return true;
             }
             else
             {
@@ -758,8 +752,9 @@ public class CompositeCache<K, V>
 
                 // Update counters
                 hitCountRam.incrementAndGet();
+                return false;
             }
-        }
+        });
 
         return elementsFromMemory;
     }
@@ -982,11 +977,7 @@ public class CompositeCache<K, V>
     private void processRetrievedElements(AuxiliaryCache<K, V> aux, Map<K, ICacheElement<K, V>> elementsFromAuxiliary)
         throws IOException
     {
-        Iterator<Map.Entry<K, ICacheElement<K, V>>> elementFromAuxiliaryIterator = elementsFromAuxiliary.entrySet().iterator();
-
-        while (elementFromAuxiliaryIterator.hasNext())
-        {
-            Map.Entry<K, ICacheElement<K, V>> entry = elementFromAuxiliaryIterator.next();
+        elementsFromAuxiliary.entrySet().removeIf(entry -> {
             ICacheElement<K, V> element = entry.getValue();
 
             // Item found in one of the auxiliary caches.
@@ -1004,7 +995,7 @@ public class CompositeCache<K, V>
                     // associated with the item when it created govern its behavior
                     // everywhere.
                     doExpires(element);
-                    elementFromAuxiliaryIterator.remove();
+                    return true;
                 }
                 else
                 {
@@ -1015,10 +1006,20 @@ public class CompositeCache<K, V>
 
                     // Update counters
                     hitCountAux.incrementAndGet();
-                    copyAuxiliaryRetrievedItemToMemory(element);
+                    try
+                    {
+                        copyAuxiliaryRetrievedItemToMemory(element);
+                    }
+                    catch (IOException e)
+                    {
+                        log.error(cacheAttr.getCacheName()
+                                + " failed to copy element to memory " + element, e);
+                    }
                 }
             }
-        }
+
+            return false;
+        });
     }
 
     /**

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/AbstractMemoryCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/AbstractMemoryCache.java?rev=1858701&r1=1858700&r2=1858701&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/AbstractMemoryCache.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/AbstractMemoryCache.java Sun May  5 17:59:39 2019
@@ -22,7 +22,6 @@ package org.apache.commons.jcs.engine.me
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
@@ -36,6 +35,7 @@ import org.apache.commons.jcs.engine.beh
 import org.apache.commons.jcs.engine.behavior.ICompositeCacheAttributes;
 import org.apache.commons.jcs.engine.control.CompositeCache;
 import org.apache.commons.jcs.engine.control.group.GroupAttrName;
+import org.apache.commons.jcs.engine.control.group.GroupId;
 import org.apache.commons.jcs.engine.memory.behavior.IMemoryCache;
 import org.apache.commons.jcs.engine.memory.util.MemoryElementDescriptor;
 import org.apache.commons.jcs.engine.stats.StatElement;
@@ -334,31 +334,28 @@ public abstract class AbstractMemoryCach
      */
     protected boolean removeByGroup(K key)
     {
-        boolean removed = false;
+        GroupId groupId = ((GroupAttrName<?>) key).groupId;
 
         // remove all keys of the same group hierarchy.
-        for (Iterator<Map.Entry<K, MemoryElementDescriptor<K, V>>> itr = map.entrySet().iterator(); itr.hasNext();)
-        {
-            Map.Entry<K, MemoryElementDescriptor<K, V>> entry = itr.next();
+        return map.entrySet().removeIf(entry -> {
             K k = entry.getKey();
 
-            if (k instanceof GroupAttrName && ((GroupAttrName<?>) k).groupId.equals(((GroupAttrName<?>) key).groupId))
+            if (k instanceof GroupAttrName && ((GroupAttrName<?>) k).groupId.equals(groupId))
             {
                 lock.lock();
                 try
                 {
-                    itr.remove();
                     lockedRemoveElement(entry.getValue());
-                    removed = true;
+                    return true;
                 }
                 finally
                 {
                     lock.unlock();
                 }
             }
-        }
 
-        return removed;
+            return false;
+        });
     }
 
     /**
@@ -369,31 +366,28 @@ public abstract class AbstractMemoryCach
      */
     protected boolean removeByHierarchy(K key)
     {
-        boolean removed = false;
+        String keyString = key.toString();
 
         // remove all keys of the same name hierarchy.
-        for (Iterator<Map.Entry<K, MemoryElementDescriptor<K, V>>> itr = map.entrySet().iterator(); itr.hasNext();)
-        {
-            Map.Entry<K, MemoryElementDescriptor<K, V>> entry = itr.next();
+        return map.entrySet().removeIf(entry -> {
             K k = entry.getKey();
 
-            if (k instanceof String && ((String) k).startsWith(key.toString()))
+            if (k instanceof String && ((String) k).startsWith(keyString))
             {
                 lock.lock();
                 try
                 {
-                    itr.remove();
                     lockedRemoveElement(entry.getValue());
-                    removed = true;
+                    return true;
                 }
                 finally
                 {
                     lock.unlock();
                 }
             }
-        }
 
-        return removed;
+            return false;
+        });
     }
 
     /**

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/lru/LHMLRUMemoryCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/lru/LHMLRUMemoryCache.java?rev=1858701&r1=1858700&r2=1858701&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/lru/LHMLRUMemoryCache.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/engine/memory/lru/LHMLRUMemoryCache.java Sun May  5 17:59:39 2019
@@ -189,7 +189,6 @@ public class LHMLRUMemoryCache<K, V>
             }
             else
             {
-
                 if ( log.isDebugEnabled() )
                 {
                     log.debug( "LHMLRU max size: " + getCacheAttributes().getMaxObjects()

Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/struct/AbstractLRUMap.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/struct/AbstractLRUMap.java?rev=1858701&r1=1858700&r2=1858701&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/struct/AbstractLRUMap.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/struct/AbstractLRUMap.java Sun May  5 17:59:39 2019
@@ -1,31 +1,9 @@
 package org.apache.commons.jcs.utils.struct;
 
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.Serializable;
 import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
-import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.Lock;
@@ -461,33 +439,22 @@ public abstract class AbstractLRUMap<K,
         }
 
         log.debug( "verifycache: checking via keysets!" );
-        for (Iterator<K> itr2 = map.keySet().iterator(); itr2.hasNext(); )
-        {
-            found = false;
-            Serializable val = null;
-            try
-            {
-                val = (Serializable) itr2.next();
-            }
-            catch ( NoSuchElementException nse )
-            {
-                log.error( "verifycache: no such element exception" );
-                continue;
-            }
+        map.forEach((key, value) -> {
+            boolean _found = false;
 
             for (LRUElementDescriptor<K, V> li2 = list.getFirst(); li2 != null; li2 = (LRUElementDescriptor<K, V>) li2.next )
             {
-                if ( val.equals( li2.getKey() ) )
+                if ( key.equals( li2.getKey() ) )
                 {
-                    found = true;
+                    _found = true;
                     break;
                 }
             }
-            if ( !found )
+            if ( !_found )
             {
-                log.error( "verifycache: key not found in list : " + val );
+                log.error( "verifycache: key not found in list : " + key );
                 dumpCacheEntries();
-                if ( map.containsKey( val ) )
+                if ( map.containsKey( key ) )
                 {
                     log.error( "verifycache: map contains key" );
                 }
@@ -496,7 +463,7 @@ public abstract class AbstractLRUMap<K,
                     log.error( "verifycache: map does NOT contain key, what the HECK!" );
                 }
             }
-        }
+        });
     }
 
     /**