Author: peter_firmstone
Date: Tue Apr 16 14:03:35 2013
New Revision: 1468421

URL: http://svn.apache.org/r1468421
Log:
Removing instances of Thread.start() calls in object constructors.

Added permission to policy files for HeartOfTheMachine.

Removed old duplicate qa test suite copy of Reggie that's no longer used.

Removed:
    river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/reggie/
Modified:
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/HeartOfTheMachine.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/end2end/e2etest/Driver.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/share/DiscoveryProtocolSimulator.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/loader/pref/loader.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoConnectToCodebase.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoDlPerm.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoGetClassLoader.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loader.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoConnectToCodebase.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoDlPerm.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoGetClassLoader.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loader.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoConnectToCodebase.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoDlPerm.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoGetClassLoader.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loader.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoConnectToCodebase.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoDlPerm.policy
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoGetClassLoader.policy
    
river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/jeri/internal/runtime/AbstractDgcClient.java
    river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/ClassServer.java

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/HeartOfTheMachine.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/HeartOfTheMachine.java?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/HeartOfTheMachine.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/HeartOfTheMachine.java
 Tue Apr 16 14:03:35 2013
@@ -19,7 +19,10 @@
 package com.sun.jini.qa.harness;
 
 import java.io.File;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.concurrent.TimeUnit;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
