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 2011/07/27 20:08:57 UTC
svn commit: r1151575 [6/6] - in /commons/proper/jcs/trunk: ./
src/experimental/org/apache/jcs/engine/memory/arc/
src/java/org/apache/jcs/access/ src/java/org/apache/jcs/access/behavior/
src/java/org/apache/jcs/admin/ src/java/org/apache/jcs/auxiliary/ ...
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoveryReceiver.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoveryReceiver.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoveryReceiver.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoveryReceiver.java Wed Jul 27 18:08:23 2011
@@ -25,21 +25,20 @@ import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jcs.engine.behavior.IShutdownObserver;
-import EDU.oswego.cs.dl.util.concurrent.BoundedBuffer;
-import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
-import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
-
/** Receives UDP Discovery messages. */
public class UDPDiscoveryReceiver
implements Runnable, IShutdownObserver
{
/** The log factory */
- private final static Log log = LogFactory.getLog( UDPDiscoveryReceiver.class );
+ protected final static Log log = LogFactory.getLog( UDPDiscoveryReceiver.class );
/** buffer */
private final byte[] mBuffer = new byte[65536];
@@ -54,7 +53,7 @@ public class UDPDiscoveryReceiver
private static final int maxPoolSize = 2;
/** The processor */
- private PooledExecutor pooledExecutor = null;
+ private ThreadPoolExecutor pooledExecutor = null;
/** number of messages received. For debugging and testing. */
private int cnt = 0;
@@ -89,10 +88,9 @@ public class UDPDiscoveryReceiver
this.multicastPort = multicastPort;
// create a small thread pool to handle a barrage
- pooledExecutor = new PooledExecutor( new BoundedBuffer( 100 ), maxPoolSize );
- pooledExecutor.discardOldestWhenBlocked();
+ pooledExecutor = (ThreadPoolExecutor)Executors.newFixedThreadPool(maxPoolSize, new MyThreadFactory());
+ pooledExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());
//pooledExecutor.setMinimumPoolSize(1);
- pooledExecutor.setThreadFactory( new MyThreadFactory() );
if ( log.isInfoEnabled() )
{
@@ -127,7 +125,7 @@ public class UDPDiscoveryReceiver
if ( log.isInfoEnabled() )
{
log.info( "Joining Group: [" + InetAddress.getByName( multicastAddressString ) + "]" );
- }
+ }
mSocket.joinGroup( InetAddress.getByName( multicastAddressString ) );
}
catch ( IOException e )
@@ -163,15 +161,15 @@ public class UDPDiscoveryReceiver
{
log.debug( "Received packet from address [" + packet.getSocketAddress() + "]" );
}
-
+
final ByteArrayInputStream byteStream = new ByteArrayInputStream( mBuffer, 0, packet.getLength() );
final ObjectInputStream objectStream = new ObjectInputStream( byteStream );
obj = objectStream.readObject();
-
+
if ( log.isDebugEnabled() )
{
log.debug( "Read object from address [" + packet.getSocketAddress() + "], object=[" + obj + "]" );
- }
+ }
}
catch ( Exception e )
{
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoverySender.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoverySender.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoverySender.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoverySender.java Wed Jul 27 18:08:23 2011
@@ -47,10 +47,10 @@ public class UDPDiscoverySender
private InetAddress multicastAddress;
/** The port */
- private int multicastPort;
+ private final int multicastPort;
/** Used to serialize messages */
- private StandardSerializer serializer = new StandardSerializer();
+ private final StandardSerializer serializer = new StandardSerializer();
/**
* Constructor for the UDPDiscoverySender object
@@ -110,6 +110,7 @@ public class UDPDiscoverySender
* <p>
* @throws Throwable
*/
+ @Override
public void finalize()
throws Throwable
{
@@ -193,7 +194,7 @@ public class UDPDiscoverySender
* @param cacheNames
* @throws IOException
*/
- public void passiveBroadcast( String host, int port, ArrayList cacheNames )
+ public void passiveBroadcast( String host, int port, ArrayList<String> cacheNames )
throws IOException
{
passiveBroadcast( host, port, cacheNames, UDPDiscoveryInfo.listenerId );
@@ -208,7 +209,7 @@ public class UDPDiscoverySender
* @param listenerId
* @throws IOException
*/
- protected void passiveBroadcast( String host, int port, ArrayList cacheNames, long listenerId )
+ protected void passiveBroadcast( String host, int port, ArrayList<String> cacheNames, long listenerId )
throws IOException
{
if ( log.isDebugEnabled() )
@@ -235,7 +236,7 @@ public class UDPDiscoverySender
* @param cacheNames names of the cache regions
* @throws IOException on error
*/
- public void removeBroadcast( String host, int port, ArrayList cacheNames )
+ public void removeBroadcast( String host, int port, ArrayList<String> cacheNames )
throws IOException
{
removeBroadcast( host, port, cacheNames, UDPDiscoveryInfo.listenerId );
@@ -250,7 +251,7 @@ public class UDPDiscoverySender
* @param listenerId listener ID
* @throws IOException on error
*/
- protected void removeBroadcast( String host, int port, ArrayList cacheNames, long listenerId )
+ protected void removeBroadcast( String host, int port, ArrayList<String> cacheNames, long listenerId )
throws IOException
{
if ( log.isDebugEnabled() )
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoverySenderThread.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoverySenderThread.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoverySenderThread.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoverySenderThread.java Wed Jul 27 18:08:23 2011
@@ -36,15 +36,15 @@ public class UDPDiscoverySenderThread
/**
* details of the host, port, and service being advertised to listen for TCP socket connections
*/
- private UDPDiscoveryAttributes attributes;
+ private final UDPDiscoveryAttributes attributes;
/** List of known regions. */
- private ArrayList cacheNames = new ArrayList();
+ private ArrayList<String> cacheNames = new ArrayList<String>();
/**
* @param cacheNames The cacheNames to set.
*/
- protected void setCacheNames( ArrayList cacheNames )
+ protected void setCacheNames( ArrayList<String> cacheNames )
{
if ( log.isInfoEnabled() )
{
@@ -56,7 +56,7 @@ public class UDPDiscoverySenderThread
/**
* @return Returns the cacheNames.
*/
- protected ArrayList getCacheNames()
+ protected ArrayList<String> getCacheNames()
{
return cacheNames;
}
@@ -68,7 +68,7 @@ public class UDPDiscoverySenderThread
* @param attributes host, port, etc.
* @param cacheNames List of strings of the names of the region participating.
*/
- public UDPDiscoverySenderThread( UDPDiscoveryAttributes attributes, ArrayList cacheNames )
+ public UDPDiscoverySenderThread( UDPDiscoveryAttributes attributes, ArrayList<String> cacheNames )
{
this.attributes = attributes;
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoveryService.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoveryService.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoveryService.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/discovery/UDPDiscoveryService.java Wed Jul 27 18:08:23 2011
@@ -22,8 +22,12 @@ package org.apache.jcs.utils.discovery;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.TimeUnit;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,10 +36,6 @@ import org.apache.jcs.engine.logging.beh
import org.apache.jcs.utils.discovery.behavior.IDiscoveryListener;
import org.apache.jcs.utils.net.HostNameUtil;
-import EDU.oswego.cs.dl.util.concurrent.ClockDaemon;
-import EDU.oswego.cs.dl.util.concurrent.CopyOnWriteArraySet;
-import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
-
/**
* This service creates a listener that can create lateral caches and add them to the no wait list.
* <p>
@@ -52,19 +52,19 @@ public class UDPDiscoveryService
private final static Log log = LogFactory.getLog( UDPDiscoveryService.class );
/** The background broadcaster. */
- private static ClockDaemon senderDaemon;
+ private static ScheduledExecutorService senderDaemon;
/** thread that listens for messages */
private Thread udpReceiverThread;
- /** the runanble that the receiver thread runs */
+ /** the runnable that the receiver thread runs */
private UDPDiscoveryReceiver receiver;
- /** the runnanble that sends messages via the clock daemon */
+ /** the runnable that sends messages via the clock daemon */
private UDPDiscoverySenderThread sender = null;
/** removes things that have been idle for too long */
- private UDPCleanupRunner cleanup;
+ private final UDPCleanupRunner cleanup;
/** attributes */
private UDPDiscoveryAttributes udpDiscoveryAttributes = null;
@@ -73,13 +73,13 @@ public class UDPDiscoveryService
private boolean shutdown = false;
/** This is a set of services that have been discovered. */
- private Set discoveredServices = new CopyOnWriteArraySet();
+ private Set<DiscoveredService> discoveredServices = new CopyOnWriteArraySet<DiscoveredService>();
/** This a list of regions that are configured to use discovery. */
- private Set cacheNames = new CopyOnWriteArraySet();
+ private final Set<String> cacheNames = new CopyOnWriteArraySet<String>();
/** Set of listeners. */
- private Set discoveryListeners = new CopyOnWriteArraySet();
+ private final Set<IDiscoveryListener> discoveryListeners = new CopyOnWriteArraySet<IDiscoveryListener>();
/**
* @param attributes
@@ -118,20 +118,19 @@ public class UDPDiscoveryService
if ( senderDaemon == null )
{
- senderDaemon = new ClockDaemon();
- senderDaemon.setThreadFactory( new MyThreadFactory() );
+ senderDaemon = Executors.newScheduledThreadPool(2, new MyThreadFactory());
}
// create a sender thread
sender = new UDPDiscoverySenderThread( getUdpDiscoveryAttributes(), getCacheNames() );
- senderDaemon.executePeriodically( 15 * 1000, sender, true );
+ senderDaemon.scheduleAtFixedRate(sender, 0, 15, TimeUnit.SECONDS);
// add the cleanup daemon too
cleanup = new UDPCleanupRunner( this );
// I'm going to use this as both, but it could happen
// that something could hang around twice the time using this as the
// delay and the idle time.
- senderDaemon.executePeriodically( getUdpDiscoveryAttributes().getMaxIdleTimeSec() * 1000, cleanup, false );
+ senderDaemon.scheduleAtFixedRate(cleanup, 0, getUdpDiscoveryAttributes().getMaxIdleTimeSec(), TimeUnit.SECONDS);
// add shutdown hook that will issue a remove call.
DiscoveryShutdownHook shutdownHook = new DiscoveryShutdownHook( this );
@@ -215,10 +214,9 @@ public class UDPDiscoveryService
}
}
- Iterator it = getDiscoveryListeners().iterator();
- while ( it.hasNext() )
+ for (IDiscoveryListener listener : getDiscoveryListeners())
{
- ( (IDiscoveryListener) it.next() ).removeDiscoveredService( service );
+ listener.removeDiscoveredService( service );
}
}
@@ -259,11 +257,9 @@ public class UDPDiscoveryService
// Update the list of cache names if it has changed.
DiscoveredService theOldServiceInformation = null;
- Iterator it = getDiscoveredServices().iterator();
// need to update the time this sucks. add has no effect convert to a map
- while ( it.hasNext() )
+ for (DiscoveredService service1 : getDiscoveredServices())
{
- DiscoveredService service1 = (DiscoveredService) it.next();
if ( discoveredService.equals( service1 ) )
{
theOldServiceInformation = service1;
@@ -287,13 +283,12 @@ public class UDPDiscoveryService
}
}
// Always Notify the listeners
- // If we don't do this, then if a region using the default config is initialized after notification,
+ // If we don't do this, then if a region using the default config is initialized after notification,
// it will never get the service in it's no wait list.
// Leave it to the listeners to decide what to do.
- Iterator it = getDiscoveryListeners().iterator();
- while ( it.hasNext() )
+ for (IDiscoveryListener listener : getDiscoveryListeners())
{
- ( (IDiscoveryListener) it.next() ).addDiscoveredService( discoveredService );
+ listener.addDiscoveredService( discoveredService );
}
}
@@ -303,9 +298,9 @@ public class UDPDiscoveryService
* <p>
* @return ArrayList
*/
- protected ArrayList getCacheNames()
+ protected ArrayList<String> getCacheNames()
{
- ArrayList names = new ArrayList();
+ ArrayList<String> names = new ArrayList<String>();
names.addAll( cacheNames );
return names;
}
@@ -384,7 +379,7 @@ public class UDPDiscoveryService
try
{
// interrupt all the threads.
- senderDaemon.shutDown();
+ senderDaemon.shutdownNow();
}
catch ( Exception e )
{
@@ -416,6 +411,7 @@ public class UDPDiscoveryService
* <p>
* @throws Throwable on error
*/
+ @Override
public void finalize()
throws Throwable
{
@@ -428,7 +424,7 @@ public class UDPDiscoveryService
/**
* @param discoveredServices The discoveredServices to set.
*/
- public synchronized void setDiscoveredServices( Set discoveredServices )
+ public synchronized void setDiscoveredServices( Set<DiscoveredService> discoveredServices )
{
this.discoveredServices = discoveredServices;
}
@@ -436,7 +432,7 @@ public class UDPDiscoveryService
/**
* @return Returns the discoveredServices.
*/
- public synchronized Set getDiscoveredServices()
+ public synchronized Set<DiscoveredService> getDiscoveredServices()
{
return discoveredServices;
}
@@ -444,7 +440,7 @@ public class UDPDiscoveryService
/**
* @return the discoveryListeners
*/
- private Set getDiscoveryListeners()
+ private Set<IDiscoveryListener> getDiscoveryListeners()
{
return discoveryListeners;
}
@@ -452,9 +448,9 @@ public class UDPDiscoveryService
/**
* @return the discoveryListeners
*/
- public Set getCopyOfDiscoveryListeners()
+ public Set<IDiscoveryListener> getCopyOfDiscoveryListeners()
{
- Set copy = new HashSet();
+ Set<IDiscoveryListener> copy = new HashSet<IDiscoveryListener>();
copy.addAll( getDiscoveryListeners() );
return copy;
}
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/net/HostNameUtil.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/net/HostNameUtil.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/net/HostNameUtil.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/net/HostNameUtil.java Wed Jul 27 18:08:23 2011
@@ -41,13 +41,13 @@ public class HostNameUtil
* Gets the address for the local machine.
* <p>
* @return InetAddress.getLocalHost().getHostAddress()
- * @throws UnknownHostException
+ * @throws UnknownHostException
*/
public static String getLocalHostAddress() throws UnknownHostException
{
try
{
- String hostAddress = getLocalHostLANAddress().getHostAddress(); ;
+ String hostAddress = getLocalHostLANAddress().getHostAddress();
if ( log.isDebugEnabled() )
{
log.debug( "hostAddress = [" + hostAddress + "]" );
@@ -94,13 +94,13 @@ public class HostNameUtil
{
InetAddress candidateAddress = null;
// Iterate all NICs (network interface cards)...
- for ( Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); )
+ for ( Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); )
{
- NetworkInterface iface = (NetworkInterface) ifaces.nextElement();
+ NetworkInterface iface = ifaces.nextElement();
// Iterate all IP addresses assigned to each card...
- for ( Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); )
+ for ( Enumeration<InetAddress> inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); )
{
- InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
+ InetAddress inetAddr = inetAddrs.nextElement();
if ( !inetAddr.isLoopbackAddress() )
{
if ( inetAddr.isSiteLocalAddress() )
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/BoundedQueue.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/BoundedQueue.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/BoundedQueue.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/BoundedQueue.java Wed Jul 27 18:08:23 2011
@@ -24,13 +24,14 @@ package org.apache.jcs.utils.struct;
* <p>
* @author Aaron Smuts
*/
-public class BoundedQueue
+public class BoundedQueue<T>
{
/** Queue size limit. */
- private int maxSize;
+ private final int maxSize;
/** The list backing the queue */
- private DoubleLinkedList list = new DoubleLinkedList();
+ private final DoubleLinkedList<DoubleLinkedListNode<T>> list =
+ new DoubleLinkedList<DoubleLinkedListNode<T>>();
/**
* Initialize the bounded queue.
@@ -47,13 +48,13 @@ public class BoundedQueue
* <p>
* @param object
*/
- public void add( Object object )
+ public void add( T object )
{
if ( list.size() >= maxSize )
{
list.removeLast();
}
- list.addFirst( new DoubleLinkedListNode( object ) );
+ list.addFirst( new DoubleLinkedListNode<T>( object ) );
}
/**
@@ -61,9 +62,9 @@ public class BoundedQueue
* <p>
* @return null if it is epmpty.
*/
- public Object take()
+ public T take()
{
- DoubleLinkedListNode node = list.removeLast();
+ DoubleLinkedListNode<T> node = list.removeLast();
if ( node != null )
{
return node.getPayload();
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/DoubleLinkedList.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/DoubleLinkedList.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/DoubleLinkedList.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/DoubleLinkedList.java Wed Jul 27 18:08:23 2011
@@ -24,9 +24,9 @@ import org.apache.commons.logging.LogFac
/**
* This is a generic thread safe double linked list. It's very simple and all the operations are so
- * quick that course grained synchronization is more than acceptible.
+ * quick that course grained synchronization is more than acceptable.
*/
-public class DoubleLinkedList
+public class DoubleLinkedList<T extends DoubleLinkedListNode>
{
/** record size to avoid having to iterate */
private int size = 0;
@@ -35,10 +35,10 @@ public class DoubleLinkedList
private final static Log log = LogFactory.getLog( DoubleLinkedList.class );
/** LRU double linked list head node */
- private DoubleLinkedListNode first;
+ private T first;
/** LRU double linked list tail node */
- private DoubleLinkedListNode last;
+ private T last;
/**
* Default constructor.
@@ -53,7 +53,7 @@ public class DoubleLinkedList
* <p>
* @param me The feature to be added to the Last
*/
- public synchronized void addLast( DoubleLinkedListNode me )
+ public synchronized void addLast(T me)
{
if ( first == null )
{
@@ -74,7 +74,7 @@ public class DoubleLinkedList
* <p>
* @param me The feature to be added to the First
*/
- public synchronized void addFirst( DoubleLinkedListNode me )
+ public synchronized void addFirst(T me)
{
if ( last == null )
{
@@ -96,7 +96,7 @@ public class DoubleLinkedList
* <p>
* @return The last node.
*/
- public synchronized DoubleLinkedListNode getLast()
+ public synchronized T getLast()
{
if ( log.isDebugEnabled() )
{
@@ -110,7 +110,7 @@ public class DoubleLinkedList
* <p>
* @return DoubleLinkedListNode, the first node.
*/
- public synchronized DoubleLinkedListNode getFirst()
+ public synchronized T getFirst()
{
if ( log.isDebugEnabled() )
{
@@ -124,20 +124,20 @@ public class DoubleLinkedList
* <p>
* @param ln The node to set as the head.
*/
- public synchronized void makeFirst( DoubleLinkedListNode ln )
+ public synchronized void makeFirst(T ln)
{
if ( ln.prev == null )
{
// already the first node. or not a node
return;
}
- // splice: remove it from the list
+ // splice: remove it from the list
ln.prev.next = ln.next;
if ( ln.next == null )
{
// last but not the first.
- last = ln.prev;
+ last = (T) ln.prev;
last.next = null;
}
else
@@ -156,7 +156,7 @@ public class DoubleLinkedList
* <p>
* @param ln The node to set as the head.
*/
- public synchronized void makeLast( DoubleLinkedListNode ln )
+ public synchronized void makeLast(T ln)
{
if ( ln.next == null )
{
@@ -188,13 +188,13 @@ public class DoubleLinkedList
*/
public synchronized void removeAll()
{
- for ( DoubleLinkedListNode me = first; me != null; )
+ for (T me = first; me != null; )
{
if ( me.prev != null )
{
me.prev = null;
}
- DoubleLinkedListNode next = me.next;
+ T next = (T) me.next;
me = next;
}
first = last = null;
@@ -208,7 +208,7 @@ public class DoubleLinkedList
* @param me Description of the Parameter
* @return true if an element was removed.
*/
- public synchronized boolean remove( DoubleLinkedListNode me )
+ public synchronized boolean remove(T me)
{
if ( log.isDebugEnabled() )
{
@@ -232,7 +232,7 @@ public class DoubleLinkedList
else
{
// last but not the first.
- last = me.prev;
+ last = (T) me.prev;
last.next = null;
me.prev = null;
}
@@ -240,7 +240,7 @@ public class DoubleLinkedList
else if ( me.prev == null )
{
// first but not the last.
- first = me.next;
+ first = (T) me.next;
first.prev = null;
me.next = null;
}
@@ -261,13 +261,13 @@ public class DoubleLinkedList
* <p>
* @return The last node if there was one to remove.
*/
- public synchronized DoubleLinkedListNode removeLast()
+ public synchronized T removeLast()
{
if ( log.isDebugEnabled() )
{
log.debug( "removing last node" );
}
- DoubleLinkedListNode temp = last;
+ T temp = last;
if ( last != null )
{
remove( last );
@@ -294,7 +294,7 @@ public class DoubleLinkedList
if ( log.isDebugEnabled() )
{
log.debug( "dumping Entries" );
- for ( DoubleLinkedListNode me = first; me != null; me = me.next )
+ for (T me = first; me != null; me = (T) me.next)
{
log.debug( "dump Entries> payload= '" + me.getPayload() + "'" );
}
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/DoubleLinkedListNode.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/DoubleLinkedListNode.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/DoubleLinkedListNode.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/DoubleLinkedListNode.java Wed Jul 27 18:08:23 2011
@@ -29,25 +29,25 @@ import java.io.Serializable;
* It simply holds the payload and a reference to the items before and after it
* in the list.
*/
-public class DoubleLinkedListNode
+public class DoubleLinkedListNode<T>
implements Serializable
{
/** Dont' change. */
private static final long serialVersionUID = -1114934407695836097L;
/** The object in the node. */
- private Object payload;
+ private final T payload;
/** Double Linked list references */
- public DoubleLinkedListNode prev;
+ public DoubleLinkedListNode<T> prev;
/** Double Linked list references */
- public DoubleLinkedListNode next;
+ public DoubleLinkedListNode<T> next;
/**
* @param payloadP
*/
- public DoubleLinkedListNode( Object payloadP )
+ public DoubleLinkedListNode(T payloadP)
{
payload = payloadP;
}
@@ -55,7 +55,7 @@ public class DoubleLinkedListNode
/**
* @return Object
*/
- public Object getPayload()
+ public T getPayload()
{
return payload;
}
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUElementDescriptor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUElementDescriptor.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUElementDescriptor.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUElementDescriptor.java Wed Jul 27 18:08:23 2011
@@ -23,29 +23,29 @@ package org.apache.jcs.utils.struct;
* This is a node in the double linked list. It is stored as the value in the underlying map used by
* the LRUMap class.
*/
-public class LRUElementDescriptor
- extends DoubleLinkedListNode
+public class LRUElementDescriptor<K, V>
+ extends DoubleLinkedListNode<V>
{
/** Don't change. */
private static final long serialVersionUID = 8249555756363020156L;
/** The key value */
- private Object key;
+ private K key;
/**
* @param key
* @param payloadP
*/
- public LRUElementDescriptor( Object key, Object payloadP )
+ public LRUElementDescriptor(K key, V payloadP)
{
- super( payloadP );
- this.setKey( key );
+ super(payloadP);
+ this.setKey(key);
}
/**
* @param key The key to set.
*/
- public void setKey( Object key )
+ public void setKey(K key)
{
this.key = key;
}
@@ -53,7 +53,7 @@ public class LRUElementDescriptor
/**
* @return Returns the key.
*/
- public Object getKey()
+ public K getKey()
{
return key;
}
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUMap.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUMap.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUMap.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUMap.java Wed Jul 27 18:08:23 2011
@@ -25,6 +25,7 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
@@ -51,17 +52,17 @@ import org.apache.jcs.engine.stats.behav
* <p>
* @author aaron smuts
*/
-public class LRUMap
- implements Map
+public class LRUMap<K, V>
+ implements Map<K, V>
{
/** The logger */
private final static Log log = LogFactory.getLog( LRUMap.class );
/** double linked list for lru */
- private DoubleLinkedList list;
+ private final DoubleLinkedList<LRUElementDescriptor<K, V>> list;
/** Map where items are stored by key. */
- protected Map map;
+ protected Map<K, LRUElementDescriptor<K, V>> map;
/** stats */
int hitCnt = 0;
@@ -84,11 +85,11 @@ public class LRUMap
*/
public LRUMap()
{
- list = new DoubleLinkedList();
+ list = new DoubleLinkedList<LRUElementDescriptor<K, V>>();
// normal hshtable is faster for
// sequential keys.
- map = new Hashtable();
+ map = new Hashtable<K, LRUElementDescriptor<K, V>>();
// map = new ConcurrentHashMap();
}
@@ -157,23 +158,27 @@ public class LRUMap
/**
* @return map.values();
*/
- public Collection values()
+ public Collection<V> values()
{
- return map.values();
+ List<V> valueList = new ArrayList<V>(map.size());
+
+ for (LRUElementDescriptor<K, V> value : map.values())
+ {
+ valueList.add(value.getPayload());
+ }
+
+ return valueList;
}
/**
* @param source
*/
- public void putAll( Map source )
+ public void putAll( Map<? extends K, ? extends V> source )
{
if ( source != null )
{
- Set entries = source.entrySet();
- Iterator it = entries.iterator();
- while ( it.hasNext() )
+ for (Map.Entry<? extends K, ? extends V> entry : source.entrySet())
{
- Entry entry = (Entry) it.next();
this.put( entry.getKey(), entry.getValue() );
}
}
@@ -183,16 +188,16 @@ public class LRUMap
* @param key
* @return Object
*/
- public Object get( Object key )
+ public V get( Object key )
{
- Object retVal = null;
+ V retVal = null;
if ( log.isDebugEnabled() )
{
log.debug( "getting item for key " + key );
}
- LRUElementDescriptor me = (LRUElementDescriptor) map.get( key );
+ LRUElementDescriptor<K, V> me = map.get( key );
if ( me != null )
{
@@ -224,11 +229,11 @@ public class LRUMap
* @param key
* @return Object
*/
- public Object getQuiet( Object key )
+ public V getQuiet( Object key )
{
- Object ce = null;
+ V ce = null;
- LRUElementDescriptor me = (LRUElementDescriptor) map.get( key );
+ LRUElementDescriptor<K, V> me = map.get( key );
if ( me != null )
{
if ( log.isDebugEnabled() )
@@ -250,7 +255,7 @@ public class LRUMap
* @param key
* @return Object removed
*/
- public Object remove( Object key )
+ public V remove( Object key )
{
if ( log.isDebugEnabled() )
{
@@ -258,12 +263,11 @@ public class LRUMap
}
// remove single item.
- LRUElementDescriptor me = (LRUElementDescriptor) map.remove( key );
+ LRUElementDescriptor<K, V> me = map.remove( key );
if ( me != null )
{
list.remove( me );
-
return me.getPayload();
}
@@ -275,20 +279,20 @@ public class LRUMap
* @param value
* @return Object
*/
- public Object put( Object key, Object value )
+ public V put(K key, V value)
{
putCnt++;
- LRUElementDescriptor old = null;
+ LRUElementDescriptor<K, V> old = null;
synchronized ( this )
{
// TODO address double synchronization of addFirst, use write lock
addFirst( key, value );
// this must be synchronized
- old = (LRUElementDescriptor) map.put( ( (LRUElementDescriptor) list.getFirst() ).getKey(), list.getFirst() );
+ old = map.put(list.getFirst().getKey(), list.getFirst());
// If the node was the same as an existing node, remove it.
- if ( old != null && ( (LRUElementDescriptor) list.getFirst() ).getKey().equals( old.getKey() ) )
+ if ( old != null && list.getFirst().getKey().equals(old.getKey()))
{
list.remove( old );
}
@@ -323,20 +327,19 @@ public class LRUMap
{
if ( list.getLast() != null )
{
- if ( ( (LRUElementDescriptor) list.getLast() ) != null )
+ if (list.getLast() != null )
{
- processRemovedLRU( ( (LRUElementDescriptor) list.getLast() ).getKey(),
- ( (LRUElementDescriptor) list.getLast() ).getPayload() );
- if ( !map.containsKey( ( (LRUElementDescriptor) list.getLast() ).getKey() ) )
+ processRemovedLRU(list.getLast().getKey(), list.getLast().getPayload());
+ if ( !map.containsKey(list.getLast().getKey()))
{
log.error( "update: map does not contain key: "
- + ( (LRUElementDescriptor) list.getLast() ).getKey() );
+ + list.getLast().getKey() );
verifyCache();
}
- if ( map.remove( ( (LRUElementDescriptor) list.getLast() ).getKey() ) == null )
+ if ( map.remove( list.getLast().getKey() ) == null )
{
log.warn( "update: remove failed for key: "
- + ( (LRUElementDescriptor) list.getLast() ).getKey() );
+ + list.getLast().getKey() );
verifyCache();
}
}
@@ -378,10 +381,9 @@ public class LRUMap
* @param key
* @param val The feature to be added to the First
*/
- private synchronized void addFirst( Object key, Object val )
+ private synchronized void addFirst(K key, V val)
{
-
- LRUElementDescriptor me = new LRUElementDescriptor( key, val );
+ LRUElementDescriptor<K, V> me = new LRUElementDescriptor<K, V>(key, val);
list.addFirst( me );
return;
}
@@ -402,7 +404,7 @@ public class LRUMap
public void dumpCacheEntries()
{
log.debug( "dumpingCacheEntries" );
- for ( LRUElementDescriptor me = (LRUElementDescriptor) list.getFirst(); me != null; me = (LRUElementDescriptor) me.next )
+ for ( LRUElementDescriptor<K, V> me = list.getFirst(); me != null; me = (LRUElementDescriptor<K, V>) me.next )
{
if ( log.isDebugEnabled() )
{
@@ -417,10 +419,9 @@ public class LRUMap
public void dumpMap()
{
log.debug( "dumpingMap" );
- for ( Iterator itr = map.entrySet().iterator(); itr.hasNext(); )
+ for (Map.Entry<K, LRUElementDescriptor<K, V>> e : map.entrySet())
{
- Map.Entry e = (Map.Entry) itr.next();
- LRUElementDescriptor me = (LRUElementDescriptor) e.getValue();
+ LRUElementDescriptor<K, V> me = e.getValue();
if ( log.isDebugEnabled() )
{
log.debug( "dumpMap> key=" + e.getKey() + ", val=" + me.getPayload() );
@@ -443,9 +444,9 @@ public class LRUMap
log.debug( "verifycache: mapContains " + map.size() + " elements, linked list contains " + dumpCacheSize()
+ " elements" );
log.debug( "verifycache: checking linked list by key " );
- for ( LRUElementDescriptor li = (LRUElementDescriptor) list.getFirst(); li != null; li = (LRUElementDescriptor) li.next )
+ for (LRUElementDescriptor<K, V> li = list.getFirst(); li != null; li = (LRUElementDescriptor<K, V>) li.next )
{
- Object key = li.getKey();
+ K key = li.getKey();
if ( !map.containsKey( key ) )
{
log.error( "verifycache: map does not contain key : " + li.getKey() );
@@ -470,7 +471,7 @@ public class LRUMap
}
log.debug( "verifycache: checking linked list by value " );
- for ( LRUElementDescriptor li3 = (LRUElementDescriptor) list.getFirst(); li3 != null; li3 = (LRUElementDescriptor) li3.next )
+ for (LRUElementDescriptor<K, V> li3 = list.getFirst(); li3 != null; li3 = (LRUElementDescriptor<K, V>) li3.next )
{
if ( map.containsValue( li3 ) == false )
{
@@ -480,7 +481,7 @@ public class LRUMap
}
log.debug( "verifycache: checking via keysets!" );
- for ( Iterator itr2 = map.keySet().iterator(); itr2.hasNext(); )
+ for (Iterator<K> itr2 = map.keySet().iterator(); itr2.hasNext(); )
{
found = false;
Serializable val = null;
@@ -491,9 +492,10 @@ public class LRUMap
catch ( NoSuchElementException nse )
{
log.error( "verifycache: no such element exception" );
+ continue;
}
- for ( LRUElementDescriptor li2 = (LRUElementDescriptor) list.getFirst(); li2 != null; li2 = (LRUElementDescriptor) li2.next )
+ for (LRUElementDescriptor<K, V> li2 = list.getFirst(); li2 != null; li2 = (LRUElementDescriptor<K, V>) li2.next )
{
if ( val.equals( li2.getKey() ) )
{
@@ -532,7 +534,7 @@ public class LRUMap
boolean found = false;
// go through the linked list looking for the key
- for ( LRUElementDescriptor li = (LRUElementDescriptor) list.getFirst(); li != null; li = (LRUElementDescriptor) li.next )
+ for (LRUElementDescriptor<K, V> li = list.getFirst(); li != null; li = (LRUElementDescriptor<K, V>) li.next )
{
if ( li.getKey() == key )
{
@@ -554,7 +556,7 @@ public class LRUMap
* @param key
* @param value
*/
- protected void processRemovedLRU( Object key, Object value )
+ protected void processRemovedLRU(K key, V value )
{
if ( log.isDebugEnabled() )
{
@@ -589,7 +591,7 @@ public class LRUMap
IStats stats = new Stats();
stats.setTypeName( "LRUMap" );
- ArrayList elems = new ArrayList();
+ ArrayList<IStatElement> elems = new ArrayList<IStatElement>();
IStatElement se = null;
@@ -619,7 +621,7 @@ public class LRUMap
elems.add( se );
// get an array and put them in the Stats object
- IStatElement[] ses = (IStatElement[]) elems.toArray( new StatElement[0] );
+ IStatElement[] ses = elems.toArray( new StatElement[0] );
stats.setStatElements( ses );
return stats;
@@ -635,19 +637,17 @@ public class LRUMap
* <p>
* @see java.util.Map#entrySet()
*/
- public synchronized Set entrySet()
+ public synchronized Set<Map.Entry<K, V>> entrySet()
{
// todo, we should return a defensive copy
- Set entries = map.entrySet();
+ Set<Map.Entry<K, LRUElementDescriptor<K, V>>> entries = map.entrySet();
- Set unWrapped = new HashSet();
+ Set<Map.Entry<K, V>> unWrapped = new HashSet<Map.Entry<K, V>>();
- Iterator it = entries.iterator();
- while ( it.hasNext() )
+ for (Map.Entry<K, LRUElementDescriptor<K, V>> pre : entries )
{
- Entry pre = (Entry) it.next();
- Entry post = new LRUMapEntry( pre.getKey(), ( (LRUElementDescriptor) pre.getValue() ).getPayload() );
- unWrapped.add( post );
+ Map.Entry<K, V> post = new LRUMapEntry<K, V>(pre.getKey(), pre.getValue().getPayload());
+ unWrapped.add(post);
}
return unWrapped;
@@ -656,7 +656,7 @@ public class LRUMap
/**
* @return map.keySet();
*/
- public Set keySet()
+ public Set<K> keySet()
{
// TODO fix this, it needs to return the keys inside the wrappers.
return map.keySet();
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUMapEntry.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUMapEntry.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUMapEntry.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/LRUMapEntry.java Wed Jul 27 18:08:23 2011
@@ -27,24 +27,24 @@ import java.util.Map.Entry;
* <p>
* @author Aaron Smuts
*/
-public class LRUMapEntry
- implements Entry, Serializable
+public class LRUMapEntry<K, V>
+ implements Entry<K, V>, Serializable
{
/** Don't change */
private static final long serialVersionUID = -8176116317739129331L;
/** key */
- private Object key;
+ private final K key;
/** value */
- private Object value;
+ private V value;
/**
* S
* @param key
* @param value
*/
- public LRUMapEntry( Object key, Object value )
+ public LRUMapEntry(K key, V value)
{
this.key = key;
this.value = value;
@@ -53,7 +53,7 @@ public class LRUMapEntry
/**
* @return key
*/
- public Object getKey()
+ public K getKey()
{
return this.key;
}
@@ -61,7 +61,7 @@ public class LRUMapEntry
/**
* @return value
*/
- public Object getValue()
+ public V getValue()
{
return this.value;
}
@@ -70,9 +70,9 @@ public class LRUMapEntry
* @param valueArg
* @return the old value
*/
- public Object setValue( Object valueArg )
+ public V setValue(V valueArg)
{
- Object old = this.value;
+ V old = this.value;
this.value = valueArg;
return old;
}
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/SingleLinkedList.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/SingleLinkedList.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/SingleLinkedList.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/SingleLinkedList.java Wed Jul 27 18:08:23 2011
@@ -34,7 +34,7 @@ public class SingleLinkedList
private static final Log log = LogFactory.getLog( SingleLinkedList.class );
/** for sync */
- private Object lock = new Object();
+ private final Object lock = new Object();
/** the head of the queue */
private Node head = new Node();
@@ -116,9 +116,9 @@ public class SingleLinkedList
* <p>
* @author Aaron Smuts
*/
- private static class Node
+ protected static class Node
{
- /** next int he list */
+ /** next in the list */
Node next = null;
/** The data in this node */
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/SortedPreferentialArray.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/SortedPreferentialArray.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/SortedPreferentialArray.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/struct/SortedPreferentialArray.java Wed Jul 27 18:08:23 2011
@@ -30,7 +30,7 @@ import org.apache.commons.logging.LogFac
* Clients must manage thread safety on previous version. I synchronized the public methods to add
* easy thread safety. I synchronized all public methods that make modifications.
*/
-public class SortedPreferentialArray
+public class SortedPreferentialArray<T extends Comparable<? super T>>
{
/** The logger */
private static final Log log = LogFactory.getLog( SortedPreferentialArray.class );
@@ -45,20 +45,20 @@ public class SortedPreferentialArray
private int curSize = 0;
/** The primary array */
- private Comparable[] array;
+ private final T[] array;
/** the number that have been inserted. */
private int insertCnt = 0;
/**
- * Consruct the array with the maximum size.
+ * Construct the array with the maximum size.
* <p>
* @param maxSize int
*/
public SortedPreferentialArray( int maxSize )
{
this.maxSize = maxSize;
- array = new Comparable[maxSize];
+ array = (T[]) new Comparable<?>[maxSize];
}
/**
@@ -67,7 +67,7 @@ public class SortedPreferentialArray
* <p>
* @param obj Object
*/
- public synchronized void add( Comparable obj )
+ public synchronized void add(T obj)
{
if ( obj == null )
{
@@ -82,7 +82,7 @@ public class SortedPreferentialArray
if ( preferLarge )
{
// insert if obj is larger than the smallest
- Comparable sma = getSmallest();
+ T sma = getSmallest();
if ( obj.compareTo( sma ) > 0 )
{
insert( obj );
@@ -96,7 +96,7 @@ public class SortedPreferentialArray
return;
}
// Not preferLarge
- Comparable lar = getLargest();
+ T lar = getLargest();
// insert if obj is smaller than the largest
int diff = obj.compareTo( lar );
if ( diff > 0 || diff == 0 )
@@ -117,7 +117,7 @@ public class SortedPreferentialArray
* <p>
* @return Comparable
*/
- public synchronized Comparable getLargest()
+ public synchronized T getLargest()
{
return array[curSize - 1];
}
@@ -127,7 +127,7 @@ public class SortedPreferentialArray
* <p>
* @return Comparable
*/
- public synchronized Comparable getSmallest()
+ public synchronized T getSmallest()
{
return array[0];
}
@@ -138,7 +138,7 @@ public class SortedPreferentialArray
* <p>
* @param obj Comparable
*/
- private void insert( Comparable obj )
+ private void insert(T obj)
{
try
{
@@ -269,14 +269,14 @@ public class SortedPreferentialArray
* @param obj Comparable
* @return Comparable, null if arg is null or none was found.
*/
- public synchronized Comparable takeNearestLargerOrEqual( Comparable obj )
+ public synchronized T takeNearestLargerOrEqual( T obj )
{
if ( obj == null )
{
return null;
}
- Comparable retVal = null;
+ T retVal = null;
try
{
int pos = findNearestOccupiedLargerOrEqualPosition( obj );
@@ -324,7 +324,7 @@ public class SortedPreferentialArray
* @param obj Object
* @return Object
*/
- private int findNearestOccupiedLargerOrEqualPosition( Comparable obj )
+ private int findNearestOccupiedLargerOrEqualPosition(T obj)
{
if ( curSize == 0 )
{
@@ -339,7 +339,7 @@ public class SortedPreferentialArray
if ( pos == curSize )
{ // && curSize < maxSize ) {
// pos will be > 0 if it equals curSize, we check for this above.
- if ( obj.compareTo( array[pos - 1] ) <= 0 )
+ if ( obj.compareTo(array[pos - 1] ) <= 0 )
{
pos = pos - 1;
}
@@ -351,7 +351,7 @@ public class SortedPreferentialArray
else
{
// the find nearest, returns the last, since it is used by insertion.
- if ( obj.compareTo( array[pos] ) > 0 )
+ if ( obj.compareTo(array[pos] ) > 0 )
{
return -1;
}
@@ -383,7 +383,7 @@ public class SortedPreferentialArray
* @param obj Comparable
* @return int
*/
- private int findNearestLargerEqualOrLastPosition( Comparable obj )
+ private int findNearestLargerEqualOrLastPosition(T obj)
{
// do nothing if a null was passed in
if ( obj == null )
@@ -478,7 +478,7 @@ public class SortedPreferentialArray
// EQUAL TO
// object at current position is equal to the obj, use this,
// TODO could avoid some shuffling if I found a lower pos.
- if ( array[curPos].compareTo( obj ) == 0 )
+ if ((array[curPos]).compareTo( obj ) == 0 )
{
if ( log.isDebugEnabled() )
{
@@ -493,7 +493,7 @@ public class SortedPreferentialArray
// GREATER THAN
// array object at current position is greater than the obj, go
// left
- if ( array[curPos].compareTo( obj ) > 0 )
+ if ((array[curPos]).compareTo( obj ) > 0 )
{
if ( log.isDebugEnabled() )
{
@@ -513,7 +513,7 @@ public class SortedPreferentialArray
// LESS THAN
// the object at the current position is smaller, go right
- if ( array[curPos].compareTo( obj ) < 0 )
+ if ((array[curPos]).compareTo( obj ) < 0 )
{
if ( log.isDebugEnabled() )
{
Modified: commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/threadpool/ThreadPoolManager.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/threadpool/ThreadPoolManager.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/threadpool/ThreadPoolManager.java (original)
+++ commons/proper/jcs/trunk/src/java/org/apache/jcs/utils/threadpool/ThreadPoolManager.java Wed Jul 27 18:08:23 2011
@@ -21,21 +21,18 @@ package org.apache.jcs.utils.threadpool;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Properties;
-import java.util.Set;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.jcs.utils.props.PropertyLoader;
import org.apache.jcs.utils.threadpool.behavior.IPoolConfiguration;
-import EDU.oswego.cs.dl.util.concurrent.BoundedBuffer;
-import EDU.oswego.cs.dl.util.concurrent.Channel;
-import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
-import EDU.oswego.cs.dl.util.concurrent.PooledExecutor;
-import EDU.oswego.cs.dl.util.concurrent.ThreadFactory;
-
/**
* This manages threadpools for an application using Doug Lea's Util Concurrent package.
* http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html
@@ -51,23 +48,23 @@ import EDU.oswego.cs.dl.util.concurrent.
* If set, the Properties object will take precedence.
* <p>
* If a value is not set for a particular pool, the hard coded defaults will be used.
- *
+ *
* <pre>
* int boundarySize_DEFAULT = 2000;
- *
+ *
* int maximumPoolSize_DEFAULT = 150;
- *
+ *
* int minimumPoolSize_DEFAULT = 4;
- *
+ *
* int keepAliveTime_DEFAULT = 1000 * 60 * 5;
- *
+ *
* boolean abortWhenBlocked = false;
- *
+ *
* String whenBlockedPolicy_DEFAULT = IPoolConfiguration.POLICY_RUN;
- *
+ *
* int startUpSize_DEFAULT = 4;
* </pre>
- *
+ *
* You can configure default settings by specifying a default pool in the properties, ie "cache.ccf"
* <p>
* @author Aaron Smuts
@@ -105,7 +102,7 @@ public class ThreadPoolManager
/** This is the default value. */
public static final String DEFAULT_PROPS_FILE_NAME = "cache.ccf";
-
+
/** Setting this after inialization will have no effect. */
private static String propsFileName = null;
@@ -122,7 +119,7 @@ public class ThreadPoolManager
private static Properties props = null;
/** Map of names to pools. */
- private static HashMap pools = new HashMap();
+ private static HashMap<String, ThreadPoolExecutor> pools = new HashMap<String, ThreadPoolExecutor>();
/** singleton instance */
private static ThreadPoolManager INSTANCE = null;
@@ -141,19 +138,18 @@ public class ThreadPoolManager
* @param config
* @return A ThreadPoll wrapper
*/
- private ThreadPool createPool( PoolConfiguration config )
+ private ThreadPoolExecutor createPool( PoolConfiguration config )
{
- PooledExecutor pool = null;
- Channel queue = null;
+ ThreadPoolExecutor pool = null;
+ BlockingQueue<Runnable> queue = null;
if ( config.isUseBoundary() )
{
if ( log.isDebugEnabled() )
{
log.debug( "Creating a Bounded Buffer to use for the pool" );
}
- queue = new BoundedBuffer( config.getBoundarySize() );
- pool = new PooledExecutor( queue, config.getMaximumPoolSize() );
- pool.setThreadFactory( new MyThreadFactory() );
+
+ queue = new LinkedBlockingQueue<Runnable>(config.getBoundarySize());
}
else
{
@@ -161,38 +157,34 @@ public class ThreadPoolManager
{
log.debug( "Creating a non bounded Linked Queue to use for the pool" );
}
- queue = new LinkedQueue();
- pool = new PooledExecutor( queue, config.getMaximumPoolSize() );
+ queue = new LinkedBlockingQueue<Runnable>();
}
- pool.setMinimumPoolSize( config.getMinimumPoolSize() );
- pool.setKeepAliveTime( config.getKeepAliveTime() );
+ pool = new ThreadPoolExecutor(config.getStartUpSize(), config.getMaximumPoolSize(),
+ config.getKeepAliveTime(), TimeUnit.MILLISECONDS,
+ queue, new MyThreadFactory());
// when blocked policy
if ( config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_ABORT ) )
{
- pool.abortWhenBlocked();
+ pool.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
}
else if ( config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_RUN ) )
{
- pool.runWhenBlocked();
+ pool.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
}
else if ( config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_WAIT ) )
{
- pool.waitWhenBlocked();
- }
- else if ( config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_ABORT ) )
- {
- pool.abortWhenBlocked();
+ throw new RuntimeException("POLICY_WAIT no longer supported");
}
else if ( config.getWhenBlockedPolicy().equals( IPoolConfiguration.POLICY_DISCARDOLDEST ) )
{
- pool.discardOldestWhenBlocked();
+ pool.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());
}
- pool.createThreads( config.getStartUpSize() );
+ pool.prestartAllCoreThreads();
- return new ThreadPool( pool, queue );
+ return pool;
}
/**
@@ -219,13 +211,13 @@ public class ThreadPoolManager
* @param name
* @return The thread pool configured for the name.
*/
- public ThreadPool getPool( String name )
+ public ThreadPoolExecutor getPool( String name )
{
- ThreadPool pool = null;
+ ThreadPoolExecutor pool = null;
synchronized ( pools )
{
- pool = (ThreadPool) pools.get( name );
+ pool = pools.get( name );
if ( pool == null )
{
if ( log.isDebugEnabled() )
@@ -255,17 +247,12 @@ public class ThreadPoolManager
* <p>
* @return ArrayList of string names
*/
- public ArrayList getPoolNames()
+ public ArrayList<String> getPoolNames()
{
- ArrayList poolNames = new ArrayList();
+ ArrayList<String> poolNames = new ArrayList<String>();
synchronized ( pools )
{
- Set names = pools.keySet();
- Iterator it = names.iterator();
- while ( it.hasNext() )
- {
- poolNames.add( it.next() );
- }
+ poolNames.addAll(pools.keySet());
}
return poolNames;
}
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/access/TestCacheAccess.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/access/TestCacheAccess.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/access/TestCacheAccess.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/access/TestCacheAccess.java Wed Jul 27 18:08:23 2011
@@ -823,7 +823,7 @@ public class TestCacheAccess
{
try
{
- for ( int i = 0; i < numOps; i++ )
+ for ( int i = 1; i < numOps; i++ )
{
Random ran = new Random( i );
int n = ran.nextInt( 4 );
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/MockAuxiliaryCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/MockAuxiliaryCache.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/MockAuxiliaryCache.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/MockAuxiliaryCache.java Wed Jul 27 18:08:23 2011
@@ -78,7 +78,7 @@ public class MockAuxiliaryCache
* @return Map
* @throws IOException
*/
- public Map getMatching( String pattern )
+ public Map<Serializable, ICacheElement> getMatching(String pattern)
throws IOException
{
getMatchingCallCount++;
@@ -92,7 +92,7 @@ public class MockAuxiliaryCache
* @return a map of Serializable key to ICacheElement element, or an empty map if there is no
* data in cache for any of these keys
*/
- public Map getMultiple( Set keys )
+ public Map<Serializable, ICacheElement> getMultiple(Set<Serializable> keys)
{
return new HashMap();
}
@@ -198,6 +198,7 @@ public class MockAuxiliaryCache
}
/** @return null */
+ @Override
public String getEventLoggingExtraInfo()
{
return null;
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/AbstractDiskCacheUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/AbstractDiskCacheUnitTest.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/AbstractDiskCacheUnitTest.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/AbstractDiskCacheUnitTest.java Wed Jul 27 18:08:23 2011
@@ -49,11 +49,11 @@ public class AbstractDiskCacheUnitTest
// DO WORK
ICacheElement result = diskCache.get( key );
- // VERIFY
+ // VERIFY
//System.out.println( diskCache.getStats() );
assertNotNull( "Item should be in the map.", result );
}
-
+
/**
* Verify that alive is set to false..
* <p>
@@ -79,7 +79,7 @@ public class AbstractDiskCacheUnitTest
// DO WORK
diskCache.dispose();
- // VERIFY
+ // VERIFY
assertFalse( "disk cache should not be alive.", diskCache.alive );
assertEquals( "Status should be disposed", CacheConstants.STATUS_DISPOSED, diskCache.getStatus() );
}
@@ -113,7 +113,7 @@ public class AbstractDiskCacheUnitTest
diskCache.removeAll();
String result = stringWriter.toString();
- // VERIFY
+ // VERIFY
assertTrue( "Should say not allowed.", result.indexOf( "set to false" ) != -1 );
assertNotNull( "Item should be in the map.", diskCache.get( key ) );
}
@@ -143,7 +143,7 @@ public class AbstractDiskCacheUnitTest
// DO WORK
diskCache.removeAll();
- // VERIFY
+ // VERIFY
assertNull( "Item should not be in the map.", diskCache.get( key ) );
}
@@ -177,6 +177,7 @@ public class AbstractDiskCacheUnitTest
* <p>
* @return "memory"
*/
+ @Override
protected String getDiskLocation()
{
return "memory";
@@ -186,7 +187,8 @@ public class AbstractDiskCacheUnitTest
* @param groupName
* @return Collections.EMPTY_SET
*/
- public Set getGroupKeys( String groupName )
+ @Override
+ public Set<Serializable> getGroupKeys(String groupName)
{
return Collections.EMPTY_SET;
}
@@ -194,6 +196,7 @@ public class AbstractDiskCacheUnitTest
/**
* @return map.size()
*/
+ @Override
public int getSize()
{
return map.size();
@@ -202,10 +205,11 @@ public class AbstractDiskCacheUnitTest
/**
* @throws IOException
*/
+ @Override
protected void processDispose()
throws IOException
{
- //System.out.println( "processDispose" );
+ //System.out.println( "processDispose" );
}
/**
@@ -213,6 +217,7 @@ public class AbstractDiskCacheUnitTest
* @return ICacheElement
* @throws IOException
*/
+ @Override
protected ICacheElement processGet( Serializable key )
throws IOException
{
@@ -225,10 +230,11 @@ public class AbstractDiskCacheUnitTest
* @return Collections.EMPTY_MAP
* @throws IOException
*/
- protected Map processGetMatching( String pattern )
+ @Override
+ protected Map<Serializable, ICacheElement> processGetMatching( String pattern )
throws IOException
{
- return Collections.EMPTY_MAP;
+ return Collections.emptyMap();
}
/**
@@ -236,6 +242,7 @@ public class AbstractDiskCacheUnitTest
* @return false
* @throws IOException
*/
+ @Override
protected boolean processRemove( Serializable key )
throws IOException
{
@@ -245,6 +252,7 @@ public class AbstractDiskCacheUnitTest
/**
* @throws IOException
*/
+ @Override
protected void processRemoveAll()
throws IOException
{
@@ -256,6 +264,7 @@ public class AbstractDiskCacheUnitTest
* @param cacheElement
* @throws IOException
*/
+ @Override
protected void processUpdate( ICacheElement cacheElement )
throws IOException
{
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/file/FileDiskCacheUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/file/FileDiskCacheUnitTest.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/file/FileDiskCacheUnitTest.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/file/FileDiskCacheUnitTest.java Wed Jul 27 18:08:23 2011
@@ -67,8 +67,10 @@ public class FileDiskCacheUnitTest
* Verify initialization.
* <p>
* @throws Exception
+ *
+ * tv: Don't know why this is supposed to fail. Under MacOSX this directory name works fine.
*/
- public void testInitialization_JunkFileName()
+ public void OFFtestInitialization_JunkFileName()
throws Exception
{
// SETUP
@@ -83,7 +85,7 @@ public class FileDiskCacheUnitTest
// VERIFY
assertNotNull( "Should have a directory", directory );
- assertFalse( "Should have an existing directory", directory.exists() );
+ assertFalse( "Should not have an existing directory", directory.exists() );
assertTrue( "Should not be alive", diskCache.getStatus() == CacheConstants.STATUS_DISPOSED );
}
@@ -300,13 +302,14 @@ public class FileDiskCacheUnitTest
for ( int i = maxNumberOfFiles - 1; i >= 0; i-- )
{
SleepUtil.sleepAtLeast( 5 );
- diskCache.get( "key" + i );
+ ICacheElement ice = diskCache.get( "key" + i );
+ assertNotNull("Value of key" + i + " should not be null", ice);
}
SleepUtil.sleepAtLeast( 100 );
-
+
// This will push it over. number 9, the youngest, but LRU item should be removed
diskCache.update( new CacheElement( cacheName, "key" + maxNumberOfFiles, "Data" ) );
- SleepUtil.sleepAtLeast( 100 );
+ SleepUtil.sleepAtLeast( 500 );
// DO WORK
ICacheElement result = diskCache.get( "key9" );
@@ -347,7 +350,7 @@ public class FileDiskCacheUnitTest
diskCache.get( "key" + i );
}
SleepUtil.sleepAtLeast( 100 );
-
+
// This will push it over. number 0, the oldest should be removed
diskCache.update( new CacheElement( cacheName, "key" + maxNumberOfFiles, "Data" ) );
SleepUtil.sleepAtLeast( 100 );
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheConcurrentNoDeadLockUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheConcurrentNoDeadLockUnitTest.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheConcurrentNoDeadLockUnitTest.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/disk/indexed/IndexedDiskCacheConcurrentNoDeadLockUnitTest.java Wed Jul 27 18:08:23 2011
@@ -69,15 +69,17 @@ public class IndexedDiskCacheConcurrentN
suite.addTest( new IndexedDiskCacheRandomConcurrentTestUtil( "testIndexedDiskCache1" )
{
+ @Override
public void runTest()
throws Exception
{
- this.runTestForRegion( "indexedRegion4", 0, 200, 1 );
+ this.runTestForRegion( "indexedRegion4", 1, 200, 1 );
}
} );
suite.addTest( new IndexedDiskCacheRandomConcurrentTestUtil( "testIndexedDiskCache2" )
{
+ @Override
public void runTest()
throws Exception
{
@@ -87,6 +89,7 @@ public class IndexedDiskCacheConcurrentN
suite.addTest( new IndexedDiskCacheRandomConcurrentTestUtil( "testIndexedDiskCache3" )
{
+ @Override
public void runTest()
throws Exception
{
@@ -96,6 +99,7 @@ public class IndexedDiskCacheConcurrentN
suite.addTest( new IndexedDiskCacheRandomConcurrentTestUtil( "testIndexedDiskCache4" )
{
+ @Override
public void runTest()
throws Exception
{
@@ -105,6 +109,7 @@ public class IndexedDiskCacheConcurrentN
suite.addTest( new IndexedDiskCacheRandomConcurrentTestUtil( "testIndexedDiskCache5" )
{
+ @Override
public void runTest()
throws Exception
{
@@ -118,6 +123,7 @@ public class IndexedDiskCacheConcurrentN
/**
* Test setup
*/
+ @Override
public void setUp()
{
JCS.setConfigFilename( "/TestDiskCacheCon.ccf" );
@@ -126,6 +132,7 @@ public class IndexedDiskCacheConcurrentN
/**
* Test tearDown. Dispose of the cache.
*/
+ @Override
public void tearDown()
{
try
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/MockRemoteCacheClient.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/MockRemoteCacheClient.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/MockRemoteCacheClient.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/auxiliary/remote/MockRemoteCacheClient.java Wed Jul 27 18:08:23 2011
@@ -131,7 +131,7 @@ public class MockRemoteCacheClient
* @return a map of Serializable key to ICacheElement element, or an empty map if there is no
* data in cache for any of these keys
*/
- public Map getMultiple( Set keys )
+ public Map<Serializable, ICacheElement> getMultiple(Set<Serializable> keys)
{
log.info( "get [" + keys + "]" );
return (Map) getMultipleSetupMap.get( keys );
@@ -243,7 +243,7 @@ public class MockRemoteCacheClient
* @return Map
* @throws IOException
*/
- public Map getMatching( String pattern )
+ public Map<Serializable, ICacheElement> getMatching(String pattern)
throws IOException
{
return new HashMap();
@@ -254,6 +254,7 @@ public class MockRemoteCacheClient
* <p>
* @return null
*/
+ @Override
public String getEventLoggingExtraInfo()
{
return null;
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheDiskUsageUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheDiskUsageUnitTest.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheDiskUsageUnitTest.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/engine/control/CompositeCacheDiskUsageUnitTest.java Wed Jul 27 18:08:23 2011
@@ -54,6 +54,7 @@ public class CompositeCacheDiskUsageUnit
/**
* Test setup
*/
+ @Override
public void setUp()
{
JCS.setConfigFilename( "/TestDiskCacheUsagePattern.ccf" );
@@ -341,7 +342,7 @@ public class CompositeCacheDiskUsageUnit
* @return a map of Serializable key to ICacheElement element, or an empty map if there is
* no data in cache for any of these keys
*/
- public Map getMultiple( Set keys )
+ public Map<Serializable, ICacheElement> getMultiple(Set<Serializable> keys)
{
return new HashMap();
}
@@ -434,6 +435,7 @@ public class CompositeCacheDiskUsageUnit
/**
* @param cacheEventLogger
*/
+ @Override
public void setCacheEventLogger( ICacheEventLogger cacheEventLogger )
{
// TODO Auto-generated method stub
@@ -443,6 +445,7 @@ public class CompositeCacheDiskUsageUnit
/**
* @param elementSerializer
*/
+ @Override
public void setElementSerializer( IElementSerializer elementSerializer )
{
// TODO Auto-generated method stub
@@ -450,6 +453,7 @@ public class CompositeCacheDiskUsageUnit
}
/** @return null */
+ @Override
public String getEventLoggingExtraInfo()
{
// TODO Auto-generated method stub
@@ -461,7 +465,7 @@ public class CompositeCacheDiskUsageUnit
* @return Collections.EMPTY_MAP;
* @throws IOException
*/
- public Map getMatching( String pattern )
+ public Map<Serializable, ICacheElement> getMatching(String pattern)
throws IOException
{
return Collections.EMPTY_MAP;
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/engine/memory/MockMemoryCache.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/engine/memory/MockMemoryCache.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/engine/memory/MockMemoryCache.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/engine/memory/MockMemoryCache.java Wed Jul 27 18:08:23 2011
@@ -43,7 +43,7 @@ public class MockMemoryCache
private ICompositeCacheAttributes cacheAttr;
/** Internal map */
- private HashMap map = new HashMap();
+ private final HashMap map = new HashMap();
/** The number of times waterfall was called. */
public int waterfallCallCount = 0;
@@ -132,7 +132,7 @@ public class MockMemoryCache
* @return elements
* @throws IOException
*/
- public Map getMultiple( Set keys )
+ public Map<Serializable, ICacheElement> getMultiple(Set<Serializable> keys)
throws IOException
{
Map elements = new HashMap();
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/utils/threadpool/ThreadPoolManagerUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/utils/threadpool/ThreadPoolManagerUnitTest.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/utils/threadpool/ThreadPoolManagerUnitTest.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/utils/threadpool/ThreadPoolManagerUnitTest.java Wed Jul 27 18:08:23 2011
@@ -20,14 +20,12 @@ package org.apache.jcs.utils.threadpool;
*/
import java.util.ArrayList;
+import java.util.concurrent.ThreadPoolExecutor;
import junit.framework.TestCase;
import org.apache.jcs.utils.props.PropertyLoader;
-import EDU.oswego.cs.dl.util.concurrent.BoundedBuffer;
-import EDU.oswego.cs.dl.util.concurrent.LinkedQueue;
-
/**
* Verify that the manager can create pools as intended by the default and
* specified file names.
@@ -47,17 +45,17 @@ public class ThreadPoolManagerUnitTest
ThreadPoolManager mgr = ThreadPoolManager.getInstance();
assertNotNull( mgr );
- ThreadPool pool = mgr.getPool( "test1" );
+ ThreadPoolExecutor pool = mgr.getPool( "test1" );
assertNotNull( pool );
- int poolSize = pool.getPool().getPoolSize();
+ int poolSize = pool.getPoolSize();
int expectedPoolSize = Integer.parseInt( PropertyLoader.loadProperties( "thread_pool.properties" )
.getProperty( "thread_pool.test1.startUpSize" ) );
assertEquals( poolSize, expectedPoolSize );
// int qs = ((BoundedBuffer)pool.getQueue()).size();
- int max = pool.getPool().getMaximumPoolSize();
+ int max = pool.getMaximumPoolSize();
System.out.println( max );
int expected = Integer.parseInt( PropertyLoader.loadProperties( "thread_pool.properties" )
@@ -75,10 +73,10 @@ public class ThreadPoolManagerUnitTest
ThreadPoolManager mgr = ThreadPoolManager.getInstance();
assertNotNull( mgr );
- ThreadPool pool = mgr.getPool( "doesnotexist" );
+ ThreadPoolExecutor pool = mgr.getPool( "doesnotexist" );
assertNotNull( pool );
- int max = pool.getPool().getMaximumPoolSize();
+ int max = pool.getMaximumPoolSize();
System.out.println( max );
int expected = Integer.parseInt( PropertyLoader.loadProperties( "thread_pool.properties" )
@@ -97,10 +95,10 @@ public class ThreadPoolManagerUnitTest
ThreadPoolManager mgr = ThreadPoolManager.getInstance();
assertNotNull( mgr );
- ThreadPool pool = mgr.getPool( "doesntexist" );
+ ThreadPoolExecutor pool = mgr.getPool( "doesntexist" );
assertNotNull( "Should have gotten back a pool configured like the default", pool );
- int max = pool.getPool().getMaximumPoolSize();
+ int max = pool.getMaximumPoolSize();
System.out.println( max );
// it will load from the default file
@@ -134,8 +132,9 @@ public class ThreadPoolManagerUnitTest
/**
* Verify that the wait policy gets set correctly.
*
+ * Switched off as the POLICY_WAIT is not supported by the javax.concurrent package
*/
- public void testWaitPolicyConfig()
+ public void OFFtestWaitPolicyConfig()
{
ThreadPoolManager.setPropsFileName( "thread_pool.properties" );
ThreadPoolManager mgr = ThreadPoolManager.getInstance();
@@ -143,10 +142,10 @@ public class ThreadPoolManagerUnitTest
mgr.configure();
assertNotNull( mgr );
- ThreadPool pool = mgr.getPool( "waittest" );
+ ThreadPoolExecutor pool = mgr.getPool( "waittest" );
assertNotNull( "Should have gotten back a pool.", pool );
- int max = pool.getPool().getMaximumPoolSize();
+ int max = pool.getMaximumPoolSize();
System.out.println( "testWaitPolicyConfig " + max );
// it will load from the default file
@@ -167,38 +166,38 @@ public class ThreadPoolManagerUnitTest
* linked queue.
*
*/
- public void testNoBoundary()
- {
- ThreadPoolManager.setPropsFileName( "thread_pool.properties" );
- ThreadPoolManager mgr = ThreadPoolManager.getInstance();
- // force config from new props file
- mgr.configure();
- assertNotNull( mgr );
-
- ThreadPool pool = mgr.getPool( "nobound" );
- assertNotNull( "Should have gotten back a pool.", pool );
-
- assertTrue( "Should have a linked queue and not a bounded buffer.", pool.getQueue() instanceof LinkedQueue );
- }
+// public void testNoBoundary()
+// {
+// ThreadPoolManager.setPropsFileName( "thread_pool.properties" );
+// ThreadPoolManager mgr = ThreadPoolManager.getInstance();
+// // force config from new props file
+// mgr.configure();
+// assertNotNull( mgr );
+//
+// ThreadPoolExecutor pool = mgr.getPool( "nobound" );
+// assertNotNull( "Should have gotten back a pool.", pool );
+//
+// assertTrue( "Should have a linked queue and not a bounded buffer.", pool.getQueue() instanceof LinkedQueue );
+// }
/**
* Verify that if we specify useBoundary=true that we get a BoundedBuffer.
*
*/
- public void testWithBoundary()
- {
- // SETUP
- ThreadPoolManager.setPropsFileName( "thread_pool.properties" );
- ThreadPoolManager mgr = ThreadPoolManager.getInstance();
- // force config from new props file
- mgr.configure();
- assertNotNull( mgr );
-
- // DO WORK
- ThreadPool pool = mgr.getPool( "withbound" );
-
- // VERIFY
- assertNotNull( "Should have gotten back a pool.", pool );
- assertTrue( "Should have a BoundedBuffer and not a linked queue.", pool.getQueue() instanceof BoundedBuffer );
- }
+// public void testWithBoundary()
+// {
+// // SETUP
+// ThreadPoolManager.setPropsFileName( "thread_pool.properties" );
+// ThreadPoolManager mgr = ThreadPoolManager.getInstance();
+// // force config from new props file
+// mgr.configure();
+// assertNotNull( mgr );
+//
+// // DO WORK
+// ThreadPoolExecutor pool = mgr.getPool( "withbound" );
+//
+// // VERIFY
+// assertNotNull( "Should have gotten back a pool.", pool );
+// assertTrue( "Should have a BoundedBuffer and not a linked queue.", pool.getQueue() instanceof BoundedBuffer );
+// }
}
Modified: commons/proper/jcs/trunk/src/test/org/apache/jcs/utils/threadpool/ThreadPoolUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/src/test/org/apache/jcs/utils/threadpool/ThreadPoolUnitTest.java?rev=1151575&r1=1151574&r2=1151575&view=diff
==============================================================================
--- commons/proper/jcs/trunk/src/test/org/apache/jcs/utils/threadpool/ThreadPoolUnitTest.java (original)
+++ commons/proper/jcs/trunk/src/test/org/apache/jcs/utils/threadpool/ThreadPoolUnitTest.java Wed Jul 27 18:08:23 2011
@@ -19,6 +19,8 @@ package org.apache.jcs.utils.threadpool;
* under the License.
*/
+import java.util.concurrent.ThreadPoolExecutor;
+
import junit.framework.TestCase;
/**
@@ -43,16 +45,16 @@ public class ThreadPoolUnitTest
throws Exception
{
//ThreadPoolManager.setPropsFileName( "thread_pool_test.properties" );
- ThreadPool pool = ThreadPoolManager.getInstance().getPool( "maxtest" );
+ ThreadPoolExecutor pool = ThreadPoolManager.getInstance().getPool( "maxtest" );
//System.out.println( "pool = " + pool );
- pool.getPool().setMaximumPoolSize( 5 );
+ pool.setMaximumPoolSize( 5 );
//System.out.println( "current size before execute = " + pool.getPool().getPoolSize() );
// add 6
for ( int i = 1; i < 30; i++ )
{
- final ThreadPool myPool = pool;
+ final ThreadPoolExecutor myPool = pool;
final int cnt = i;
pool.execute( new Runnable()
{
@@ -62,7 +64,7 @@ public class ThreadPoolUnitTest
try
{
//System.out.println( cnt );
- System.out.println( "count = " + cnt + " before sleep current size = " + myPool.getPool().getPoolSize() );
+ System.out.println( "count = " + cnt + " before sleep current size = " + myPool.getPoolSize() );
Thread.sleep( 200 / cnt );
//System.out.println( "count = " + cnt + " after sleep current size = " + myPool.getPool().getPoolSize() );
}
@@ -76,11 +78,11 @@ public class ThreadPoolUnitTest
}
//System.out.println( "current size = " + pool.getPool().getPoolSize() );
- pool.getPool().setMaximumPoolSize( 4 );
+ pool.setMaximumPoolSize( 4 );
//Thread.sleep( 200 );
//System.out.println( "current size after set size to 4= " + pool.getPool().getPoolSize() );
Thread.sleep( 200 );
//System.out.println( "current size again after sleep = " + pool.getPool().getPoolSize() );
- assertEquals( "Pool size should have been reduced.", 4, pool.getPool().getPoolSize() );
+ assertEquals( "Pool size should have been reduced.", 4, pool.getPoolSize() );
}
}