Author: peter_firmstone
Date: Thu May 23 13:35:41 2013
New Revision: 1485700

URL: http://svn.apache.org/r1485700
Log:
River-420 Fixes for unsafe publication by exporting during construction.

The low hanging fruit from the qa suite.

Modified:
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/fiddler/ProxyToString.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/AddRenewRemoveTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/BatchRenewTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/ExpiredLeaseTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseBackEndImpl.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseExpirationTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LocalLease.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoteListener.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoveExactlyOneTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewAtTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewalFailureTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/ARemoteInterfaceImpl.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/JavaSpaceAuditor.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MatchTestBase.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MonitoredSpaceListener.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/NotifyTestUtil.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/TestSpaceListener.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/notify/ThrowRuntimeException.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/DiscoveryServiceUtil.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RememberingRemoteListener.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RemoteListener.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/AbstractBaseTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLease.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLeaseMap.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLease.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLeaseMap.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/NotifyCounter.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/ParticipantImpl.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TestEventListener05.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeIfExistsTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeIfExistsTest.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeTest.java

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/fiddler/ProxyToString.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/fiddler/ProxyToString.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/fiddler/ProxyToString.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/fiddler/ProxyToString.java
 Thu May 23 13:35:41 2013
@@ -78,10 +78,11 @@ public class ProxyToString extends Abstr
                 fiddlerAdminProxy = (FiddlerAdmin)admin;
             }//endif
         }//endif
-
-        fiddlerRegistration = DiscoveryServiceUtil.getRegistration
+        DiscoveryServiceUtil.BasicEventListener listener = new 
DiscoveryServiceUtil.BasicEventListener();
+        listener.export();
+        fiddlerRegistration = DiscoveryServiceUtil.getRegistration 
                                (fiddlerProxy,
-                                new DiscoveryServiceUtil.BasicEventListener());
+                                listener);
 
         fiddlerLease = getPreparedLease(fiddlerRegistration);
         return this;

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/AddRenewRemoveTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/AddRenewRemoveTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/AddRenewRemoveTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/AddRenewRemoveTest.java
 Thu May 23 13:35:41 2013
@@ -103,6 +103,7 @@ public class AddRenewRemoveTest extends 
        final long now = System.currentTimeMillis();
 
        final LeaseBackEndImpl home = new LeaseBackEndImpl(1);
+        home.export();
        final long initExp = now + renewGrant;
        final RenewingOwner owner = new RenewingOwner(initExp, renewCount, 
                                                    renewGrant,

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/BatchRenewTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/BatchRenewTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/BatchRenewTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/BatchRenewTest.java
 Thu May 23 13:35:41 2013
@@ -132,6 +132,7 @@ public class BatchRenewTest extends Test
        // Create the object that will serve as the landlord
        final BaseOwner owners[] = new BaseOwner[15];
        final LeaseBackEndImpl home = new LeaseBackEndImpl(owners.length);
+        home.export();
        int j = 0;
 
        // Three Arg renewFors

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/ExpiredLeaseTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/ExpiredLeaseTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/ExpiredLeaseTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/ExpiredLeaseTest.java
 Thu May 23 13:35:41 2013
@@ -93,6 +93,7 @@ public class ExpiredLeaseTest extends Te
 
        // Register for failure events
        final OurListener listener = new OurListener();
+        listener.export();
        final MarshalledObject handback = new MarshalledObject(new Long(347));
        EventRegistration reg = 
            set.setRenewalFailureListener(listener, handback);

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseBackEndImpl.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseBackEndImpl.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseBackEndImpl.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseBackEndImpl.java
 Thu May 23 13:35:41 2013
@@ -34,6 +34,7 @@ import java.io.Serializable;
 
 import com.sun.jini.qa.harness.QATestEnvironment;
 import com.sun.jini.qa.harness.QAConfig;
+import java.rmi.server.ExportException;
 
 import net.jini.export.Exporter;
 import net.jini.config.Configuration;
@@ -61,7 +62,9 @@ public class LeaseBackEndImpl implements
     private int idGen = 0;
 
     /** Our stub */
-    final private LeaseBackEnd stub;
+    private LeaseBackEnd stub;
+    
+    private final Exporter exporter;
 
     /** Total number of calls to renew */
     private long renewCalls;
@@ -92,10 +95,14 @@ public class LeaseBackEndImpl implements
        } catch (ConfigurationException e) {
            throw new RemoteException("Configuration problem", e);
        }
-       stub = (LeaseBackEnd)exporter.export(this);
+       this.exporter = exporter;
+    }
+    
+    public synchronized void export() throws ExportException{
+        stub = (LeaseBackEnd)exporter.export(this);
     }
 
