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 2015/12/04 11:11:55 UTC
svn commit: r1717921 - in /commons/proper/jcs/trunk/commons-jcs-core/src:
main/java/org/apache/commons/jcs/auxiliary/
main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/hsql/
main/java/org/apache/commons/jcs/io/
main/java/org/apache/commons/jcs/utils...
Author: tv
Date: Fri Dec 4 10:11:55 2015
New Revision: 1717921
URL: http://svn.apache.org/viewvc?rev=1717921&view=rev
Log:
Address issues reported by Findbugs
Modified:
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/AbstractAuxiliaryCacheMonitor.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheFactory.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/io/ObjectInputStreamClassLoaderAware.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/AbstractJCSWorkerHelper.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorker.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorkerHelper.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryManager.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryService.java
commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/threadpool/ThreadPoolManager.java
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/access/JCSWorkerUnitTest.java
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryServiceUnitTest.java
commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryUnitTest.java
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/AbstractAuxiliaryCacheMonitor.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/AbstractAuxiliaryCacheMonitor.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/AbstractAuxiliaryCacheMonitor.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/AbstractAuxiliaryCacheMonitor.java Fri Dec 4 10:11:55 2015
@@ -45,7 +45,7 @@ public abstract class AbstractAuxiliaryC
/**
* Must make sure AbstractAuxiliaryCacheMonitor is started before any error can be detected!
*/
- private AtomicBoolean allright = new AtomicBoolean(true);
+ protected AtomicBoolean allright = new AtomicBoolean(true);
/**
* shutdown flag
@@ -82,14 +82,6 @@ public abstract class AbstractAuxiliaryC
}
/**
- * Set error condition unconditionally
- */
- protected void setError(boolean state)
- {
- allright.set(!state);
- }
-
- /**
* Notifies the cache monitor that an error occurred, and kicks off the error recovery process.
*/
public void notifyError()
@@ -135,7 +127,6 @@ public abstract class AbstractAuxiliaryC
*/
protected abstract void doWork();
-
/**
* Main processing method for the AbstractAuxiliaryCacheMonitor object
*/
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheFactory.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheFactory.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/auxiliary/disk/jdbc/hsql/HSQLDiskCacheFactory.java Fri Dec 4 10:11:55 2015
@@ -169,13 +169,11 @@ public class HSQLDiskCacheFactory
try
{
- sStatement.executeQuery( createSql.toString() );
- sStatement.close();
+ sStatement.execute( createSql.toString() );
}
catch ( SQLException e )
{
- // FIXME: This is not reliable
- if ( e.toString().indexOf( "already exists" ) != -1 )
+ if ("23000".equals(e.getSQLState()))
{
newT = false;
}
@@ -184,23 +182,35 @@ public class HSQLDiskCacheFactory
throw e;
}
}
-
- // TODO create an index on SYSTEM_EXPIRE_TIME_SECONDS
- String setupData[] = { "create index iKEY on " + tableName + " (CACHE_KEY, REGION)" };
+ finally
+ {
+ sStatement.close();
+ }
if ( newT )
{
- for ( int i = 1; i < setupData.length; i++ )
+ // TODO create an index on SYSTEM_EXPIRE_TIME_SECONDS
+ String setupData[] = { "create index iKEY on " + tableName + " (CACHE_KEY, REGION)" };
+ Statement iStatement = cConn.createStatement();
+
+ try
{
- try
- {
- sStatement.executeQuery( setupData[i] );
- }
- catch ( SQLException e )
+ for ( int i = 0; i < setupData.length; i++ )
{
- log.error( "Exception caught when creating index." + e );
+ try
+ {
+ iStatement.execute( setupData[i] );
+ }
+ catch ( SQLException e )
+ {
+ log.error( "Exception caught when creating index.", e );
+ }
}
}
+ finally
+ {
+ iStatement.close();
+ }
}
}
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/io/ObjectInputStreamClassLoaderAware.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/io/ObjectInputStreamClassLoaderAware.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/io/ObjectInputStreamClassLoaderAware.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/io/ObjectInputStreamClassLoaderAware.java Fri Dec 4 10:11:55 2015
@@ -38,8 +38,8 @@ public class ObjectInputStreamClassLoade
}
@Override
- protected Class resolveProxyClass(final String[] interfaces) throws IOException, ClassNotFoundException {
- final Class[] cinterfaces = new Class[interfaces.length];
+ protected Class<?> resolveProxyClass(final String[] interfaces) throws IOException, ClassNotFoundException {
+ final Class<?>[] cinterfaces = new Class[interfaces.length];
for (int i = 0; i < interfaces.length; i++) {
cinterfaces[i] = Class.forName(interfaces[i], false, classLoader);
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/AbstractJCSWorkerHelper.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/AbstractJCSWorkerHelper.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/AbstractJCSWorkerHelper.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/AbstractJCSWorkerHelper.java Fri Dec 4 10:11:55 2015
@@ -25,8 +25,7 @@ package org.apache.commons.jcs.utils.acc
* <p>
* @author tsavo
*/
-public abstract class AbstractJCSWorkerHelper
- implements JCSWorkerHelper
+public abstract class AbstractJCSWorkerHelper<V> implements JCSWorkerHelper<V>
{
/** finished flag. Can't we use wait notify? */
private boolean finished = false;
@@ -43,7 +42,7 @@ public abstract class AbstractJCSWorkerH
* @return finished
*/
@Override
- public boolean isFinished()
+ public synchronized boolean isFinished()
{
return finished;
}
@@ -52,7 +51,7 @@ public abstract class AbstractJCSWorkerH
* @param isFinished
*/
@Override
- public void setFinished( boolean isFinished )
+ public synchronized void setFinished( boolean isFinished )
{
finished = isFinished;
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorker.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorker.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorker.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorker.java Fri Dec 4 10:11:55 2015
@@ -19,6 +19,10 @@ package org.apache.commons.jcs.utils.acc
* under the License.
*/
+import java.io.Serializable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
import org.apache.commons.jcs.access.GroupCacheAccess;
@@ -26,10 +30,6 @@ import org.apache.commons.jcs.access.exc
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
/**
* Utility class to encapsulate doing a piece of work, and caching the results
* in JCS. Simply construct this class with the region name for the Cache and
@@ -106,7 +106,7 @@ public class JCSWorker<K extends Seriali
/**
* Map to hold who's doing work presently.
*/
- private static volatile Map<String, JCSWorkerHelper> map = new HashMap<String, JCSWorkerHelper>();
+ private volatile ConcurrentMap<String, JCSWorkerHelper<V>> map = new ConcurrentHashMap<String, JCSWorkerHelper<V>>();
/**
* Region for the JCS cache.
@@ -158,7 +158,7 @@ public class JCSWorker<K extends Seriali
* Throws an exception if anything goes wrong while doing the
* work.
*/
- public V getResult( K aKey, JCSWorkerHelper aWorker )
+ public V getResult( K aKey, JCSWorkerHelper<V> aWorker )
throws Exception
{
return run( aKey, null, aWorker );
@@ -168,7 +168,7 @@ public class JCSWorker<K extends Seriali
* Gets the cached result for this region/key OR does the work and caches
* the result, returning the result. If the result has not been cached yet,
* this calls doWork() on the JCSWorkerHelper to do the work and cache the
- * result. This is also an opertunity to do any post processing of the
+ * result. This is also an opportunity to do any post processing of the
* result in your CachedWorker implementation.
* @param aKey
* The key to get/put with on the Cache.
@@ -183,7 +183,7 @@ public class JCSWorker<K extends Seriali
* Throws an exception if anything goes wrong while doing the
* work.
*/
- public V getResult( K aKey, String aGroup, JCSWorkerHelper aWorker )
+ public V getResult( K aKey, String aGroup, JCSWorkerHelper<V> aWorker )
throws Exception
{
return run( aKey, aGroup, aWorker );
@@ -203,25 +203,14 @@ public class JCSWorker<K extends Seriali
* If something goes wrong while doing the work, throw an
* exception.
*/
- private V run( K aKey, String aGroup, JCSWorkerHelper aHelper )
+ private V run( K aKey, String aGroup, JCSWorkerHelper<V> aHelper )
throws Exception
{
V result = null;
// long start = 0;
// long dbTime = 0;
- JCSWorkerHelper helper = null;
+ JCSWorkerHelper<V> helper = map.putIfAbsent(getRegion() + aKey, aHelper);
- synchronized ( map )
- {
- // Check to see if we already have a thread doing this work.
- helper = map.get( getRegion() + aKey );
- if ( helper == null )
- {
- // If not, add ourselves as the Worker so
- // calls in another thread will use this worker's result
- map.put( getRegion() + aKey, aHelper );
- }
- }
if ( helper != null )
{
synchronized ( helper )
@@ -230,9 +219,16 @@ public class JCSWorker<K extends Seriali
{
logger.debug( "Found a worker already doing this work (" + getRegion() + ":" + aKey + ")." );
}
- if ( !helper.isFinished() )
+ while ( !helper.isFinished() )
{
- helper.wait();
+ try
+ {
+ helper.wait();
+ }
+ catch (InterruptedException e)
+ {
+ // expected
+ }
}
if ( logger.isDebugEnabled() )
{
@@ -261,9 +257,7 @@ public class JCSWorker<K extends Seriali
// If the cache dosn't have it, do the work.
if ( result == null )
{
- @SuppressWarnings("unchecked") // Need to cast from Object
- V doWork = (V)aHelper.doWork();
- result = doWork;
+ result = aHelper.doWork();
if ( logger.isDebugEnabled() )
{
logger.debug( "Work Done, caching: key:" + aKey + ", group:" + aGroup + ", result:" + result + "." );
@@ -287,19 +281,17 @@ public class JCSWorker<K extends Seriali
{
logger.debug( getRegion() + ":" + aKey + " entered finally." );
}
- synchronized ( map )
+
+ // Remove ourselves as the worker.
+ if ( helper == null )
{
- // Remove ourselves as the worker.
- if ( helper == null )
- {
- map.remove( getRegion() + aKey );
- }
- synchronized ( aHelper )
- {
- aHelper.setFinished( true );
- // Wake everyone waiting on us
- aHelper.notifyAll();
- }
+ map.remove( getRegion() + aKey );
+ }
+ synchronized ( aHelper )
+ {
+ aHelper.setFinished( true );
+ // Wake everyone waiting on us
+ aHelper.notifyAll();
}
}
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorkerHelper.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorkerHelper.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorkerHelper.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/access/JCSWorkerHelper.java Fri Dec 4 10:11:55 2015
@@ -21,7 +21,7 @@ package org.apache.commons.jcs.utils.acc
/**
* Interface for doing a piece of work which is expected to be cached. This is
- * ment to be used in conjunction with JCSWorker.
+ * meant to be used in conjunction with JCSWorker.
* <p>
* Implement doWork() to return the work being done. isFinished() should return
* false until setFinished(true) is called, after which time it should return
@@ -29,7 +29,7 @@ package org.apache.commons.jcs.utils.acc
* <p>
* @author tsavo
*/
-public interface JCSWorkerHelper
+public interface JCSWorkerHelper<V>
{
/**
* Tells us whether or not the work has been completed. This will be called
@@ -56,6 +56,5 @@ public interface JCSWorkerHelper
* If anything goes wrong while doing the work, an Exception
* should be thrown.
*/
- Object doWork()
- throws Exception;
+ V doWork() throws Exception;
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryManager.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryManager.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryManager.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryManager.java Fri Dec 4 10:11:55 2015
@@ -19,14 +19,14 @@ package org.apache.commons.jcs.utils.dis
* under the License.
*/
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.commons.jcs.engine.behavior.ICompositeCacheManager;
import org.apache.commons.jcs.engine.behavior.IProvideScheduler;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import java.util.HashMap;
-import java.util.Map;
-
/**
* This manages UDPDiscovery Services. We should end up with one service per Lateral Cache Manager
* Instance. One service works for multiple regions. We don't want a connection for each region.
@@ -101,6 +101,7 @@ public class UDPDiscoveryManager
service.setScheduledExecutorService(((IProvideScheduler)cacheMgr).getScheduledExecutorService());
}
+ service.startup();
services.put( key, service );
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryService.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryService.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryService.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryService.java Fri Dec 4 10:11:55 2015
@@ -19,13 +19,7 @@ package org.apache.commons.jcs.utils.dis
* under the License.
*/
-import org.apache.commons.jcs.engine.behavior.IRequireScheduler;
-import org.apache.commons.jcs.engine.behavior.IShutdownObserver;
-import org.apache.commons.jcs.utils.discovery.behavior.IDiscoveryListener;
-import org.apache.commons.jcs.utils.net.HostNameUtil;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
+import java.io.IOException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.HashSet;
@@ -34,6 +28,13 @@ import java.util.concurrent.CopyOnWriteA
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+import org.apache.commons.jcs.engine.behavior.IRequireScheduler;
+import org.apache.commons.jcs.engine.behavior.IShutdownObserver;
+import org.apache.commons.jcs.utils.discovery.behavior.IDiscoveryListener;
+import org.apache.commons.jcs.utils.net.HostNameUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
/**
* This service creates a listener that can create lateral caches and add them to the no wait list.
* <p>
@@ -85,9 +86,9 @@ public class UDPDiscoveryService
// todo, you should be able to set this
udpDiscoveryAttributes.setServiceAddress( HostNameUtil.getLocalHostAddress() );
}
- catch ( UnknownHostException e1 )
+ catch ( UnknownHostException e )
{
- log.error( "Couldn't get localhost address", e1 );
+ log.error( "Couldn't get localhost address", e );
}
try
@@ -95,12 +96,8 @@ public class UDPDiscoveryService
// todo need some kind of recovery here.
receiver = new UDPDiscoveryReceiver( this, getUdpDiscoveryAttributes().getUdpDiscoveryAddr(),
getUdpDiscoveryAttributes().getUdpDiscoveryPort() );
- udpReceiverThread = new Thread( receiver );
- udpReceiverThread.setDaemon( true );
- // udpReceiverThread.setName( t.getName() + "--UDPReceiver" );
- udpReceiverThread.start();
}
- catch ( Exception e )
+ catch ( IOException e )
{
log.error( "Problem creating UDPDiscoveryReceiver, address ["
+ getUdpDiscoveryAttributes().getUdpDiscoveryAddr() + "] port ["
@@ -315,6 +312,17 @@ public class UDPDiscoveryService
}
/**
+ * Start necessary receiver thread
+ */
+ public void startup()
+ {
+ udpReceiverThread = new Thread( receiver );
+ udpReceiverThread.setDaemon( true );
+ // udpReceiverThread.setName( t.getName() + "--UDPReceiver" );
+ udpReceiverThread.start();
+ }
+
+ /**
* Shuts down the receiver.
*/
@Override
@@ -366,29 +374,6 @@ public class UDPDiscoveryService
}
/**
- * Call shutdown to be safe.
- * <p>
- * @throws Throwable on error
- */
- @Override
- protected void finalize()
- throws Throwable
- {
- super.finalize();
-
- // TODO reconsider this, since it uses the logger
- shutdown();
- }
-
- /**
- * @param discoveredServices The discoveredServices to set.
- */
- public synchronized void setDiscoveredServices( Set<DiscoveredService> discoveredServices )
- {
- this.discoveredServices = discoveredServices;
- }
-
- /**
* @return Returns the discoveredServices.
*/
public synchronized Set<DiscoveredService> getDiscoveredServices()
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/threadpool/ThreadPoolManager.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/threadpool/ThreadPoolManager.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/threadpool/ThreadPoolManager.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/main/java/org/apache/commons/jcs/utils/threadpool/ThreadPoolManager.java Fri Dec 4 10:11:55 2015
@@ -33,8 +33,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
- * 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
+ * This manages threadpools for an application
* <p>
* It is a singleton since threads need to be managed vm wide.
* <p>
@@ -111,20 +110,22 @@ public class ThreadPoolManager
*/
private static volatile Properties props = null;
+ /** singleton instance */
+ private static ThreadPoolManager INSTANCE = null;
+
/** Map of names to pools. */
- private static ConcurrentHashMap<String, ThreadPoolExecutor> pools = new ConcurrentHashMap<String, ThreadPoolExecutor>();
+ private ConcurrentHashMap<String, ThreadPoolExecutor> pools;
/** Lock for pools initialization. */
- private static ReentrantLock poolLock = new ReentrantLock();
-
- /** singleton instance */
- private static ThreadPoolManager INSTANCE = null;
+ private ReentrantLock poolLock;
/**
* No instances please. This is a singleton.
*/
private ThreadPoolManager()
{
+ this.pools = new ConcurrentHashMap<String, ThreadPoolExecutor>();
+ this.poolLock = new ReentrantLock();
configure();
}
@@ -136,7 +137,6 @@ public class ThreadPoolManager
*/
private ThreadPoolExecutor createPool( PoolConfiguration config )
{
- ThreadPoolExecutor pool = null;
BlockingQueue<Runnable> queue = null;
if ( config.isUseBoundary() )
{
@@ -156,9 +156,13 @@ public class ThreadPoolManager
queue = new LinkedBlockingQueue<Runnable>();
}
- pool = new ThreadPoolExecutor(config.getStartUpSize(), config.getMaximumPoolSize(),
- config.getKeepAliveTime(), TimeUnit.MILLISECONDS,
- queue, new DaemonThreadFactory("JCS-ThreadPoolManager-"));
+ ThreadPoolExecutor pool = new ThreadPoolExecutor(
+ config.getStartUpSize(),
+ config.getMaximumPoolSize(),
+ config.getKeepAliveTime(),
+ TimeUnit.MILLISECONDS,
+ queue,
+ new DaemonThreadFactory("JCS-ThreadPoolManager-"));
// when blocked policy
switch (config.getWhenBlockedPolicy())
@@ -256,11 +260,7 @@ public class ThreadPoolManager
PoolConfiguration config = loadConfig( PROP_NAME_ROOT + "." + name );
pool = createPool( config );
-
- if ( pool != null )
- {
- pools.put( name, pool );
- }
+ pools.put( name, pool );
if ( log.isDebugEnabled() )
{
@@ -284,9 +284,7 @@ public class ThreadPoolManager
*/
public ArrayList<String> getPoolNames()
{
- ArrayList<String> poolNames = new ArrayList<String>();
- poolNames.addAll(pools.keySet());
- return poolNames;
+ return new ArrayList<String>(pools.keySet());
}
/**
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/access/JCSWorkerUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/access/JCSWorkerUnitTest.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/access/JCSWorkerUnitTest.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/access/JCSWorkerUnitTest.java Fri Dec 4 10:11:55 2015
@@ -45,15 +45,14 @@ public class JCSWorkerUnitTest
JCSWorker<String, Long> cachingWorker = new JCSWorker<String, Long>( "example region" );
// This is the helper.
- JCSWorkerHelper helper = new AbstractJCSWorkerHelper()
+ JCSWorkerHelper<Long> helper = new AbstractJCSWorkerHelper<Long>()
{
int timesCalled = 0;
@Override
- public Object doWork()
+ public Long doWork()
{
- Object results = Long.valueOf( ++timesCalled );
- return results;
+ return Long.valueOf( ++timesCalled );
}
};
@@ -65,7 +64,6 @@ public class JCSWorkerUnitTest
// should get it from the cache.
Long result2 = cachingWorker.getResult( key, helper );
assertEquals( "Called the wrong number of times", Long.valueOf( 1 ), result2 );
-
}
}
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryServiceUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryServiceUnitTest.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryServiceUnitTest.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryServiceUnitTest.java Fri Dec 4 10:11:55 2015
@@ -19,10 +19,10 @@ package org.apache.commons.jcs.utils.dis
* under the License.
*/
-import junit.framework.TestCase;
-
import java.util.ArrayList;
+import junit.framework.TestCase;
+
/** Unit tests for the service. */
public class UDPDiscoveryServiceUnitTest
extends TestCase
@@ -40,6 +40,7 @@ public class UDPDiscoveryServiceUnitTest
// create the service
UDPDiscoveryService service = new UDPDiscoveryService( attributes );
+ service.startup();
service.addParticipatingCacheName( "testCache1" );
MockDiscoveryListener discoveryListener = new MockDiscoveryListener();
@@ -74,6 +75,7 @@ public class UDPDiscoveryServiceUnitTest
// create the service
UDPDiscoveryService service = new UDPDiscoveryService( attributes );
+ service.startup();
service.addParticipatingCacheName( "testCache1" );
MockDiscoveryListener discoveryListener = new MockDiscoveryListener();
@@ -136,6 +138,7 @@ public class UDPDiscoveryServiceUnitTest
// create the service
UDPDiscoveryService service = new UDPDiscoveryService( attributes );
+ service.startup();
service.addParticipatingCacheName( "testCache1" );
MockDiscoveryListener discoveryListener = new MockDiscoveryListener();
@@ -197,6 +200,7 @@ public class UDPDiscoveryServiceUnitTest
// create the service
UDPDiscoveryService service = new UDPDiscoveryService( attributes );
+ service.startup();
service.addParticipatingCacheName( "testCache1" );
MockDiscoveryListener discoveryListener = new MockDiscoveryListener();
Modified: commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryUnitTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryUnitTest.java?rev=1717921&r1=1717920&r2=1717921&view=diff
==============================================================================
--- commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryUnitTest.java (original)
+++ commons/proper/jcs/trunk/commons-jcs-core/src/test/java/org/apache/commons/jcs/utils/discovery/UDPDiscoveryUnitTest.java Fri Dec 4 10:11:55 2015
@@ -19,10 +19,11 @@ package org.apache.commons.jcs.utils.dis
* under the License.
*/
+import java.util.ArrayList;
+
import junit.framework.TestCase;
-import org.apache.commons.jcs.utils.timing.SleepUtil;
-import java.util.ArrayList;
+import org.apache.commons.jcs.utils.timing.SleepUtil;
/**
* Unit tests for discovery
@@ -44,6 +45,7 @@ public class UDPDiscoveryUnitTest
// create the service
UDPDiscoveryService service = new UDPDiscoveryService( attributes );
+ service.startup();
service.addParticipatingCacheName( "testCache1" );
MockDiscoveryListener discoveryListener = new MockDiscoveryListener();