You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@river.apache.org by Greg Trasuk <tr...@stratuscom.com> on 2014/01/02 19:35:33 UTC
Re: svn commit: r1554723 [1/5] - in /river/jtsk/skunk/qa_refactor/trunk: qa/src/com/sun/jini/qa/harness/ qa/src/com/sun/jini/test/impl/mahalo/ qa/src/com/sun/jini/test/impl/reggie/ qa/src/com/sun/jini/test/resources/ qa/src/com/sun/jini/test/share/ qa/src/...
Questions interleaved…
Greg.
On Jan 1, 2014, at 9:45 PM, peter_firmstone@apache.org wrote:
> Author: peter_firmstone
> Date: Thu Jan 2 02:45:07 2014
> New Revision: 1554723
>
> URL: http://svn.apache.org/r1554723
> Log:
> Cleaned up synchronization and locking strategies and removed instances of synchronization while performing remote calls.
>
> Changed final fields to non final where "this" escaped during construction.
>
> Replaced TaskManager with ExecutorService where Task.runAfter was not required, TaskManager is still utilised by JoinManager, ServiceDiscoveryManager and the qa test framework.
> Changed TaskManager to accept Runnable and to check for Task instances.
>
What’s the purpose behind this? Is there a problem with TaskManager? If so, wouldn’t the risk surface be minimized by fixing TaskManager or re-implementing it with the concurrent library, rather than changing all the classes where TaskManager is used?
> Changed RetryTask, pushed TaskManager.Task implementations to subclasses that used it. RetryTask is not compatible with Task.runAfter as documented in River-344.
>
> Added Generics to static configuration methods, to eliminate casts.
>
Is that a change to the API of Configuration? If so, it should be discussed (although I realize that you’re experimenting in qa_refactor, one assumes you’ll want to merge back into trunk at some point, so you may as well start the discussion now).
> Started working on ScheduledExecutors to take advantage of a ScheduledExecutorService to allow sharing of a thread pool for tasks that have dependencies, require order and must not execute until their dependencies have completed.
>
Isn’t that what TaskManager does?
> Added:
> river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/impl/thread/SynchronousExecutors.java
> river/jtsk/skunk/qa_refactor/trunk/test/src/org/apache/river/impl/thread/
> river/jtsk/skunk/qa_refactor/trunk/test/src/org/apache/river/impl/thread/SynchronouExecutorsTest.java
> Modified:
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterTest.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTask.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/reggie/MultihomedClientTest.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1.logging
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1_debug.logging
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/BaseQATest.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/LookupServices.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/DiscardUnreachable.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/GroupsMulticastMonitorReplace.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorChange.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplace.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplaceNone.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorStop.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorTerminate.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/RemoveGroupsSome.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/SetGroupsReplaceSome.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/Register.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/RegisterAttributes.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/locatordiscovery/DiscardUnreachable.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/ConstructorDups.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/DiscardUnreachable.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorChange.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorReplace.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStop.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStopReplace.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorTerminate.java
> river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/LocalLease.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/config/Config.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/fiddler/FiddlerInit.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/AbortJob.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/CommitJob.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/Job.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/ParticipantTask.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/PrepareAndCommitJob.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/PrepareJob.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mahalo/SettlerTask.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/mercury/MailboxImpl.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/norm/NormServerBaseImpl.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/norm/event/EventType.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/norm/event/EventTypeGenerator.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/outrigger/Notifier.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/outrigger/TxnMonitor.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/outrigger/TxnMonitorTask.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/thread/RetryTask.java
> river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/thread/TaskManager.java
> river/jtsk/skunk/qa_refactor/trunk/src/net/jini/discovery/AbstractLookupDiscovery.java
> river/jtsk/skunk/qa_refactor/trunk/src/net/jini/discovery/AbstractLookupDiscoveryManager.java
> river/jtsk/skunk/qa_refactor/trunk/src/net/jini/discovery/AbstractLookupLocatorDiscovery.java
> river/jtsk/skunk/qa_refactor/trunk/src/net/jini/discovery/LookupLocatorDiscovery.java
> river/jtsk/skunk/qa_refactor/trunk/src/net/jini/lease/LeaseRenewalManager.java
> river/jtsk/skunk/qa_refactor/trunk/src/net/jini/lookup/JoinManager.java
> river/jtsk/skunk/qa_refactor/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java Thu Jan 2 02:45:07 2014
> @@ -211,7 +211,7 @@ class MasterHarness {
> }
> config = new QAConfig(args);
> keepaliveThread = new Thread(new KeepAlivePort(), "Keepalive");
> - keepaliveThread.setDaemon(true);
> + keepaliveThread.setDaemon(false);
> keepaliveThread.start();
> try {
> Thread.sleep(1000);
> @@ -224,7 +224,7 @@ class MasterHarness {
> Class.forName("com.sun.jini.qa.harness.MergedPolicyProvider");
> if (policyClass.getClassLoader().getParent() != null) {
> outStream.println("MergedPolicyprovider must be "
> - + "installed in an extensions directory");
> + + "installed in an extensions ClassLoader");
> System.exit(1);
> }
> } catch (Exception e) {
> @@ -249,10 +249,11 @@ class MasterHarness {
> private class KeepAlivePort implements Runnable {
>
> public void run() {
> + ServerSocket socket = null;
> ArrayList socketList = new ArrayList(); // keep references
> try {
> SocketAddress add = new InetSocketAddress(KEEPALIVE_PORT);
> - ServerSocket socket = new ServerSocket();
> + socket = new ServerSocket();
> // if (!socket.getReuseAddress()) socket.setReuseAddress(true);
> socket.bind(add);
> while (true) {
> @@ -262,8 +263,12 @@ class MasterHarness {
> outStream.println("Problem with KEEPALIVE_PORT:" + KEEPALIVE_PORT );
> outStream.println("Unexpected exception:");
> e.printStackTrace(outStream);
> + } finally {
> + try {
> + socket.close();
> + } catch (IOException ex) {/*Ignore*/}
> System.exit(1);
> - }
> + }
> }
> }
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterTest.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterTest.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterTest.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/MasterTest.java Thu Jan 2 02:45:07 2014
> @@ -347,9 +347,9 @@ class MasterTest {
> private static class AutotRequestHandler implements Runnable {
>
> public void run() {
> + ServerSocket socket = null;
> try {
> - ServerSocket socket =
> - new ServerSocket(InboundAutotRequest.PORT);
> + socket = new ServerSocket(InboundAutotRequest.PORT);
> while (true) {
> Socket requestSocket = socket.accept();
> logger.log(Level.FINER, "Got an external request");
> @@ -374,7 +374,11 @@ class MasterTest {
> }
> } catch (Throwable e) {
> logger.log(Level.SEVERE, "Unexpected exception", e);
> - }
> + } finally {
> + try {
> + socket.close();
> + } catch (IOException ex) {/*Ignore*/}
> + }
> }
> }
> }
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java Thu Jan 2 02:45:07 2014
> @@ -94,10 +94,10 @@ class NonActivatableGroupImpl {
> private Object proxy;
>
> /** the groups exporter */
> - private final Exporter exporter;
> + private Exporter exporter;
>
> /** store service references here to ensure no GC interference */
> - private final ArrayList serviceList = new ArrayList();
> + private ArrayList serviceList = new ArrayList();
>
> /**
> * Construct a <code>NonActivatableGroup</code>. Instances export themselves
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTask.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTask.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTask.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/mahalo/RandomStressTask.java Thu Jan 2 02:45:07 2014
> @@ -27,12 +27,13 @@ import java.rmi.*;
> import com.sun.jini.test.share.TestParticipant;
> import com.sun.jini.test.share.TxnManagerTestOpcodes;
> import com.sun.jini.test.share.TxnTestUtils;
> +import com.sun.jini.thread.TaskManager.Task;
>
>
> /**
> */
> public abstract class RandomStressTask extends RetryTask
> - implements TxnManagerTestOpcodes {
> + implements TxnManagerTestOpcodes, Task {
> private static final boolean DEBUG = false;
> private TransactionManager mgr;
> protected Transaction.Created cr;
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/reggie/MultihomedClientTest.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/reggie/MultihomedClientTest.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/reggie/MultihomedClientTest.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/reggie/MultihomedClientTest.java Thu Jan 2 02:45:07 2014
> @@ -32,7 +32,7 @@ import java.io.PrintStream;
> *
> */
> public class MultihomedClientTest implements LegacyTest {
> -
> +
> private String command = System.getProperty("java.home") + File.separator
> + "bin" + File.separator + "java ";
> private QAConfig config = null;
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1.logging
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1.logging?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1.logging (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1.logging Thu Jan 2 02:45:07 2014
> @@ -39,7 +39,7 @@ handlers = java.util.logging.ConsoleHand
> # level setting (set below) to limit messages printed to
> # the console.
>
> -.level = INFO
> +.level = FINE
>
> ############################################################
> # Handler specific properties: formatters and logger levels
> @@ -105,7 +105,7 @@ java.util.logging.FileHandler.level = IN
>
> # For Everything
> sun.rmi.level = CONFIG
> -net.jini.level = CONFIG
> +net.jini.level = FINE
> org.apache.river.level = CONFIG
> com.sun.jini.level = CONFIG
>
> @@ -184,9 +184,9 @@ com.sun.jini.discovery.level = SEVERE
> # For the Helper Utilities
> net.jini.discovery.LookupDiscovery.level = SEVERE
> net.jini.discovery.LookupLocatorDiscovery.level = SEVERE
> -net.jini.lookup.JoinManager.level = SEVERE
> +net.jini.lookup.JoinManager.level = FINE
> net.jini.lookup.ServiceDiscoveryManager.level = SEVERE
> -net.jini.lease.LeaseRenewalManager.level = SEVERE
> +net.jini.lease.LeaseRenewalManager.level = FINEST
>
> # For Thread Pool Utilities
> com.sun.jini.thread.RetryTask.level = SEVERE
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1_debug.logging
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1_debug.logging?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1_debug.logging (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/resources/qa1_debug.logging Thu Jan 2 02:45:07 2014
> @@ -39,7 +39,7 @@ handlers = java.util.logging.ConsoleHand
> # level setting (set below) to limit messages printed to
> # the console.
>
> -.level = INFO
> +.level = FINE
>
> ############################################################
> # Handler specific properties: formatters and logger levels
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/BaseQATest.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/BaseQATest.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/BaseQATest.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/BaseQATest.java Thu Jan 2 02:45:07 2014
> @@ -41,15 +41,21 @@ import net.jini.core.lookup.ServiceRegis
>
>
> import java.util.ArrayList;
> +import java.util.Arrays;
> import java.util.Collection;
> import java.util.HashMap;
> import java.util.HashSet;
> import java.util.Iterator;
> +import java.util.LinkedList;
> import java.util.List;
> import java.util.Map;
> import java.util.Properties;
> import java.util.Set;
> import java.util.concurrent.CopyOnWriteArrayList;
> +import java.util.concurrent.TimeUnit;
> +import java.util.concurrent.locks.Condition;
> +import java.util.concurrent.locks.Lock;
> +import java.util.concurrent.locks.ReentrantLock;
> import java.util.logging.Level;
>
> /**
> @@ -211,10 +217,21 @@ abstract public class BaseQATest extends
> public static class LocatorGroupsPair {
> private final LookupLocator locator;
> private final String[] groups;
> + private final int hash;
> public LocatorGroupsPair(LookupLocator locator, String[] groups) {
> this.locator = locator;
> this.groups = groups;
> + int hash = 7;
> + hash = 89 * hash + (this.locator != null ? this.locator.hashCode() : 0);
> + hash = 89 * hash + Arrays.deepHashCode(this.groups);
> + this.hash = hash;
> }//end constructor
> +
> + @Override
> + public int hashCode() {
> + return hash;
> + }
> +
> public boolean equals(Object obj) {
> if(this == obj) return true;
> if( !(obj instanceof LocatorGroupsPair) ) return false;
> @@ -278,19 +295,30 @@ abstract public class BaseQATest extends
> * not to proceed.
> */
> protected class LookupListener implements DiscoveryListener {
> - public LookupListener(){ }
> - private final Map<LookupLocator,String[]> discoveredMap = new HashMap<LookupLocator,String[]>(11);
> - private final Map<LookupLocator,String[]> discardedMap = new HashMap<LookupLocator,String[]>(11);
> -
> - private final Map<LookupLocator,String[]> expectedDiscoveredMap = new HashMap<LookupLocator,String[]>(11);
> - private final Map<LookupLocator,String[]> expectedDiscardedMap = new HashMap<LookupLocator,String[]>(11);
> +
> + public final Lock lock;
> + public final Condition discovered;
> + public final Condition discarded;
> + private final Map<LookupLocator,String[]> discoveredMap;
> + private final Map<LookupLocator,String[]> discardedMap;
> +
> + private final Map<LookupLocator,String[]> expectedDiscoveredMap;
> + private final Map<LookupLocator,String[]> expectedDiscardedMap;
> + public LookupListener(){
> + lock = new ReentrantLock();
> + discovered = lock.newCondition();
> + discarded = lock.newCondition();
> + discoveredMap = new HashMap<LookupLocator,String[]>(11);
> + discardedMap = new HashMap<LookupLocator,String[]>(11);
> + expectedDiscoveredMap = new HashMap<LookupLocator,String[]>(11);
> + expectedDiscardedMap = new HashMap<LookupLocator,String[]>(11);
> + }
> +
>
> Set<Map.Entry<LookupLocator,String[]>> getDiscovered(){
> - synchronized(this){
> Set<Map.Entry<LookupLocator,String[]>> disc = new HashSet<Map.Entry<LookupLocator,String[]>>(discoveredMap.size());
> disc.addAll(discoveredMap.entrySet());
> return disc;
> - }
> }
>
> /**
> @@ -301,17 +329,13 @@ abstract public class BaseQATest extends
> * @return
> */
> void updateDiscovered(LookupLocator l, String[] groups){
> - synchronized(this){
> discardedMap.remove(l);
> discoveredMap.put(l, groups);
> - this.notifyAll();
> - }
> + discovered.signalAll();
> }
>
> int discoveredCount(){
> - synchronized(this){
> return discoveredMap.size();
> - }
> }
>
> /** Returns the locators of the lookups from discoveredMap, which
> @@ -319,11 +343,14 @@ abstract public class BaseQATest extends
> * as well as the lookups that have already been discovered.
> */
> public LookupLocator[] getDiscoveredLocators() {
> - synchronized(this) {
> + lock.lock();
> + try {
> Set kSet = discoveredMap.keySet();
> return ((LookupLocator[])(kSet).toArray
> (new LookupLocator[kSet.size()]));
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> }//end getDiscoveredLocators
>
> /** Returns the locators that are expected to be discovered, but which
> @@ -335,7 +362,8 @@ abstract public class BaseQATest extends
> * have not yet been discovered.
> */
> public LookupLocator[] getUndiscoveredLocators() {
> - synchronized(this) {
> + lock.lock();
> + try {
> Set dSet = discoveredMap.keySet();
> Set eSet = expectedDiscoveredMap.keySet();
> ArrayList uLocsList = new ArrayList(eSet.size());
> @@ -346,46 +374,61 @@ abstract public class BaseQATest extends
> }//end loop
> return ((LookupLocator[])(uLocsList).toArray
> (new LookupLocator[uLocsList.size()]));
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> }//end getUndiscoveredLocators
>
> public void clearAllEventInfo() {
> - synchronized(this) {
> + lock.lock();
> + try {
> discoveredMap.clear();
> discardedMap.clear();
> expectedDiscoveredMap.clear();
> expectedDiscardedMap.clear();
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> }//end clearAllEventInfo
>
> public void clearDiscoveryEventInfo() {
> - synchronized(this) {
> + lock.lock();
> + try {
> discoveredMap.clear();
> expectedDiscoveredMap.clear();
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> }//end clearDiscoveryEventInfo
>
> public void clearDiscardEventInfo() {
> - synchronized(this) {
> + lock.lock();
> + try {
> discardedMap.clear();
> expectedDiscardedMap.clear();
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> }//end clearDiscardEventInfo
>
> /** Use this method to set the contents of the discoveredMap to a
> * specific set of values.
> */
> public void setDiscoveredMap(List locGroupsList) {
> - synchronized(this) {
> + Iterator it = locGroupsList.iterator();
> + lock.lock();
> + try {
> discoveredMap.clear();
> discardedMap.clear();
> - for(int i=0;i<locGroupsList.size();i++) {
> - LocatorGroupsPair pair =
> - (LocatorGroupsPair)locGroupsList.get(i);
> + while (it.hasNext()) {
> + LocatorGroupsPair pair = (LocatorGroupsPair)it.next();
> discoveredMap.put(pair.getLocator(), pair.getGroups());
> }//end loop
> - this.notifyAll();
> - }//end sync(this)
> + discovered.signalAll();
> + discarded.signalAll();
> + } finally {
> + lock.unlock();
> + }
> }//end setDiscoveredMap
>
> /** Use this method to set the contents of both the discoveredMap
> @@ -393,23 +436,25 @@ abstract public class BaseQATest extends
> * @param locGroupsList list containing LocatorGroupsPair to be set.
> */
> public void setDiscardEventInfo(List<LocatorGroupsPair> locGroupsList) {
> - synchronized(this) {
> + Iterator<LocatorGroupsPair> it = locGroupsList.iterator();
> + lock.lock();
> + try {
> discoveredMap.clear();
> discardedMap.clear();
> - synchronized (locGroupsList){
> - int l = locGroupsList.size();
> - for(int i=0;i<l;i++) {
> - LocatorGroupsPair pair = locGroupsList.get(i);
> - /* Have to set discoveredMap so that discarded() method
> - * will place discarded lookup in the discardedMap when
> - * the discarded event arrives.
> - */
> - discoveredMap.put(pair.getLocator(), pair.getGroups());
> - expectedDiscardedMap.put(pair.getLocator(), pair.getGroups());
> - }//end loop
> + while (it.hasNext()){
> + LocatorGroupsPair pair = it.next();
> + /* Have to set discoveredMap so that discarded() method
> + * will place discarded lookup in the discardedMap when
> + * the discarded event arrives.
> + */
> + discoveredMap.put(pair.getLocator(), pair.getGroups());
> + expectedDiscardedMap.put(pair.getLocator(), pair.getGroups());
> }
> - this.notifyAll();
> - }//end sync(this)
> + discovered.signalAll();
> + discarded.signalAll();
> + } finally {
> + lock.unlock();
> + }
> }//end clearDiscardEventInfo
>
> /** This method should be called whenever the lookups this listener
> @@ -444,40 +489,38 @@ abstract public class BaseQATest extends
> LookupLocator[] locatorsToDiscover,
> String[] groupsToDiscover)
> {
> - synchronized(this) {
> - LookupLocator[] locators = toLocatorArray(locGroupsList);
> - boolean discoverAll = discoverAllLookups(locGroupsList,
> - groupsToDiscover);
> - /* The input ArrayList contains (locator,groups) pairs that
> - * represent the locator and current member groups of lookup
> - * services that have been started. Those lookup services
> - * that satisfy one or both of the following conditions
> - * either are expected to be discovered, or have already been
> - * discovered:
> - * - the lookup's corresponding locator is referenced in the
> - * locatorsToDiscover parameter
> - * - the lookup's current member groups consist of one or
> - * more of the groups referenced in the groupsToDiscover
> - * parameter
> - * The (locator,groups) pairs from the ArrayList that
> - * correspond to such lookup services are placed in the set
> - * that contains information related to the lookup services
> - * that are expected to be discovered.
> - */
> - synchronized (locGroupsList){
> - int l = locGroupsList.size();
> - for(int i=0;i<l;i++) {
> - LocatorGroupsPair pair =
> - (LocatorGroupsPair)locGroupsList.get(i);
> - LookupLocator curLoc = pair.getLocator();
> - String[] curGroups = pair.getGroups();
> - if( discoverByLocators(curLoc,locatorsToDiscover)
> - || discoverAll
> - || discoverByGroups(curGroups,groupsToDiscover) )
> - {
> - expectedDiscoveredMap.put(curLoc,curGroups);
> - }//endif
> - }//end loop
> + LookupLocator[] locators = toLocatorArray(locGroupsList);
> + boolean discoverAll = discoverAllLookups(locGroupsList,
> + groupsToDiscover);
> + /* The input ArrayList contains (locator,groups) pairs that
> + * represent the locator and current member groups of lookup
> + * services that have been started. Those lookup services
> + * that satisfy one or both of the following conditions
> + * either are expected to be discovered, or have already been
> + * discovered:
> + * - the lookup's corresponding locator is referenced in the
> + * locatorsToDiscover parameter
> + * - the lookup's current member groups consist of one or
> + * more of the groups referenced in the groupsToDiscover
> + * parameter
> + * The (locator,groups) pairs from the ArrayList that
> + * correspond to such lookup services are placed in the set
> + * that contains information related to the lookup services
> + * that are expected to be discovered.
> + */
> + Iterator it = locGroupsList.iterator();
> + lock.lock();
> + try {
> + while (it.hasNext()){
> + LocatorGroupsPair pair = (LocatorGroupsPair)it.next();
> + LookupLocator curLoc = pair.getLocator();
> + String[] curGroups = pair.getGroups();
> + if( discoverByLocators(curLoc,locatorsToDiscover)
> + || discoverAll
> + || discoverByGroups(curGroups,groupsToDiscover) )
> + {
> + expectedDiscoveredMap.put(curLoc,curGroups);
> + }//endif
> }
> /* The input ArrayList contains (locator,groups) pairs that
> * represent the locator and current member groups of lookup
> @@ -681,7 +724,9 @@ abstract public class BaseQATest extends
> expectedDiscardedMap.remove(loc);
> expectedDiscoveredMap.put(loc,memberGroups);
> }//end loop
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> }//end setLookupsToDiscover
>
> // /** Returns all of the groups (duplicates removed), across all lookup
> @@ -710,7 +755,8 @@ abstract public class BaseQATest extends
> logger.log(Level.FINE, " discovery event received "
> +"-- "+regs.length+" lookup(s)");
> Map groupsMap = evnt.getGroups();
> - synchronized(this) {
> + lock.lock();
> + try{
> boolean oneDiscovered = false;
> List<ServiceRegistrar> lusList = getLookupListSnapshot
> ("BaseQATest$LookupListenter.discovered");
> @@ -797,7 +843,9 @@ abstract public class BaseQATest extends
> " number of currently discovered lookup(s) = "
> +discoveredMap.size());
> }
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> } else {//(regs == null)
> logger.log(Level.FINE, " discovery event received "
> +"-- event.getRegistrars() returned NULL");
> @@ -811,8 +859,10 @@ abstract public class BaseQATest extends
> logger.log(Level.FINE, " discard event received "
> +"-- "+regs.length+" lookup(s)");
> Map groupsMap = evnt.getGroups();
> - synchronized(this) {
> - for(int i=0;i<regs.length;i++) {
> + lock.lock();
> + try {
> + int len = regs.length;
> + for(int i=0;i<len;i++) {
> /* Can't make a remote call to retrieve the locator
> * of the discarded registrar like what was done when
> * the registrar was discovered (since it may be down)
> @@ -838,8 +888,10 @@ abstract public class BaseQATest extends
> logger.log(Level.FINE,
> " number of currently discovered lookup(s) = "
> +discoveredMap.size());
> - this.notifyAll();
> - }//end sync(this)
> + discarded.signalAll();
> + } finally {
> + lock.unlock();
> + }
> } else {//(regs == null)
> logger.log(Level.FINE, " discard event received "
> +"-- event.getRegistrars() returned NULL");
> @@ -860,24 +912,34 @@ abstract public class BaseQATest extends
> protected class GroupChangeListener extends LookupListener
> implements DiscoveryChangeListener
> {
> - public GroupChangeListener(){ }
> -
> - private final Map<LookupLocator,String[]> changedMap = new HashMap<LookupLocator,String[]>(11);
> - private final Map<LookupLocator,String[]> expectedChangedMap = new HashMap<LookupLocator,String[]>(11);
> + private final Map<LookupLocator,String[]> changedMap;
> + private final Map<LookupLocator,String[]> expectedChangedMap;
> + private final Condition changed;
> + public GroupChangeListener(){
> + changed = lock.newCondition();
> + changedMap = new HashMap<LookupLocator,String[]>(11);
> + expectedChangedMap = new HashMap<LookupLocator,String[]>(11);
> + }
>
> public void clearAllEventInfo() {
> - synchronized(this) {
> + lock.lock();
> + try {
> super.clearAllEventInfo();
> changedMap.clear();
> expectedChangedMap.clear();
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> }//end clearAllEventInfo
>
> public void clearChangeEventInfo() {
> - synchronized(this) {
> + lock.lock();
> + try {
> changedMap.clear();
> expectedChangedMap.clear();
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> }//end clearChangeEventInfo
>
> /** This method should be called whenever the lookups this listener
> @@ -903,7 +965,8 @@ abstract public class BaseQATest extends
> LookupLocator[] locatorsToDiscover,
> String[] groupsToDiscover)
> {
> - synchronized(this) {
> + lock.lock();
> + try {
> super.setLookupsToDiscover(locGroupsList,
> locatorsToDiscover,
> groupsToDiscover);
> @@ -987,7 +1050,9 @@ abstract public class BaseQATest extends
> continue;
> }//endif(discoveredByGroup)
> }//end loop
> - }//end sync(this)
> + } finally {
> + lock.unlock();
> + }
> }//end setLookupsToDiscover
>
> public void changed(DiscoveryEvent evnt) {
> @@ -997,7 +1062,8 @@ abstract public class BaseQATest extends
> logger.log(Level.FINE, " change event received "
> +"-- "+regs.length+" lookup(s)");
> Map groupsMap = evnt.getGroups();
> - synchronized(this) {
> + lock.lock();
> + try {
> boolean oneChanged = false;
> List<ServiceRegistrar> regList = getLookupListSnapshot
> ("BaseQATest$LookupListenter.changed");
> @@ -1032,8 +1098,10 @@ abstract public class BaseQATest extends
> " number of currently discovered lookup(s) = "
> +discoveredCount());
> }
> - this.notifyAll();
> - }//end sync(this)
> + changed.signalAll();
> + } finally {
> + lock.unlock();
> + }
> } else {//(regs == null)
> logger.log(Level.FINE, " change event received "
> +"-- event.getRegistrars() returned NULL");
> @@ -1180,15 +1248,13 @@ abstract public class BaseQATest extends
> * containing instances of <code>LocatorGroupsPair</code>.
> */
> public static LookupLocator[] toLocatorArray(List list) {
> - synchronized (list){
> - int l = list.size();
> - LookupLocator[] locArray = new LookupLocator[l];
> - for(int i=0;i<l;i++) {
> - LocatorGroupsPair pair = (LocatorGroupsPair)list.get(i);
> - locArray[i] = pair.getLocator();
> - }//end loop
> - return locArray;
> + Iterator it = list.iterator();
> + List<LookupLocator> locators = new LinkedList<LookupLocator>();
> + while (it.hasNext()){
> + LocatorGroupsPair pair = (LocatorGroupsPair) it.next();
> + locators.add(pair.getLocator());
> }
> + return locators.toArray(new LookupLocator[locators.size()]);
> }//end toLocatorArray
>
> /** Returns an array of group names in which each element of the
> @@ -1301,16 +1367,14 @@ abstract public class BaseQATest extends
> * groups to discover, then we do not want to discover all of the
> * lookups
> */
> - synchronized (list){
> - int l = list.size();
> - for(int i=0;i<l;i++) {
> - LocatorGroupsPair pair = (LocatorGroupsPair)list.get(i);
> - String[] curMemberGroups = pair.getGroups();
> - if( !discoverByGroups(curMemberGroups,groupsToDiscover) ) {
> - return false;
> - }//endif
> - }//end loop
> - }
> + int l = list.size();
> + for(int i=0;i<l;i++) {
> + LocatorGroupsPair pair = (LocatorGroupsPair)list.get(i);
> + String[] curMemberGroups = pair.getGroups();
> + if( !discoverByGroups(curMemberGroups,groupsToDiscover) ) {
> + return false;
> + }//endif
> + }//end loop
> return true;
> }//end discoverAllLookups
>
> @@ -1543,9 +1607,13 @@ abstract public class BaseQATest extends
> boolean discoveryComplete = false;
> boolean showCompInfo = true;//turn this off after 1st pass thru loop
> Map discoveredClone = null;
> - synchronized (listener){
> + long milliSecondsToWait = nSecsToWait1*1000;
> + long duration = 0L;
> + long startTime = System.currentTimeMillis();
> + listener.lock.lock();
> + try {
> iLoop:
> - for(int i=0;i<nSecsToWait1;i++) {
> + while(duration<milliSecondsToWait) {
> Map discoveredMap = listener.discoveredMap;
> Map expectedDiscoveredMap = listener.expectedDiscoveredMap;
>
> @@ -1605,7 +1673,7 @@ abstract public class BaseQATest extends
> }//endif(displayOn)
> /* nEventsReceived == nEventsExpected for this listener? */
> if(discoveredMap.size() == expectedDiscoveredMap.size()) {
> - if(i == (nSecsToWait1-1)) {
> + if( (milliSecondsToWait -1000L < duration) && (duration < milliSecondsToWait)) {
> logger.log(Level.FINE,
> " events expected ("
> +expectedDiscoveredMap.size()+") == events "
> @@ -1623,13 +1691,13 @@ abstract public class BaseQATest extends
> discoveryComplete = true;
> break iLoop;
> } else {
> - if(i == (nSecsToWait1-1)) {
> + if((milliSecondsToWait -1000L < duration) && (duration < milliSecondsToWait)) {
> logger.log(Level.FINE,
> " not all lookups equal");
> }//endif
> }//endif
> } else {//(nEventsReceived != nEventsExpected)
> - if(i == (nSecsToWait1-1)) {
> + if((milliSecondsToWait -1000L < duration) && (duration < milliSecondsToWait)) {
> logger.log(Level.FINE,
> " events expected ("
> +expectedDiscoveredMap.size()
> @@ -1638,13 +1706,8 @@ abstract public class BaseQATest extends
> }//endif
> }//endif(nEventsReceived == nEventsExpected)
> try {
> - long startTime = System.currentTimeMillis();
> - long finishTime = startTime + 1000;
> - long remain = 1000;
> - do {
> - listener.wait(remain); // Wait for discovery for 1000 ms.
> - remain = finishTime - System.currentTimeMillis();
> - } while (remain > 0); //To avoid spurious wakeup
> + listener.discovered.await(1000L, TimeUnit.MILLISECONDS); // Wait for discovery for 1000 ms.
> + duration = System.currentTimeMillis() - startTime;
> } catch (InterruptedException ex) {
> throw new TestException("Interrupted while waiting for discovery", ex);
> }
> @@ -1652,9 +1715,12 @@ abstract public class BaseQATest extends
> showCompInfo = false;//display comparison info only when i = 0
> }//end loop(iLoop)
>
> - }//end sync(listener)
> + } finally {
> + listener.lock.unlock();
> + }
> logger.log(Level.FINE, " DISCOVERY wait period complete");
> - synchronized(listener) {
> + listener.lock.lock();
> + try {
> if(!discoveryComplete) {
> throw new TestException("discovery failed -- "
> +"waited "+nSecsToWait1
> @@ -1670,9 +1736,11 @@ abstract public class BaseQATest extends
> +" discovery event(s) expected, "
> +listener.discoveredMap.size()
> +" discovery event(s) received");
> + } finally {
> + listener.lock.unlock();
> + }
>
> }//end waitForDiscovery
> - } // end sync (listener)
> /** Common code shared by each test that needs to wait for discarded
> * events from the discovery helper utility, and verify that the
> * expected discarded events have indeed arrived.
> @@ -1707,7 +1775,8 @@ abstract public class BaseQATest extends
> boolean discardComplete = false;
> boolean showCompInfo = true;//turn this off after 1st pass thru loop
> Map discardedClone = null;
> - synchronized (listener){
> + listener.lock.lock();
> + try {
> iLoop:
> for(int i=0;i<nSecsToWait1;i++) {
> Map discardedMap = listener.discardedMap;
> @@ -1804,7 +1873,7 @@ abstract public class BaseQATest extends
> long finishTime = startTime + 1000;
> long remain = 1000;
> do {
> - listener.wait(remain); // Wait for discovery for 1000 ms.
> + listener.discarded.await(remain, TimeUnit.MILLISECONDS); // Wait for discovery for 1000 ms.
> remain = finishTime - System.currentTimeMillis();
> } while (remain > 0); //To avoid spurious wakeup
> } catch (InterruptedException ex) {
> @@ -1813,9 +1882,12 @@ abstract public class BaseQATest extends
> //DiscoveryServiceUtil.delayMS(1000);
> showCompInfo = false;//display comparison info only when i = 0
> }//end loop(iLoop)
> - }//end sync(listener)
> + } finally {
> + listener.lock.unlock();
> + }
> logger.log(Level.FINE, " DISCARD wait period complete");
> - synchronized(listener) {
> + listener.lock.lock();
> + try {
> if(!discardComplete) {
> throw new TestException("discard failed -- "
> +"waited "+nSecsToWait1
> @@ -1831,7 +1903,9 @@ abstract public class BaseQATest extends
> +" discard event(s) expected, "
> +listener.discardedMap.size()
> +" discard event(s) received");
> - }//end sync(listener)
> + } finally {
> + listener.lock.unlock();
> + }
> }//end waitForDiscard
>
> /** Common code shared by each test that needs to wait for changed
> @@ -1868,7 +1942,8 @@ abstract public class BaseQATest extends
> boolean changeComplete = false;
> boolean showCompInfo = true;//turn this off after 1st pass thru loop
> Map changedClone = null;
> - synchronized (listener){
> + listener.lock.lock();
> + try {
> iLoop:
> for(int i=0;i<nSecsToWait1;i++) {
> Map changedMap = listener.changedMap;
> @@ -1964,7 +2039,7 @@ abstract public class BaseQATest extends
> long finishTime = startTime + 1000;
> long remain = 1000;
> do {
> - listener.wait(remain); // Wait for discovery for 1000 ms.
> + listener.changed.await(remain, TimeUnit.MILLISECONDS); // Wait for discovery for 1000 ms.
> remain = finishTime - System.currentTimeMillis();
> } while (remain > 0); //To avoid spurious wakeup
> } catch (InterruptedException ex) {
> @@ -1974,9 +2049,12 @@ abstract public class BaseQATest extends
> //DiscoveryServiceUtil.delayMS(1000);
> showCompInfo = false;//display comparison info only when i = 0
> }//end loop(iLoop)
> - }//end sync(listener)
> + } finally {
> + listener.lock.unlock();
> + }
> logger.log(Level.FINE, " CHANGE wait period complete");
> - synchronized(listener) {
> + listener.lock.lock();
> + try {
> if(!changeComplete) {
> throw new TestException("change failed -- "
> +"waited "+nSecsToWait1
> @@ -1992,7 +2070,9 @@ abstract public class BaseQATest extends
> +" change event(s) expected, "
> +listener.changedMap.size()
> +" change event(s) received");
> - }//end sync(listener)
> + } finally {
> + listener.lock.unlock();
> + }
> }//end waitForChange
>
> /** Given two locator-to-groups mappings, this method compares both
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/LookupServices.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/LookupServices.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/LookupServices.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/LookupServices.java Thu Jan 2 02:45:07 2014
> @@ -575,8 +575,9 @@ public class LookupServices {
> if(debugsync) logger.log(Level.FINE,
> " BaseQATest.startLookup - "
> +"sync on lookupList --> released");
> + genMap.put( lookupProxy, memberGroups );
> }//end sync(lookupList)
> - genMap.put( lookupProxy, memberGroups );
> +
> /* Force non-unique groups for manual tests */
> if( (testType == BaseQATest.MANUAL_TEST_REMOTE_COMPONENT)
> || (testType == BaseQATest.MANUAL_TEST_LOCAL_COMPONENT) )
> @@ -605,7 +606,7 @@ public class LookupServices {
> }
> }
> regsToLocGroupsMap.put(lookupProxy,locGroupsPair);
> -
> +
> LocatorsUtil.displayLocator(lookupLocator,
> " locator",Level.FINE);
> String displayGroups = GroupsUtil.toCommaSeparatedStr(memberGroups);
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/DiscardUnreachable.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/DiscardUnreachable.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/DiscardUnreachable.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/DiscardUnreachable.java Thu Jan 2 02:45:07 2014
> @@ -82,7 +82,9 @@ public class DiscardUnreachable extends
> * are examined; so those maps shouldn't be allowed to change
> * they have been examined.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> logger.log(Level.FINE, "terminating each lookup service ...");
> /* Stop announcements & destroy all lookups started in construct */
> terminateAllLookups();
> @@ -95,7 +97,9 @@ public class DiscardUnreachable extends
> mainListener);
> /* Set the expected discard event info */
> mainListener.setLookupsToDiscover(locGroupsNotDiscarded);
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> }
> }
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/GroupsMulticastMonitorReplace.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/GroupsMulticastMonitorReplace.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/GroupsMulticastMonitorReplace.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/GroupsMulticastMonitorReplace.java Thu Jan 2 02:45:07 2014
> @@ -88,7 +88,9 @@ public class GroupsMulticastMonitorRepla
> * examines the contents of those maps. So we don't want those
> * maps to change until setLookupsToDiscover returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> List locGroupsPairList = null;
> /* Replace current groups with new groups to cause discards */
> if(replacementGroups == null) {//use unique generated groups
> @@ -101,7 +103,9 @@ public class GroupsMulticastMonitorRepla
> mainListener.setLookupsToDiscover(locGroupsPairList,
> locatorsToDiscover,
> groupsToDiscover);
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorChange.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorChange.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorChange.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorChange.java Thu Jan 2 02:45:07 2014
> @@ -84,14 +84,18 @@ public class MulticastMonitorChange exte
> * examines the contents of those maps. So we don't want those
> * maps to change until setLookupsToDiscover returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> /* Replace alternate groups to cause changed events */
> List locGroupsPairList = replaceMemberGroups(true);
> /* Set the expected changed event info */
> mainListener.setLookupsToDiscover(locGroupsPairList,
> locatorsToDiscover,
> groupsToDiscover);
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForChange((GroupChangeListener)mainListener);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplace.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplace.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplace.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplace.java Thu Jan 2 02:45:07 2014
> @@ -79,14 +79,18 @@ public class MulticastMonitorReplace ext
> * examines the contents of those maps. So we don't want those
> * maps to change until setLookupsToDiscover returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> /* Replace all groups to cause discarded/changed events */
> List locGroupsPairList = replaceMemberGroups(false);
> /* Set the expected changed event info */
> mainListener.setLookupsToDiscover(locGroupsPairList,
> locatorsToDiscover,
> groupsToDiscover);
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> logger.log(Level.FINE,
> "discarded events arrived as expected, "
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplaceNone.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplaceNone.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplaceNone.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorReplaceNone.java Thu Jan 2 02:45:07 2014
> @@ -69,7 +69,9 @@ public class MulticastMonitorReplaceNone
> * examines the contents of those maps. So we don't want those
> * maps to change until setLookupsToDiscover returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> /* Replace all groups with NO_GROUPS to generate events */
> List locGroupsPairList = replaceMemberGroups
> (DiscoveryGroupManagement.NO_GROUPS);
> @@ -77,7 +79,9 @@ public class MulticastMonitorReplaceNone
> mainListener.setLookupsToDiscover(locGroupsPairList,
> locatorsToDiscover,
> groupsToDiscover);
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> logger.log(Level.FINE,
> "discarded events arrived as expected, "
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorStop.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorStop.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorStop.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorStop.java Thu Jan 2 02:45:07 2014
> @@ -103,14 +103,18 @@ public class MulticastMonitorStop extend
> * examines the contents of those maps. So we don't want those
> * maps to change until setLookupsToDiscover returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> stopAnnouncements();
> /* Replace current groups with new groups to cause discards */
> List locGroupsPairList = replaceMemberGroups(false);
> mainListener.setLookupsToDiscover(locGroupsPairList,
> locatorsToDiscover,
> groupsToDiscover);
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> logger.log(Level.FINE,
> "discarded events arrived as expected, "
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorTerminate.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorTerminate.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorTerminate.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/MulticastMonitorTerminate.java Thu Jan 2 02:45:07 2014
> @@ -72,7 +72,9 @@ public class MulticastMonitorTerminate e
> * are examined; so those maps shouldn't be allowed to change
> * they have been examined.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> terminateAllLookups();//cause discard events to be sent
> /* Since passive discards will NOT occur for those lookups
> * that were discovered by only locator discovery, the
> @@ -84,7 +86,9 @@ public class MulticastMonitorTerminate e
> filterListByGroups(getInitLookupsToStart(),
> groupsToDiscover);
> mainListener.setDiscardEventInfo(discoveredByGroupsList);
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/RemoveGroupsSome.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/RemoveGroupsSome.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/RemoveGroupsSome.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/RemoveGroupsSome.java Thu Jan 2 02:45:07 2014
> @@ -78,17 +78,10 @@ public class RemoveGroupsSome extends Di
> public void run() throws Exception {
> super.run();
> setGroupsToRemove(getInitLookupsToStart(),alternateRemoval);
> - /* Must sync on listener since Discovered/Discarded/Changed Map
> - * will change as events arrive, and setLookupsToDiscover
> - * examines the contents of those maps. So we don't want those
> - * maps to change until setLookupsToDiscover returns.
> - */
> - synchronized(mainListener) {
> - /* Set the expected discarded event info */
> - mainListener.setLookupsToDiscover(getInitLookupsToStart(),
> - locatorsToDiscover,
> - newGroupsToDiscover);
> - }//end sync(mainListener)
> + /* Set the expected discarded event info */
> + mainListener.setLookupsToDiscover(getInitLookupsToStart(),
> + locatorsToDiscover,
> + newGroupsToDiscover);
> logger.log(Level.FINE, "remove groups to discover -- ");
> if((groupsToRemove != null) && (groupsToRemove.length<=0)) {
> logger.log(Level.FINE, " NO_GROUPS");
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/SetGroupsReplaceSome.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/SetGroupsReplaceSome.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/SetGroupsReplaceSome.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoverymanager/SetGroupsReplaceSome.java Thu Jan 2 02:45:07 2014
> @@ -77,17 +77,10 @@ public class SetGroupsReplaceSome extend
> public void run() throws Exception {
> super.run();
> setNewGroups(getInitLookupsToStart(),alternateReplacement);
> - /* Must sync on listener since Discovered/Discarded/Changed Map
> - * will change as events arrive, and setLookupsToDiscover
> - * examines the contents of those maps. So we don't want those
> - * maps to change until setLookupsToDiscover returns.
> - */
> - synchronized(mainListener) {
> - /* Set the expected discarded event info */
> - mainListener.setLookupsToDiscover(getInitLookupsToStart(),
> - locatorsToDiscover,
> - newGroupsToDiscover);
> - }//end sync(mainListener)
> + /* Set the expected discarded event info */
> + mainListener.setLookupsToDiscover(getInitLookupsToStart(),
> + locatorsToDiscover,
> + newGroupsToDiscover);
> logger.log(Level.FINE, "set new groups to discover -- ");
> if((newGroupsToDiscover != null)&&(newGroupsToDiscover.length<=0)){
> logger.log(Level.FINE, " NO_GROUPS");
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/Register.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/Register.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/Register.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/Register.java Thu Jan 2 02:45:07 2014
> @@ -23,6 +23,7 @@ import java.util.logging.Level;
> import com.sun.jini.qa.harness.QAConfig;
> import com.sun.jini.qa.harness.Test;
> import com.sun.jini.qa.harness.TestException;
> +import java.util.List;
>
> import net.jini.lookup.JoinManager;
>
> @@ -74,8 +75,9 @@ public class Register extends AbstractBa
> /* Verify that the lookups were discovered */
> logger.log(Level.FINE, "verifying the lookup "
> +"service(s) are discovered ...");
> - mainListener.setLookupsToDiscover(getLookupsStarted(),
> - toGroupsArray(getLookupsStarted()));
> + List<LocatorGroupsPair> lookupsStarted = getLookupsStarted();
> + mainListener.setLookupsToDiscover(lookupsStarted,
> + toGroupsArray(lookupsStarted));
> waitForDiscovery(mainListener);
> verifyJoin();
> logger.log(Level.FINE, "join manager successfully registered "
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/RegisterAttributes.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/RegisterAttributes.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/RegisterAttributes.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/joinmanager/RegisterAttributes.java Thu Jan 2 02:45:07 2014
> @@ -37,7 +37,7 @@ public class RegisterAttributes extends
> * <p>
> * Verifies that the test service input to the join manager constructor
> * is registered with all lookup services the join manager is configured
> - * to discover (through its <code>DiscoveryManagemen</code>t instance);
> + * to discover (through its <code>DiscoveryManagement</code> instance);
> * additionally, verifies that the test service's corresponding set of
> * attributes are associated with the test service in each lookup service
> * in which that test service is registered.
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/locatordiscovery/DiscardUnreachable.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/locatordiscovery/DiscardUnreachable.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/locatordiscovery/DiscardUnreachable.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/locatordiscovery/DiscardUnreachable.java Thu Jan 2 02:45:07 2014
> @@ -86,7 +86,9 @@ public class DiscardUnreachable extends
> * the contents of those maps. So we don't want those maps to
> * change until setLookupsToDiscover returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> logger.log(Level.FINE, "terminating each lookup service ...");
> /* Stop announcements & destroy all lookups started in construct */
> terminateAllLookups();
> @@ -101,7 +103,9 @@ public class DiscardUnreachable extends
> * for anything that we failed to discard)
> */
> mainListener.setLookupsToDiscover(locGroupsNotDiscarded);
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/ConstructorDups.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/ConstructorDups.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/ConstructorDups.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/ConstructorDups.java Thu Jan 2 02:45:07 2014
> @@ -29,6 +29,7 @@ import net.jini.discovery.DiscoveryGroup
> import net.jini.discovery.LookupDiscovery;
>
> import java.util.ArrayList;
> +import java.util.List;
>
> /**
> * This class verifies that the <code>LookupDiscovery</code> utility
> @@ -55,9 +56,8 @@ import java.util.ArrayList;
> */
> public class ConstructorDups extends AbstractBaseTest {
>
> - protected ArrayList newLookups = new ArrayList(11);
> - protected String[] dupGroups = DiscoveryGroupManagement.NO_GROUPS;
> - protected LookupDiscovery newLD = null;
> + protected final ArrayList newLookups = new ArrayList(11);
> + protected volatile String[] dupGroups = DiscoveryGroupManagement.NO_GROUPS;
>
> /** Performs actions necessary to prepare for execution of the
> * current test (refer to the description of this method in the
> @@ -66,16 +66,15 @@ public class ConstructorDups extends Abs
> public Test construct(QAConfig sysConfig) throws Exception {
> super.construct(sysConfig);
> /* Create a set of groups to discover that contain duplicates */
> - int len1 = getAllLookupsToStart().size();
> + List<LocatorGroupsPair> lookupsToStart = getAllLookupsToStart();
> + int len1 = lookupsToStart.size();
> int len2 = 2*len1;
> for(int i=0;i<len1;i++) {
> - LocatorGroupsPair pair
> - = (LocatorGroupsPair)getAllLookupsToStart().get(i);
> + LocatorGroupsPair pair = lookupsToStart.get(i);
> newLookups.add(i,pair);
> }//end loop
> for(int i=len1;i<len2;i++) {
> - LocatorGroupsPair pair
> - = (LocatorGroupsPair)getAllLookupsToStart().get(i-len1);
> + LocatorGroupsPair pair = lookupsToStart.get(i-len1);
> newLookups.add(i,pair);
> }//end loop
> dupGroups = toGroupsArray(newLookups);
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/DiscardUnreachable.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/DiscardUnreachable.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/DiscardUnreachable.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/DiscardUnreachable.java Thu Jan 2 02:45:07 2014
> @@ -90,7 +90,9 @@ public class DiscardUnreachable extends
> * the contents of those maps. So we don't want those maps to
> * change until setLookupsToDiscover returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> logger.log(Level.FINE,
> "terminating each lookup service ...");
> /* Stop announcements & destroy all lookups started in construct */
> @@ -107,7 +109,9 @@ public class DiscardUnreachable extends
> * for anything that we failed to discard)
> */
> mainListener.setLookupsToDiscover(locGroupsNotDiscarded);
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorChange.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorChange.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorChange.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorChange.java Thu Jan 2 02:45:07 2014
> @@ -102,7 +102,9 @@ public class MulticastMonitorChange exte
> * examines the contents of those maps. So we don't want those
> * maps to change until setLookupsToDiscover returns.
> */
> - synchronized(listenerToUse) {
> + LookupListener listenerToUse = this.listenerToUse;
> + listenerToUse.lock.lock();
> + try {
> List locGroupsPairList = null;
> /* Replace groups with new groups to cause changed events */
> locGroupsPairList = replaceMemberGroups(alternateReplacements);
> @@ -110,7 +112,9 @@ public class MulticastMonitorChange exte
> listenerToUse.setLookupsToDiscover
> (locGroupsPairList,
> groupsToDiscover);
> - }//end sync(mainListener)
> + } finally {
> + listenerToUse.lock.unlock();
> + }
> waitForChange((GroupChangeListener)listenerToUse);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorReplace.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorReplace.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorReplace.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorReplace.java Thu Jan 2 02:45:07 2014
> @@ -98,7 +98,9 @@ public class MulticastMonitorReplace ext
> * examines the contents of those maps. So we don't want those
> * maps to change until setLookupsToDiscover returns.
> */
> - synchronized(listenerToUse) {
> + LookupListener listenerToUse = this.listenerToUse;
> + listenerToUse.lock.lock();
> + try {
> List locGroupsPairList = null;
> /* Replace current groups with new groups to cause discards */
> if(replacementGroups == null) {//use unique generated groups
> @@ -111,7 +113,9 @@ public class MulticastMonitorReplace ext
> listenerToUse.setLookupsToDiscover
> (locGroupsPairList,
> toGroupsArray(getInitLookupsToStart()));
> - }//end sync(listenerToUse)
> + } finally {
> + listenerToUse.lock.unlock();
> + }
> waitForDiscard(listenerToUse);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStop.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStop.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStop.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStop.java Thu Jan 2 02:45:07 2014
> @@ -94,10 +94,14 @@ public class MulticastMonitorStop extend
> * changes the contents of those maps. So we don't want those
> * maps to change due to events until clearAllEventInfo returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> stopAnnouncements();
> mainListener.clearAllEventInfo();//expect no discard events
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStopReplace.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStopReplace.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStopReplace.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorStopReplace.java Thu Jan 2 02:45:07 2014
> @@ -97,7 +97,9 @@ public class MulticastMonitorStopReplace
> * examines the contents of those maps. So we don't want those
> * maps to change until setLookupsToDiscover returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> stopAnnouncements();
> /* Replace current groups with new groups to cause discards */
> List locGroupsPairList = replaceMemberGroups();
> @@ -105,7 +107,9 @@ public class MulticastMonitorStopReplace
> mainListener.setLookupsToDiscover
> (locGroupsPairList,
> toGroupsArray(getInitLookupsToStart()));
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorTerminate.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorTerminate.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorTerminate.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/lookupdiscovery/MulticastMonitorTerminate.java Thu Jan 2 02:45:07 2014
> @@ -105,10 +105,14 @@ public class MulticastMonitorTerminate e
> * examines the contents of those maps. So we don't want those
> * maps to change until setLookupsToDiscover returns.
> */
> - synchronized(mainListener) {
> + LookupListener mainListener = this.mainListener;
> + mainListener.lock.lock();
> + try {
> terminateAllLookups();//cause discard events to be sent
> mainListener.setLookupsToDiscover(new java.util.ArrayList(1));
> - }//end sync(mainListener)
> + } finally {
> + mainListener.lock.unlock();
> + }
> waitForDiscard(mainListener);
> }//end run
>
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/LocalLease.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/LocalLease.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/LocalLease.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/renewalmanager/LocalLease.java Thu Jan 2 02:45:07 2014
> @@ -36,6 +36,8 @@ import net.jini.core.lease.LeaseDeniedEx
> import net.jini.core.lease.UnknownLeaseException;
>
> import com.sun.jini.test.share.OurAbstractLeaseMap;
> +import java.util.logging.Level;
> +import java.util.logging.Logger;
>
> /**
> * A lease implementation that is completely local for use in some of the
> @@ -141,9 +143,15 @@ class LocalLease implements Lease {
> }
>
> // Inherit java doc from super type
> - public void cancel() throws RemoteException, UnknownLeaseException {
> - // Simulate blocking remote communications
> - Thread.yield();
> + public synchronized void cancel() throws RemoteException, UnknownLeaseException {
> + try {
> + // Simulate blocking remote communications
> + Thread.sleep(10000L);
> + } catch (InterruptedException ex) {
> + RemoteException e = new RemoteException();
> + e.initCause(ex);
> + throw e;
> + }
> }
>
> protected synchronized void renewWork(long duration)
>
> Modified: river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/config/Config.java
> URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/config/Config.java?rev=1554723&r1=1554722&r2=1554723&view=diff
> ==============================================================================
> --- river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/config/Config.java (original)
> +++ river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/config/Config.java Thu Jan 2 02:45:07 2014
> @@ -86,8 +86,8 @@ public class Config {
> * @see #getNonNullEntry(Configuration, String, String, Class, Object,
> * Object)
> */
> - public static Object getNonNullEntry(Configuration config,
> - String component, String name, Class type)
> + public static <T> T getNonNullEntry(Configuration config,
> + String component, String name, Class<T> type)
> throws ConfigurationException
> {
> return getNonNullEntry(config, component, name, type,
> @@ -128,8 +128,8 @@ public class Config {
> * @see #getNonNullEntry(Configuration, String, String, Class, Object,
> * Object)
> */
> - public static Object getNonNullEntry(Configuration config,
> - String component, String name, Class type, Object defaultValue)
> + public static <T> T getNonNullEntry(Configuration config,
> + String component, String name, Class<T> type, Object defaultValue)
> throws ConfigurationException
> {
> return getNonNullEntry(config, component, name, type, defaultValue,
> @@ -177,15 +177,15 @@ public class Config {
> * @see #getNonNullEntry(Configuration, String, String, Class, Object,
> * Object)
> */
> - public static Object getNonNullEntry(Configuration config,
> - String component, String name, Class type, Object defaultValue,
> + public static <T> T getNonNullEntry(Configuration config,
> + String component, String name, Class<T> type, Object defaultValue,
> Object data)
> throws ConfigurationException
> {
> if (defaultValue == null)
> throw new NullPointerException("defaultValue cannot be null");
>
> - final Object result = config.getEntry(component, name, type,
> + final T result = (T) config.getEntry(component, name, type,
> defaultValue, data);
>
> if (result == null) {
>
>