@@ -28,17 +31,19 @@ import java.util.logging.Logger;
  */
 public class HeartOfTheMachine
 {
-    private String soul ;
+    private final String soul ;
+    private final Thread t;
 
     private HeartOfTheMachine()
     {
         soul = System.getenv("SOUL");
 
         if( soul == null ) {
+            t = null;
             return ;
         }
 
-        Thread t = new Thread( new Runnable() {
+        t = new Thread( new Runnable() {
 
             public void run()
             {
@@ -47,6 +52,9 @@ public class HeartOfTheMachine
 
         }, "no heart without soul");
         t.setDaemon(true);
+    }
+    
+    private void star(){
         t.start();
     }
 
@@ -71,14 +79,19 @@ public class HeartOfTheMachine
 
     public static void start()
     {
-        try {
-            new HeartOfTheMachine();
-        } catch( Throwable t ) {
-            //System.out.println("Heart NOT started");
-            Logger.getLogger("com.sun.jini.qa.harness").severe("Heart NOT 
started");
-            if (t instanceof Error) throw (Error) t;
-            if (t instanceof RuntimeException) throw (RuntimeException) t;
-        }
+        AccessController.doPrivileged(new PrivilegedAction(){
+
+            @Override
+            public Object run() {
+                try {
+                    new HeartOfTheMachine().star();
+                } catch (Exception t){
+                    
Logger.getLogger("com.sun.jini.qa.harness").log(Level.SEVERE, "Heart NOT 
started", t);
+                }
+                return null;
+            }
+
+        });   
     }
 
 }

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/end2end/e2etest/Driver.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/end2end/e2etest/Driver.java?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/end2end/e2etest/Driver.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/end2end/e2etest/Driver.java
 Tue Apr 16 14:03:35 2013
@@ -227,6 +227,8 @@ public class Driver implements LegacyTes
 
     /**
      * Utility class to read output from a process.
+     * This class is stateless, this is the only case where it's safe to start
+     * a Thread from inside the constructor.
      */
     public static class ProcessReader {
         public ProcessReader(final InputStream input, final PrintWriter out) {

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=1468421&r1=1468420&r2=1468421&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
 Tue Apr 16 14:03:35 2013
@@ -88,6 +88,9 @@ public class MultihomedClientTest implem
 
     }
 
+    /**
+     * Safe to start thread in constructor, it's stateless.
+     */
     public static class ProcessReader {
         public ProcessReader(final InputStream input, final PrintStream out) {
             Thread inputThread = new Thread( new Runnable() {

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/DiscoveryProtocolSimulator.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/DiscoveryProtocolSimulator.java?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/DiscoveryProtocolSimulator.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/share/DiscoveryProtocolSimulator.java
 Tue Apr 16 14:03:35 2013
@@ -219,25 +219,14 @@ public class DiscoveryProtocolSimulator 
     /** Interval to wait in between sending multicast announcements */
     private long multicastAnnouncementInterval = 1000 * 60 * 2;
 
-
-    public DiscoveryProtocolSimulator(QAConfig config,
-                                      String[] memberGroups,
-                                     AdminManager manager)
-                                       throws ActivationException, 
IOException, TestException
-    {
-        this(config,memberGroups,manager,0);
-    }//end constructor
     
-    public DiscoveryProtocolSimulator(QAConfig config,
-                                      String[] memberGroups,
-                                     AdminManager manager,
-                                      int unicastPort)
+    public DiscoveryProtocolSimulator(QAConfig config, String[] memberGroups, 
int unicastPort, LookupSimulatorProxyInterface proxy)
                                        throws ActivationException, 
IOException, TestException
     {
         this.memberGroups = memberGroups;
         this.unicastPort  = unicastPort;
         // start LUS before switching identity to reggie
-        lookupProxy = (LookupSimulatorProxyInterface) 
manager.startLookupService();
+        lookupProxy = proxy;
        LoginContext context = null;
        Configuration c = config.getConfiguration();
        try {
@@ -1162,14 +1151,18 @@ public class DiscoveryProtocolSimulator 
             DEFAULT_MULTICAST_TTL = 1;
        }
 
-        /* start the discovery-related threads */
+        /* create the discovery-related threads */
         multicastRequestThread = new MulticastThread();
         multicastAnnouncementThread = new AnnounceThread();
+        
+    }//end init
+    
+    public void start(){
         /* start the threads */
         unicastRequestThread.start();
         multicastRequestThread.start();
         multicastAnnouncementThread.start();
-    }//end init
+    }
 
 }//end class DiscoveryProtocolSimulator
 

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=1468421&r1=1468420&r2=1468421&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
 Tue Apr 16 14:03:35 2013
@@ -20,6 +20,7 @@ package com.sun.jini.test.share;
 import com.sun.jini.qa.harness.AdminManager;
 import com.sun.jini.qa.harness.QAConfig;
 import com.sun.jini.qa.harness.TestException;
+import 
com.sun.jini.test.services.lookupsimulator.LookupSimulatorProxyInterface;
 import com.sun.jini.test.share.BaseQATest.LocatorGroupsPair;
 import com.sun.jini.test.share.BaseQATest.LookupListener;
 import 
com.sun.jini.test.spec.discoveryservice.AbstractBaseTest.LDSEventListener;
@@ -539,7 +540,8 @@ public class LookupServices {
                                   +"sync on lookupList --> granted");
                 /* Use either a random or an explicit locator port */
                 generator = new DiscoveryProtocolSimulator
-                                               (config,memberGroups, manager, 
port);
+                                               (config,memberGroups, port, 
(LookupSimulatorProxyInterface) manager.startLookupService());
+                generator.start();
                 genMap.put( generator, memberGroups );
                 lookupProxy = generator.getLookupProxy();
                 lookupList.add( lookupProxy );

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loader.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loader.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loader.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loader.policy
 Tue Apr 16 14:03:35 2013
@@ -36,6 +36,7 @@ grant codebase "file:${com.sun.jini.test
 
 grant codebase "file:${com.sun.jini.qa.harness.harnessJar}" {
     permission net.jini.loader.DownloadPermission;
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };
 
 grant codebase "file:${com.sun.jini.qa.harness.testJar}" {

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoConnectToCodebase.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoConnectToCodebase.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoConnectToCodebase.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoConnectToCodebase.policy
 Tue Apr 16 14:03:35 2013
@@ -140,4 +140,6 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoDlPerm.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoDlPerm.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoDlPerm.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoDlPerm.policy
 Tue Apr 16 14:03:35 2013
@@ -144,4 +144,6 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoGetClassLoader.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoGetClassLoader.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoGetClassLoader.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/loaderNoGetClassLoader.policy
 Tue Apr 16 14:03:35 2013
@@ -150,4 +150,6 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loader.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loader.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loader.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loader.policy
 Tue Apr 16 14:03:35 2013
@@ -36,6 +36,7 @@ grant codebase "file:${com.sun.jini.test
 
 grant codebase "file:${com.sun.jini.qa.harness.harnessJar}" {
     permission net.jini.loader.DownloadPermission;
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };
 
 grant codebase "file:${com.sun.jini.qa.harness.testJar}" {

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoConnectToCodebase.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoConnectToCodebase.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoConnectToCodebase.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoConnectToCodebase.policy
 Tue Apr 16 14:03:35 2013
@@ -139,4 +139,5 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoDlPerm.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoDlPerm.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoDlPerm.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoDlPerm.policy
 Tue Apr 16 14:03:35 2013
@@ -145,4 +145,5 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoGetClassLoader.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoGetClassLoader.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoGetClassLoader.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassLoader/loaderNoGetClassLoader.policy
 Tue Apr 16 14:03:35 2013
@@ -150,4 +150,5 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loader.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loader.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loader.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loader.policy
 Tue Apr 16 14:03:35 2013
@@ -37,6 +37,7 @@ grant codebase "file:${com.sun.jini.test
 
 grant codebase "file:${com.sun.jini.qa.harness.harnessJar}" {
     permission net.jini.loader.DownloadPermission;
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };
 
 grant codebase "file:${com.sun.jini.qa.harness.testJar}" {

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoConnectToCodebase.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoConnectToCodebase.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoConnectToCodebase.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoConnectToCodebase.policy
 Tue Apr 16 14:03:35 2013
@@ -140,4 +140,6 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoDlPerm.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoDlPerm.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoDlPerm.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoDlPerm.policy
 Tue Apr 16 14:03:35 2013
@@ -144,4 +144,6 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoGetClassLoader.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoGetClassLoader.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoGetClassLoader.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/preferredClassProvider/loaderNoGetClassLoader.policy
 Tue Apr 16 14:03:35 2013
@@ -151,4 +151,6 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loader.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loader.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loader.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loader.policy
 Tue Apr 16 14:03:35 2013
@@ -169,4 +169,5 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoConnectToCodebase.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoConnectToCodebase.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoConnectToCodebase.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoConnectToCodebase.policy
 Tue Apr 16 14:03:35 2013
@@ -139,4 +139,5 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoDlPerm.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoDlPerm.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoDlPerm.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoDlPerm.policy
 Tue Apr 16 14:03:35 2013
@@ -144,4 +144,5 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoGetClassLoader.policy
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoGetClassLoader.policy?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoGetClassLoader.policy
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/spec/loader/pref/requireDlPermProvider/loaderNoGetClassLoader.policy
 Tue Apr 16 14:03:35 2013
@@ -150,4 +150,5 @@ grant { 
 
     // discovery-specific PropertyPermission needed by the harness
     permission net.jini.discovery.DiscoveryPermission "*"; 
+    permission java.lang.RuntimePermission "getenv.SOUL";
 };

Modified: 
river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/jeri/internal/runtime/AbstractDgcClient.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/jeri/internal/runtime/AbstractDgcClient.java?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/jeri/internal/runtime/AbstractDgcClient.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/jeri/internal/runtime/AbstractDgcClient.java
 Tue Apr 16 14:03:35 2013
@@ -199,6 +199,7 @@ abstract class AbstractDgcClient {
            EndpointEntry entry = (EndpointEntry) endpointTable.get(endpoint);
            if (entry == null) {
                entry = new EndpointEntry(endpoint);
+                entry.start();
                endpointTable.put(endpoint, entry);
                /*
                 * If the endpoint table was previously empty, we are now
@@ -266,8 +267,11 @@ abstract class AbstractDgcClient {
            renewCleanThread = (Thread) AccessController.doPrivileged(
                new NewThreadAction(new RenewCleanThread(),
                                    "RenewClean-" + endpoint, true));
-           renewCleanThread.start();
        }
+        
+        private void start(){
+            renewCleanThread.start();
+        }
 
        /**
         * Registers the live reference instances in the supplied list to

Modified: 
river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/ClassServer.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/ClassServer.java?rev=1468421&r1=1468420&r2=1468421&view=diff
==============================================================================
--- river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/ClassServer.java 
(original)
+++ river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/ClassServer.java 
Tue Apr 16 14:03:35 2013
@@ -206,7 +206,7 @@ public class ClassServer extends Thread 
                       boolean verbose)
        throws IOException
     {
-       init(port, dirlist, trees, verbose, false, null);
+       this(port, dirlist, trees, verbose, false, null);
     }
 
     /**
@@ -231,13 +231,53 @@ public class ClassServer extends Thread 
                       boolean stoppable)
        throws IOException
     {
-       init(port, dirlist, trees, verbose, stoppable, null);
+       this(port, dirlist, trees, verbose, stoppable, null);
+    }
+    
+    private static class Initializer {
+        int port;
+        String dirlist;
+        boolean trees;
+        boolean verbose;
+        boolean stoppable;
+        LifeCycle lifeCycle;
+        
+        Initializer(LifeCycle lifeCycle, String[] args){
+            port = DEFAULT_PORT;
+            dirlist = DEFAULT_DIR;
+            if (File.separatorChar == '\\') dirlist = DEFAULT_WIN_DIR;
+            trees = false;
+            verbose = false;
+            stoppable = false;
+            for (int i = 0; i < args.length ; i++ ) {
+                String arg = args[i];
+                if (arg.equals("-port")) {
+                    i++;
+                    port = Integer.parseInt(args[i]);
+                } else if (arg.equals("-dir") || arg.equals("-dirs")) {
+                    i++;
+                    dirlist = args[i];
+                } else if (arg.equals("-verbose")) {
+                    verbose = true;
+                } else if (arg.equals("-trees")) {
+                    trees = true;
+                } else if (arg.equals("-stoppable")) {
+                    stoppable = true;
+                } else {
+                    throw new IllegalArgumentException(arg);
+                }
+            }
+        }
+    }
+    
+    private ClassServer(Initializer init) throws IOException {
+        this(init.port, init.dirlist, init.trees, init.verbose, 
init.stoppable, init.lifeCycle);
     }
 
     /**
      * Do the real work of the constructor.
      */
-    private void init(int port,
+    private ClassServer(int port,
                      String dirlist,
                      boolean trees,
                      boolean verbose,
@@ -291,6 +331,26 @@ public class ClassServer extends Thread 
     }
 
     /**
+     * Construct an un-started server, accepting the same command line options
+     * supported by {@link #main main}, except for the <code>-stop</code>
+     * option.  
+     * 
+     * {@link Thread#start() } must be called to start the server.
+     *
+     * @param args command line options
+     * @param lifeCycle life cycle control object, or <code>null</code>
+     * @throws IOException if the server socket cannot be created
+     * @throws IllegalArgumentException if a command line option is not
+     * understood
+     * @throws NullPointerException if <code>args</code> or any element
+     * of <code>args</code> is <code>null</code>
+     * @since 2.3.0
+     */
+    public ClassServer(LifeCycle lifeCycle, String [] args)throws IOException {
+       this(new Initializer(lifeCycle, args));
+    }
+    
+    /**
      * Construct a running server, accepting the same command line options
      * supported by {@link #main main}, except for the <code>-stop</code>
      * option.
@@ -302,34 +362,12 @@ public class ClassServer extends Thread 
      * understood
      * @throws NullPointerException if <code>args</code> or any element
      * of <code>args</code> is <code>null</code>
+     * @deprecated {@link Thread#start() } is called from within constructor, 
+     * this is non compliant with safe construction rules in the JMM.
      */
+    @Deprecated
     public ClassServer(String[] args, LifeCycle lifeCycle) throws IOException {
-       int port = DEFAULT_PORT;
-       String dirlist = DEFAULT_DIR;
-       if (File.separatorChar == '\\')
-           dirlist = DEFAULT_WIN_DIR;
-       boolean trees = false;
-       boolean verbose = false;
-       boolean stoppable = false;
-       for (int i = 0; i < args.length ; i++ ) {
-           String arg = args[i];
-           if (arg.equals("-port")) {
-               i++;
-               port = Integer.parseInt(args[i]);
-           } else if (arg.equals("-dir") || arg.equals("-dirs")) {
-               i++;
-               dirlist = args[i];
-           } else if (arg.equals("-verbose")) {
-               verbose = true;
-           } else if (arg.equals("-trees")) {
-               trees = true;
-           } else if (arg.equals("-stoppable")) {
-               stoppable = true;
-           } else {
-               throw new IllegalArgumentException(arg);
-           }
-       }
-       init(port, dirlist, trees, verbose, stoppable, lifeCycle);
+       this(new Initializer(lifeCycle, args));
        start();
     }
 


Reply via email to