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!" );
}
}
- }
+ });
}
/**