-    public Object writeReplace() throws ObjectStreamException {
+    public synchronized Object writeReplace() throws ObjectStreamException {
        return stub;
     }
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseExpirationTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseExpirationTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseExpirationTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LeaseExpirationTest.java
 Thu May 23 13:35:41 2013
@@ -145,6 +145,7 @@ public class LeaseExpirationTest extends
        addLease(setLease, true);
 
        listener = new OurListener(setLease, setRenewals);
+        listener.export();
 
        // If we need to register for warning events
        if (shouldRegister) {       
@@ -175,6 +176,7 @@ public class LeaseExpirationTest extends
 
        // Create owners and leases
        final LeaseBackEndImpl home = new LeaseBackEndImpl(leaseCount);
+        home.export();
        for (int i = 0; i < leaseCount; i++) {
            final long now = System.currentTimeMillis();
            final long initExp = now + renewGrant;

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LocalLease.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LocalLease.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LocalLease.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/LocalLease.java
 Thu May 23 13:35:41 2013
@@ -45,6 +45,9 @@ import net.jini.core.constraint.MethodCo
 
 import com.sun.jini.qa.harness.QATestEnvironment;
 import com.sun.jini.qa.harness.QAConfig;
+import java.rmi.server.ExportException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  * A lease implementation that is completely local for use in some of the 
@@ -82,14 +85,24 @@ class LocalLease implements Lease, Seria
      */
     private long id;
 
-    private ProxyTrustImpl pt = new ProxyTrustImpl();
+    private ProxyTrustImpl pt = getProxyTrust();
+    
+    private static ProxyTrustImpl getProxyTrust() {
+        ProxyTrustImpl proxy = new ProxyTrustImpl();
+        try {
+            proxy.export();
+        } catch (ExportException ex) {
+            throw new RuntimeException("Problem creating verifier", ex);
+        }
+        return proxy;
+    }
 
     public static LocalLease getLocalLease(long initExp, 
                                           long renewLimit, 
                                           long bundle, 
                                           long id) 
     {
-       ProxyTrustImpl pt = new ProxyTrustImpl();
+       ProxyTrustImpl pt = getProxyTrust();
        if (pt.getProxy() instanceof RemoteMethodControl) {
            return new ConstrainableLocalLease(initExp, renewLimit, bundle, id, 
pt);
        } else {
@@ -103,7 +116,7 @@ class LocalLease implements Lease, Seria
                                           long id,
                                           long count) 
     {
-       ProxyTrustImpl pt = new ProxyTrustImpl();
+       ProxyTrustImpl pt = getProxyTrust();
        if (pt.getProxy() instanceof RemoteMethodControl) {
            return new ConstrainableFailingLocalLease(initExp, renewLimit, 
bundle, id, count, pt);
        } else {
@@ -117,7 +130,7 @@ class LocalLease implements Lease, Seria
                                           long id,
                                           long count) 
     {
-       ProxyTrustImpl pt = new ProxyTrustImpl();
+       ProxyTrustImpl pt = getProxyTrust();
        if (pt.getProxy() instanceof RemoteMethodControl) {
            return new ConstrainableDestructingLocalLease(initExp, renewLimit, 
bundle, id, count, pt);
        } else {
@@ -353,7 +366,8 @@ class LocalLease implements Lease, Seria
     public static class ProxyTrustImpl
        implements ProxyTrust, ServerProxyTrust, Serializable
     {
-       ProxyTrust proxy;
+       private ProxyTrust proxy;
+        private Exporter exporter;
 
        public ProxyTrustImpl() {
            try {
@@ -365,13 +379,20 @@ class LocalLease implements Lease, Seria
                if (exporter == null) {
                    return; // configuration isn't secure
                }
-               proxy = (ProxyTrust) exporter.export(this);
+                this.exporter = exporter;
+               
            } catch (Exception e) {
                throw new RuntimeException("Problem creating verifier", e);
            }
        }
+        
+        public synchronized void export() throws ExportException {
+            if (exporter != null){
+                proxy = (ProxyTrust) exporter.export(this);
+            }
+        }
 
-       public ProxyTrust getProxy() {
+       public synchronized ProxyTrust getProxy() {
            return proxy;
        }
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoteListener.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoteListener.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoteListener.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoteListener.java
 Thu May 23 13:35:41 2013
@@ -36,6 +36,7 @@ import java.io.Serializable;
 
 import com.sun.jini.qa.harness.QATestEnvironment;
 import com.sun.jini.qa.harness.QAConfig;
+import java.rmi.server.ExportException;
 
 /**
  * Remote listener impl to be sub-classed by a class which actually does work
@@ -44,20 +45,27 @@ class RemoteListener
     implements RemoteEventListener, ServerProxyTrust, Serializable
 {
     private Object proxy;
+    private final Exporter exporter;
 
     RemoteListener() throws RemoteException {
+        Exporter exporter = null;
        try {
-           Exporter exporter = QAConfig.getDefaultExporter();
+           exporter = QAConfig.getDefaultExporter();
            Configuration c = QAConfig.getConfig().getConfiguration();
            if (c instanceof com.sun.jini.qa.harness.QAConfiguration) {
                exporter = (Exporter) c.getEntry("test",
                                                 "normListenerExporter", 
                                                 Exporter.class);
            }
-           proxy = exporter.export(this); 
+           
        } catch (ConfigurationException e) {
            throw new RemoteException("Configuration problem", e);
        }
+        this.exporter = exporter;
+    }
+    
+    public synchronized void export() throws ExportException{
+        proxy = exporter.export(this); 
     }
 
     public Object writeReplace() throws ObjectStreamException {

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoveExactlyOneTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoveExactlyOneTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoveExactlyOneTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RemoveExactlyOneTest.java
 Thu May 23 13:35:41 2013
@@ -159,7 +159,9 @@ public class RemoveExactlyOneTest extend
 
        // Create and register listeners
        warningListener = new WarningListener(failureFails?null:throwThis);
+        warningListener.export();
        failureListener = new BaseListener(failureFails?throwThis:null);
+        failureListener.export();
 
        MarshalledObject handback = new MarshalledObject(new Long(3));
        logger.log(Level.FINER, "setting expiration warning listener");

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewAtTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewAtTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewAtTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewAtTest.java
 Thu May 23 13:35:41 2013
@@ -117,6 +117,7 @@ public class RenewAtTest extends TestBas
        // Create the object that will serve as the landlord
        final RenewAtOwner owners[] = new RenewAtOwner[8];
        final LeaseBackEndImpl home = new LeaseBackEndImpl(owners.length);
+        home.export();
        int j = 0;
 
        // Desired exp before end of test, desired renewal < max grant

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewalFailureTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewalFailureTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewalFailureTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/norm/RenewalFailureTest.java
 Thu May 23 13:35:41 2013
@@ -132,6 +132,7 @@ public class RenewalFailureTest extends 
 
        // Register for failure events
        final OurListener listener = new OurListener();
+        listener.export();
        final MarshalledObject handback = new MarshalledObject(new Long(347));
        EventRegistration reg = 
            set.setRenewalFailureListener(listener, handback);
@@ -157,6 +158,7 @@ public class RenewalFailureTest extends 
        logger.log(Level.INFO, "Creating leases and adding them to set");
 
        home = new LeaseBackEndImpl(17);
+        home.export();
        createAndRegisterLease(
            new RemoteException("Synthetic RemoteException"), false, set);
        createAndRegisterLease(

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/ARemoteInterfaceImpl.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/ARemoteInterfaceImpl.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/ARemoteInterfaceImpl.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/ARemoteInterfaceImpl.java
 Thu May 23 13:35:41 2013
@@ -27,6 +27,7 @@ import net.jini.export.Exporter;
 import net.jini.security.TrustVerifier;
 import net.jini.security.proxytrust.ServerProxyTrust;
 import java.io.ObjectStreamException;
+import java.rmi.server.ExportException;
 
 /**
  *
@@ -39,6 +40,7 @@ public class ARemoteInterfaceImpl
 {
     private String rtn;
     private Object proxy;
+    private Exporter exporter;
 
     public ARemoteInterfaceImpl(Configuration c, String s) throws 
RemoteException {
        Exporter exporter = QAConfig.getDefaultExporter();
@@ -51,15 +53,19 @@ public class ARemoteInterfaceImpl
                throw new RemoteException("Bad configuration", e);
            }
        }
-       proxy = exporter.export(this);
+       this.exporter = exporter;
         rtn = s;
     }
+    
+    public synchronized void export() throws ExportException {
+        proxy = exporter.export(this);
+    }
 
-    public Object writeReplace() throws ObjectStreamException {
+    public synchronized Object writeReplace() throws ObjectStreamException {
         return proxy;
     }
 
-    public TrustVerifier getProxyVerifier() {
+    public synchronized TrustVerifier getProxyVerifier() {
        return new BasicProxyTrustVerifier(proxy);
     }
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/JavaSpaceAuditor.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/JavaSpaceAuditor.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/JavaSpaceAuditor.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/JavaSpaceAuditor.java
 Thu May 23 13:35:41 2013
@@ -418,7 +418,7 @@ public class JavaSpaceAuditor implements
                                                      tmpl, 
                                                     listener, 
                                                     handback);
-
+            passThrough.export();
             /*
              * Note if ether of these would happen the space.notify call
              * would throw an IllegalArgumentException

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MatchTestBase.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MatchTestBase.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MatchTestBase.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MatchTestBase.java
 Thu May 23 13:35:41 2013
@@ -83,6 +83,7 @@ public abstract class MatchTestBase exte
            new ARemoteInterfaceImpl(getConfig().getConfiguration(),
                                     "The quick brown fox"
                                     + " jumps over the lazy dog");
+        ((ARemoteInterfaceImpl)aRemoteMatch.aRI).export();
        writeList.add(aRemoteMatch);
         ChildOfStringMatch aChildStringEntry = new ChildOfStringMatch(true);
         aChildStringEntry.aString = "BAR";

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MonitoredSpaceListener.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MonitoredSpaceListener.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MonitoredSpaceListener.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/MonitoredSpaceListener.java
 Thu May 23 13:35:41 2013
@@ -55,6 +55,12 @@ import net.jini.security.proxytrust.Serv
 import com.sun.jini.proxy.BasicProxyTrustVerifier;
 
 import com.sun.jini.qa.harness.QAConfig;
+import java.rmi.server.ExportException;
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 public class MonitoredSpaceListener
     implements RemoteEventListener, ServerProxyTrust, Serializable
@@ -110,6 +116,9 @@ public class MonitoredSpaceListener
                                            // Registration object
     private boolean wrongSource = false; // event with the wrong source
     private boolean early = false; // event before seq num in registation
+    
+    private final Exporter exporter;
+    private final AccessControlContext acContext;
 
     /**
      * Create a <code>MonitoredSpaceListener</code> that will pass the
@@ -135,7 +144,8 @@ public class MonitoredSpaceListener
                                                    "spaceLoginContext",
                                                    LoginContext.class);
            }
-           proxy = exporter.export(this);
+            acContext = AccessController.getContext();
+            this.exporter = exporter;
            if (context != null) {
                context.login();
            }
@@ -148,12 +158,27 @@ public class MonitoredSpaceListener
         this.client = client;
         handBack = regObject;
     }
+    
+    public synchronized void export() throws ExportException {
+        try {
+            proxy = AccessController.doPrivileged(new 
PrivilegedExceptionAction(){
+
+                @Override
+                public Object run() throws ExportException {
+                    return exporter.export(MonitoredSpaceListener.this);
+                }
+                
+            }, acContext);
+        } catch (PrivilegedActionException ex) {
+            throw (ExportException) ex.getException();
+        }
+    }
 
-    public Object writeReplace() throws ObjectStreamException {
+    public synchronized Object writeReplace() throws ObjectStreamException {
         return proxy;
     }
 
-    public TrustVerifier getProxyVerifier() {
+    public synchronized TrustVerifier getProxyVerifier() {
        return new BasicProxyTrustVerifier(proxy);
     }
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/NotifyTestUtil.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/NotifyTestUtil.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/NotifyTestUtil.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/NotifyTestUtil.java
 Thu May 23 13:35:41 2013
@@ -81,11 +81,13 @@ class NotifyTestUtil {
     void registerForNotify(Entry tmpl)
             throws TransactionException, RemoteException, java.io.IOException {
        try {
+            TestSpaceListener tsl = 
+                    new TestSpaceListener(config.getConfiguration(), tmpl);
+            tsl.export();
            EventRegistration er = 
                space.notify(tmpl,
                             null, 
-                            new TestSpaceListener(config.getConfiguration(), 
-                                                  tmpl),
+                            tsl,
                             Lease.ANY, 
                             new MarshalledObject(tmpl));
            QAConfig c = QAConfig.getConfig();

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/TestSpaceListener.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/TestSpaceListener.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/TestSpaceListener.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/matching/TestSpaceListener.java
 Thu May 23 13:35:41 2013
@@ -41,6 +41,7 @@ import net.jini.security.proxytrust.Serv
 import com.sun.jini.proxy.BasicProxyTrustVerifier;
 
 import com.sun.jini.qa.harness.QAConfig;
+import java.rmi.server.ExportException;
 
 /**
  * Simple listener that prints message to log when an event is received
@@ -53,6 +54,7 @@ class TestSpaceListener
 
     final private Entry tmpl;
     private Object proxy;
+    private final Exporter exporter;
 
     /**
      * Create a new TestSpaceListener that dumps to the pasted stream
@@ -64,18 +66,22 @@ class TestSpaceListener
                exporter =
                (Exporter) c.getEntry("test", "outriggerListenerExporter", 
Exporter.class);
            }
-           proxy = exporter.export(this);
+           this.exporter = exporter;
        } catch (ConfigurationException e) {
            throw new IllegalArgumentException("Bad configuration" + e);
        }
         this.tmpl = tmpl;
     }
+    
+    public synchronized void export() throws ExportException {
+        proxy = exporter.export(this);
+    }
 
-    public Object writeReplace() throws ObjectStreamException {
+    public synchronized Object writeReplace() throws ObjectStreamException {
         return proxy;
     }
 
-    public TrustVerifier getProxyVerifier() {
+    public synchronized TrustVerifier getProxyVerifier() {
        return new BasicProxyTrustVerifier(proxy);
     }
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/notify/ThrowRuntimeException.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/notify/ThrowRuntimeException.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/notify/ThrowRuntimeException.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/notify/ThrowRuntimeException.java
 Thu May 23 13:35:41 2013
@@ -50,6 +50,7 @@ import net.jini.security.proxytrust.Serv
 
 import com.sun.jini.proxy.BasicProxyTrustVerifier;
 import com.sun.jini.qa.harness.Test;
+import java.rmi.server.ExportException;
 
 /**
  * Check to see how space deals with RuntimeException being thrown by
@@ -81,6 +82,7 @@ public class ThrowRuntimeException exten
         private long lastSeqNum = -1;
         final private boolean throwRuntime;
        private Object proxy;
+        private final Exporter exporter;
 
         /** Simple constructor */
         Listener(Configuration c, 
@@ -92,18 +94,22 @@ public class ThrowRuntimeException exten
                    exporter =
                    (Exporter) c.getEntry("test", "outriggerListenerExporter", 
Exporter.class);
                }
-               proxy = exporter.export(this);
+               this.exporter = exporter;
            } catch (ConfigurationException e) {
                throw new RemoteException("Bad configuration", e);
            }
             this.throwRuntime = throwRuntime;
         }
+        
+        public synchronized void export() throws ExportException{
+            proxy = exporter.export(this);
+        }
 
-        public Object writeReplace() throws ObjectStreamException {
+        public synchronized Object writeReplace() throws ObjectStreamException 
{
            return proxy;
        }
 
-       public TrustVerifier getProxyVerifier() {
+       public synchronized TrustVerifier getProxyVerifier() {
            return new BasicProxyTrustVerifier(proxy);
        }
 
@@ -111,7 +117,7 @@ public class ThrowRuntimeException exten
          * Return the sequence number of the last event received, if
          * no event has been received return -1
          */
-        long lastEvent() {
+        synchronized long lastEvent() {
             return lastSeqNum;
         }
 
@@ -158,7 +164,9 @@ public class ThrowRuntimeException exten
             JavaSpace.class});
        Configuration c = getConfig().getConfiguration();
         final Listener listener1 = new Listener(c, true);
+        listener1.export();
         final Listener listener2 = new Listener(c, false);
+        listener2.export();
         final JavaSpace space = (JavaSpace) services[0];
         final Entry aEntry = new UninterestingEntry();
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/DiscoveryServiceUtil.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/DiscoveryServiceUtil.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/DiscoveryServiceUtil.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/DiscoveryServiceUtil.java
 Thu May 23 13:35:41 2013
@@ -46,6 +46,7 @@ import net.jini.security.TrustVerifier;
 import net.jini.security.proxytrust.ServerProxyTrust;
 
 import com.sun.jini.proxy.BasicProxyTrustVerifier;
+import java.rmi.server.ExportException;
 
 /**
  * This class contains a set of static methods that provide general-purpose
@@ -63,7 +64,7 @@ public class DiscoveryServiceUtil {
     public static class BasicEventListener 
        implements RemoteEventListener, ServerProxyTrust, Serializable 
     {
-
+        private final Exporter exporter;
        private Object proxy;
 
         public BasicEventListener() throws RemoteException {
@@ -79,9 +80,11 @@ public class DiscoveryServiceUtil {
                    throw new RemoteException("Configuration problem", e);
                }
            }
-            synchronized (this){
-                proxy = exporter.export(this);
-            }
+            this.exporter = exporter;
+        }
+        
+        public synchronized void export() throws ExportException{
+            proxy = exporter.export(this);
         }
 
        private synchronized Object writeReplace() throws ObjectStreamException 
{

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RememberingRemoteListener.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RememberingRemoteListener.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RememberingRemoteListener.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RememberingRemoteListener.java
 Thu May 23 13:35:41 2013
@@ -48,8 +48,8 @@ public class RememberingRemoteListener e
     /**
      * holds the events and their arrival times
      */
-    private ArrayList events = new ArrayList();
-    private ArrayList arrivalTimes = new ArrayList();
+    private final ArrayList events = new ArrayList();
+    private final ArrayList arrivalTimes = new ArrayList();
 
     /**
      * Constructor requiring an exporter to export the listener.
@@ -61,7 +61,7 @@ public class RememberingRemoteListener e
      */ 
     public RememberingRemoteListener(Exporter exporter) throws RemoteException 
{
        super(exporter);
-    }
+    } 
     
     // inherit javadoc from parent class
     public synchronized void notify(RemoteEvent theEvent) 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RemoteListener.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RemoteListener.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RemoteListener.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/RemoteListener.java
 Thu May 23 13:35:41 2013
@@ -30,6 +30,8 @@ import com.sun.jini.proxy.BasicProxyTrus
 
 import java.io.ObjectStreamException;
 import java.io.Serializable;
+import java.io.WriteAbortedException;
+import java.rmi.server.ExportException;
 
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -47,14 +49,24 @@ class RemoteListener implements RemoteEv
     protected static Logger logger = 
         Logger.getLogger("com.sun.jini.qa.harness");
 
-    protected Object proxy;
+    private Object proxy;
+    private final Exporter exporter;
 
     RemoteListener(Exporter exporter) throws RemoteException {
-       proxy = exporter.export(this);
+       this.exporter = exporter;
+    }
+    
+    private Object getProxy() throws ExportException{
+        if (proxy == null) proxy = exporter.export(this);
+        return proxy;
     }
 
-    public Object writeReplace() throws ObjectStreamException {
-       return proxy;
+    public synchronized Object writeReplace() throws ObjectStreamException {
+        try {
+            return getProxy();
+        } catch (ExportException ex) {
+            throw new WriteAbortedException("Unable to export proxy", ex);
+        }
     }
 
     public synchronized void notify(RemoteEvent theEvent)
@@ -62,7 +74,11 @@ class RemoteListener implements RemoteEv
     {
     }
 
-    public TrustVerifier getProxyVerifier() {
-       return new BasicProxyTrustVerifier(proxy);
+    public synchronized TrustVerifier getProxyVerifier() {
+        try {
+            return new BasicProxyTrustVerifier(getProxy());
+        } catch (ExportException ex) {
+            throw new IllegalStateException("Unable to export proxy", ex);
+        }
     }
 }

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/AbstractBaseTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/AbstractBaseTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/AbstractBaseTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/AbstractBaseTest.java
 Thu May 23 13:35:41 2013
@@ -87,6 +87,7 @@ import net.jini.security.proxytrust.Serv
 import com.sun.jini.proxy.BasicProxyTrustVerifier;
 import com.sun.jini.qa.harness.Test;
 import com.sun.jini.test.share.LookupServices;
+import java.rmi.server.ExportException;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -726,9 +727,10 @@ abstract public class AbstractBaseTest e
        implements RemoteEventListener, ServerProxyTrust, Serializable
     {
 
-        private RegistrationInfo regInfo;
+        private final RegistrationInfo regInfo;
         private Object proxy;
-       private ProxyPreparer registrarPreparer;
+       private final ProxyPreparer registrarPreparer;
+        private final Exporter exporter;
         public LDSEventListener(RegistrationInfo regInfo)
            throws RemoteException
         {
@@ -736,7 +738,7 @@ abstract public class AbstractBaseTest e
             this.regInfo = regInfo;
            Configuration c = getConfig().getConfiguration();
            Exporter exporter = QAConfig.getDefaultExporter();
-           registrarPreparer = new BasicProxyPreparer();
+           ProxyPreparer registrarPreparer = new BasicProxyPreparer();
            if (c instanceof com.sun.jini.qa.harness.QAConfiguration) {
                try {
                    exporter = (Exporter) c.getEntry("test",
@@ -750,8 +752,13 @@ abstract public class AbstractBaseTest e
                    throw new RemoteException("Configuration error", e);
                }
            }
-           proxy = exporter.export(this);
+           this.exporter = exporter;
+            this.registrarPreparer = registrarPreparer;
         }//end constructor
+        
+        public synchronized void export() throws ExportException{
+            proxy = exporter.export(this);
+        }
 
        public Object writeReplace() throws ObjectStreamException {
            return proxy;
@@ -1266,6 +1273,7 @@ abstract public class AbstractBaseTest e
                                                         iHandback);
         LDSEventListener listener =
                                new AbstractBaseTest.LDSEventListener(regInfo);
+        listener.export();
         LookupDiscoveryRegistration ldsReg = null;
        try {
            ldsReg = discoverySrvc.register(groupsToDiscover,

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLease.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLease.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLease.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLease.java
 Thu May 23 13:35:41 2013
@@ -83,9 +83,11 @@ public class CancelLease extends Abstrac
     public Test construct(QAConfig config) throws Exception {
         super.construct(config);
         String[] expectedGroups = getGroupsToDiscover();
+        DiscoveryServiceUtil.BasicEventListener listener = new 
DiscoveryServiceUtil.BasicEventListener();
+        listener.export();
         reg = DiscoveryServiceUtil.getRegistration
                                 (discoverySrvc,
-                                 new DiscoveryServiceUtil.BasicEventListener(),
+                                 listener,
                                  expectedGroups);
         String[] currentGroups = reg.getGroups();
         if( 
!GroupsUtil.compareGroupSets(currentGroups,expectedGroups,Level.OFF) ) {

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLeaseMap.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLeaseMap.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLeaseMap.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/CancelLeaseMap.java
 Thu May 23 13:35:41 2013
@@ -93,9 +93,11 @@ public class CancelLeaseMap extends Abst
         long  durs[]  = new long[reg.length];
         String[] expectedGroups = getGroupsToDiscover();
         for(int i=0;i<reg.length;i++) {
+            DiscoveryServiceUtil.BasicEventListener listener = new 
DiscoveryServiceUtil.BasicEventListener();
+            listener.export();
             reg[i] = DiscoveryServiceUtil.getRegistration
                                (discoverySrvc,
-                                new DiscoveryServiceUtil.BasicEventListener(),
+                                listener,
                                 expectedGroups);
             String[] currentGroups = reg[i].getGroups();
             if( 
!GroupsUtil.compareGroupSets(currentGroups,expectedGroups,Level.OFF) ) {

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLease.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLease.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLease.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLease.java
 Thu May 23 13:35:41 2013
@@ -69,9 +69,11 @@ public class RenewLease extends Abstract
      */
     public Test construct(QAConfig config) throws Exception {
         super.construct(config);
+        DiscoveryServiceUtil.BasicEventListener listener = new 
DiscoveryServiceUtil.BasicEventListener();
+        listener.export();
         reg = DiscoveryServiceUtil.getRegistration
                                (discoverySrvc,
-                                new DiscoveryServiceUtil.BasicEventListener());
+                                listener);
         long duration = DiscoveryServiceUtil.expirationToDuration
                                           
((getPreparedLease(reg)).getExpiration(),
                                            System.currentTimeMillis());

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLeaseMap.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLeaseMap.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLeaseMap.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/discoveryservice/lease/RenewLeaseMap.java
 Thu May 23 13:35:41 2013
@@ -86,9 +86,11 @@ public class RenewLeaseMap extends Abstr
         reg = new LookupDiscoveryRegistration[expectedDurations.length];
         lease = new Lease[expectedDurations.length];
         for(int i=0;i<reg.length;i++) {
+            DiscoveryServiceUtil.BasicEventListener listener = new 
DiscoveryServiceUtil.BasicEventListener();
+            listener.export();
             reg[i] = DiscoveryServiceUtil.getRegistration
                                (discoverySrvc,
-                                new DiscoveryServiceUtil.BasicEventListener());
+                                listener);
             lease[i] = getPreparedLease(reg[i]);
             long duration = DiscoveryServiceUtil.expirationToDuration
                                                  (lease[i].getExpiration(),

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/NotifyCounter.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/NotifyCounter.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/NotifyCounter.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/NotifyCounter.java
 Thu May 23 13:35:41 2013
@@ -40,6 +40,7 @@ import net.jini.security.proxytrust.Serv
 import com.sun.jini.proxy.BasicProxyTrustVerifier;
 
 import com.sun.jini.qa.harness.QAConfig;
+import java.rmi.server.ExportException;
 
 /**
  * This auxilary class listens for notify events and counts them.
@@ -54,13 +55,15 @@ public class NotifyCounter
     protected final Entry template;
 
     /** Time for which this listener will count events */
-    protected volatile long leaseTime;
+    protected final long leaseTime;
 
     /** number of events */
     private long maxEvNum;
 
     /** the proxy */
-    private final Object proxy;
+    private Object proxy;
+    
+    private final Exporter exporter;
 
     private volatile static Configuration configuration;
 
@@ -74,6 +77,21 @@ public class NotifyCounter
        }
        return NotifyCounter.configuration;
     }
+    
+    private static Exporter getExporter(Configuration c) throws 
RemoteException{
+        Exporter exporter = QAConfig.getDefaultExporter();
+       if (c instanceof com.sun.jini.qa.harness.QAConfiguration) {
+           try {
+               exporter = (Exporter) c.getEntry("test",
+                                                "outriggerListenerExporter",
+                                                Exporter.class);
+           } catch (ConfigurationException e) {
+               throw new RemoteException("Configuration Error", e);
+           }
+       }
+        return exporter;
+    }
+    
 
     /**
      * Constructor with no arguments, set template to null, and lease time to 
0.
@@ -96,28 +114,26 @@ public class NotifyCounter
      */
     public NotifyCounter(Entry template, long leaseTime)
             throws RemoteException {
-       Configuration c = getConfiguration();
-       Exporter exporter = QAConfig.getDefaultExporter();
-       if (c instanceof com.sun.jini.qa.harness.QAConfiguration) {
-           try {
-               exporter = (Exporter) c.getEntry("test",
-                                                "outriggerListenerExporter",
-                                                Exporter.class);
-           } catch (ConfigurationException e) {
-               throw new RemoteException("Configuration Error", e);
-           }
-       }
-       proxy = exporter.export(this);
+       this(template, leaseTime, getExporter(getConfiguration()));
+       export(); //Export is called after private constructor freezes final 
fields.
+    }
+    
+    private NotifyCounter(Entry template, long leaseTime, Exporter exporter){
         maxEvNum = 0;
+        this.exporter = exporter;
         this.template = template;
         this.leaseTime = leaseTime;
     }
+    
+    private synchronized void export() throws ExportException{
+        proxy = exporter.export(this);
+    }
 
-    public Object writeReplace() throws ObjectStreamException {
+    public synchronized Object writeReplace() throws ObjectStreamException {
        return proxy;
     }
 
-    public TrustVerifier getProxyVerifier() {
+    public synchronized TrustVerifier getProxyVerifier() {
        return new BasicProxyTrustVerifier(proxy);
     }
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/ParticipantImpl.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/ParticipantImpl.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/ParticipantImpl.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/ParticipantImpl.java
 Thu May 23 13:35:41 2013
@@ -39,6 +39,7 @@ import net.jini.security.proxytrust.Serv
 import com.sun.jini.proxy.BasicProxyTrustVerifier;
 
 import com.sun.jini.qa.harness.QAConfig;
+import java.rmi.server.ExportException;
 
 /**
  * This class is needed to prevent normal committing operation.
@@ -53,7 +54,7 @@ public class ParticipantImpl implements 
 
 
     private static Configuration configuration;
-
+    private final Exporter exporter;
     private Object proxy;
 
     public static void setConfiguration(Configuration configuration) {
@@ -82,14 +83,18 @@ public class ParticipantImpl implements 
                throw new RemoteException("Configuration Error", e);
            }
        }
-       proxy = exporter.export(this);
+       this.exporter = exporter;
+    }
+    
+    public synchronized void export() throws ExportException{
+        proxy = exporter.export(this);
     }
 
-    public Object writeReplace() throws ObjectStreamException {
+    public synchronized Object writeReplace() throws ObjectStreamException {
        return proxy;
     }
 
-    public TrustVerifier getProxyVerifier() {
+    public synchronized TrustVerifier getProxyVerifier() {
        return new BasicProxyTrustVerifier(proxy);
     }
 

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TestEventListener05.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TestEventListener05.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TestEventListener05.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TestEventListener05.java
 Thu May 23 13:35:41 2013
@@ -34,6 +34,7 @@ import java.rmi.RemoteException;
 
 import com.sun.jini.qa.harness.QAConfig;
 import com.sun.jini.proxy.BasicProxyTrustVerifier;
+import java.rmi.server.ExportException;
 
 
 public class TestEventListener05 implements RemoteEventListener,
@@ -44,10 +45,15 @@ public class TestEventListener05 impleme
 
     private Object proxy;
 
-    private ArrayList notifications = new ArrayList();
+    private final ArrayList notifications;
+    private final Exporter exporter;
 
     public TestEventListener05() throws RemoteException {
-        Configuration c = getConfiguration();
+        this(getExporter(getConfiguration()));
+        export(); // Exported after final freeze of private constructor.
+    }
+    
+    private static Exporter getExporter(Configuration c) throws 
RemoteException{
         Exporter exporter = QAConfig.getDefaultExporter();
         if (c instanceof com.sun.jini.qa.harness.QAConfiguration) {
             try {
@@ -58,32 +64,41 @@ public class TestEventListener05 impleme
                 throw new RemoteException("Configuration Error", e);
             }
         }
-        proxy = exporter.export(this);
+        return exporter;
+    }
+    
+    private TestEventListener05(Exporter exporter){
+        this.exporter = exporter;
+        notifications = new ArrayList();
     }
 
-    public void notify(RemoteEvent theEvent) throws UnknownEventException,
+    private synchronized void export() throws ExportException{
+        proxy = exporter.export(this);
+    }
+    
+    public synchronized void notify(RemoteEvent theEvent) throws 
UnknownEventException,
                                                     java.rmi.RemoteException
     {
         notifications.add(theEvent);
     }
 
-    public List getNotifications() {
-        return notifications;
+    public synchronized List getNotifications() {
+        return new ArrayList(notifications);
     }
 
-    public Object writeReplace() throws ObjectStreamException {
+    public synchronized Object writeReplace() throws ObjectStreamException {
         return proxy;
     }
 
-    public TrustVerifier getProxyVerifier() {
+    public synchronized TrustVerifier getProxyVerifier() {
         return new BasicProxyTrustVerifier(proxy);
     }
 
-    public static void setConfiguration(Configuration configuration) {
+    public static synchronized void setConfiguration(Configuration 
configuration) {
         TestEventListener05.configuration = configuration;
     }
 
-    public static Configuration getConfiguration() {
+    public static synchronized Configuration getConfiguration() {
         if (TestEventListener05.configuration == null) {
             throw new IllegalStateException("Configuration not set");
         }

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeIfExistsTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeIfExistsTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeIfExistsTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeIfExistsTest.java
 Thu May 23 13:35:41 2013
@@ -118,6 +118,7 @@ public class TransactionCommitTakeIfExis
          * will prevent normal commit completion
          */
         TransactionParticipant tp = new ParticipantImpl();
+        ((ParticipantImpl)tp).export();
         ((ServerTransaction) txn).join(tp, System.currentTimeMillis());
 
         // run thread which will prevent normal commit completion

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/TransactionCommitTakeTest.java
 Thu May 23 13:35:41 2013
@@ -118,6 +118,7 @@ public class TransactionCommitTakeTest e
          * will prevent normal commit completion
          */
         TransactionParticipant tp = new ParticipantImpl();
+        ((ParticipantImpl)tp).export();
         ((ServerTransaction) txn).join(tp, System.currentTimeMillis());
 
         // run thread which will prevent normal commit completion

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeIfExistsTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeIfExistsTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeIfExistsTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeIfExistsTest.java
 Thu May 23 13:35:41 2013
@@ -137,6 +137,7 @@ public class SnapshotTransactionCommitTa
          * will prevent normal commit completion
          */
         TransactionParticipant tp = new ParticipantImpl();
+        ((ParticipantImpl)tp).export();
         ((ServerTransaction) txn).join(tp, System.currentTimeMillis());
 
         // run thread which will prevent normal commit completion

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeTest.java?rev=1485700&r1=1485699&r2=1485700&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/javaspace/conformance/snapshot/SnapshotTransactionCommitTakeTest.java
 Thu May 23 13:35:41 2013
@@ -136,6 +136,7 @@ public class SnapshotTransactionCommitTa
          * will prevent normal commit completion
          */
         TransactionParticipant tp = new ParticipantImpl();
+        ((ParticipantImpl)tp).export();
         ((ServerTransaction) txn).join(tp, System.currentTimeMillis());
 
         // run thread which will prevent normal commit completion


Reply via email to