You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by pe...@apache.org on 2010/07/10 07:15:32 UTC

svn commit: r962760 - in /incubator/river/jtsk/trunk: ./ examples/hello/src/com/sun/jini/example/hello/ qa/ qa/src/com/sun/jini/test/impl/joinmanager/ qa/src/com/sun/jini/test/impl/servicediscovery/event/ qa/src/com/sun/jini/test/spec/servicediscovery/...

Author: peter_firmstone
Date: Sat Jul 10 05:15:31 2010
New Revision: 962760

URL: http://svn.apache.org/viewvc?rev=962760&view=rev
Log:
River Refactoring, some minor refactoring to ConcurrentDynamicPolicyProvider.

Renamed DiscoveryManagement2 interface to RegistrarManagement, which supercedes DiscoveryManagement.

Removed the Facade's for DiscoveryManagement, the Facade was undesireable since, Discovery Managers usually implement a number of interfaces.

These changes are to enable wider Java platform support by making minor changes to the Jini API by deprecating methods and interfaces that are java.rmi specific, this will later enable a subset of the Jini Platform to be supported on Java CDC Personal Basis Profile, to allow participation in a djinn using services.

Added:
    incubator/river/jtsk/trunk/src/net/jini/discovery/RegistrarManagement.java
      - copied, changed from r943103, incubator/river/jtsk/trunk/src/net/jini/discovery/DiscoveryManagement2.java
Removed:
    incubator/river/jtsk/trunk/src/net/jini/discovery/DiscMan2Facade.java
    incubator/river/jtsk/trunk/src/net/jini/discovery/DiscManFacade.java
    incubator/river/jtsk/trunk/src/net/jini/discovery/DiscoveryManagement2.java
Modified:
    incubator/river/jtsk/trunk/build.xml
    incubator/river/jtsk/trunk/examples/hello/src/com/sun/jini/example/hello/Client.java
    incubator/river/jtsk/trunk/qa/build.xml
    incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java
    incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/servicediscovery/event/LookupTaskServiceIdMapRace.java
    incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java
    incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/DefaultDiscoverPublic.java
    incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/cache/AddListenerNPE.java
    incubator/river/jtsk/trunk/src/com/sun/jini/example/browser/Browser.java
    incubator/river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java
    incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/JoinStateManager.java
    incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java
    incubator/river/jtsk/trunk/src/com/sun/jini/norm/lookup/JoinState.java
    incubator/river/jtsk/trunk/src/com/sun/jini/outrigger/JoinStateManager.java
    incubator/river/jtsk/trunk/src/com/sun/jini/reggie/RegistrarImpl.java
    incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscovery.java
    incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscoveryManager.java
    incubator/river/jtsk/trunk/src/net/jini/discovery/LookupLocatorDiscovery.java
    incubator/river/jtsk/trunk/src/net/jini/lookup/JoinManager.java
    incubator/river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java
    incubator/river/jtsk/trunk/src/org/apache/river/imp/security/policy/concurrent/DynamicConcurrentPolicyProvider.java
    incubator/river/jtsk/trunk/test/src/org/apache/river/imp/security/policy/se/ConcurrentPolicyFileTest.java

Modified: incubator/river/jtsk/trunk/build.xml
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/build.xml?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/build.xml (original)
+++ incubator/river/jtsk/trunk/build.xml Sat Jul 10 05:15:31 2010
@@ -751,6 +751,7 @@
             directory where AllPermission is granted-->
             <arg line="-out org.apache.river.imp.security.policy.se"/>
             <arg line="-out org.apache.river.imp.security.policy.util"/>
+            <arg line="-out org.apache.river.api.security"/>
             <arg path="${build.classes.dir}/net/jini/activation"/>
             <arg path="${build.classes.dir}/net/jini/config"/>
             <arg path="${build.classes.dir}/net/jini/constraint"/>
@@ -764,9 +765,11 @@
             <arg path="${build.classes.dir}/net/jini/loader"/>
             <arg path="${build.classes.dir}/net/jini/security"/>
             <arg path="${build.classes.dir}/net/jini/url"/>
+            <arg path="${build.classes.dir}/org/apache/river/api"/>
             <arg value="net.jini.discovery.ConstrainableLookupLocator"/>
             <arg value="net.jini.discovery.ConstrainableLookupLocatorTrustVerifier"/>
-            <arg value="org.apache.river.api.security.RevokePermission"/>
+            <!--<arg value="org.apache.river.api.security.RevokePermission"/>
+            <arg value="org.apache.river.api.security.PermissionGrantBuilder"/>-->
             <arg path="${build.classes.dir}/com/sun/jini/discovery"/>
             <arg value="com.sun.jini.config.ConfigUtil"/>
             <arg value="com.sun.jini.config.KeyStores"/>
@@ -823,6 +826,7 @@
             <arg value="net.jini.security.policy.DynamicPolicyProvider"/>
             <arg value="net.jini.security.policy.PolicyFileProvider"/>
             <arg value="org.apache.river.api.security.RevokePermission"/>
+            <arg value="org.apache.river.api.security.PermissionGrantBuilder"/>
             <arg line="-in com.sun.jini"/>
             <arg line="-in net.jini"/>
             <arg line="-in org.apache.river"/>

Modified: incubator/river/jtsk/trunk/examples/hello/src/com/sun/jini/example/hello/Client.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/examples/hello/src/com/sun/jini/example/hello/Client.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/examples/hello/src/com/sun/jini/example/hello/Client.java (original)
+++ incubator/river/jtsk/trunk/examples/hello/src/com/sun/jini/example/hello/Client.java Sat Jul 10 05:15:31 2010
@@ -27,8 +27,8 @@ import net.jini.config.ConfigurationProv
 import net.jini.config.NoSuchEntryException;
 import net.jini.core.lookup.ServiceItem;
 import net.jini.core.lookup.ServiceTemplate;
+import net.jini.discovery.DiscoveryListenerManagement;
 import net.jini.discovery.LookupDiscovery;
-import net.jini.discovery.DiscoveryManagement2;
 import net.jini.lookup.ServiceDiscoveryManager;
 import net.jini.lookup.ServiceItemFilter;
 import net.jini.security.BasicProxyPreparer;
@@ -110,7 +110,7 @@ public class Client {
 	} catch (NoSuchEntryException e) {
 	    /* Default to search in the public group */
 	    serviceDiscovery = new ServiceDiscoveryManager(
-		(DiscoveryManagement2) new LookupDiscovery(new String[] { "" }, config),
+		(DiscoveryListenerManagement) new LookupDiscovery(new String[] { "" }, config),
 		null, config);
 	}
 

Modified: incubator/river/jtsk/trunk/qa/build.xml
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/qa/build.xml?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/qa/build.xml (original)
+++ incubator/river/jtsk/trunk/qa/build.xml Sat Jul 10 05:15:31 2010
@@ -258,11 +258,11 @@
         <!--<property name="run.tests" value="com/sun/jini/test/spec/policyprovider/policyFileProvider/NullPolicy.td"/>*pass*-->
         <!--<property name="run.tests" value="com/sun/jini/test/spec/joinmanager/GetDiscoveryManager.td"/>-->
         <!--<property name="run.tests" value="com/sun/jini/test/spec/joinmanager/TerminateDiscovery.td"/>-->
-        <!--<property name="run.tests" value="com/sun/jini/test/impl/joinmanager/ZRegisterStorm.td"/>*pass*-->
+        <property name="run.tests" value="com/sun/jini/test/impl/joinmanager/ZRegisterStorm.td"/>
         <!--<property name="run.tests" value="com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.td"/>-->
         <!--<property name="run.tests" value="com/sun/jini/test/spec/policyprovider/dynamicPolicyProvider/GrantPrincipalSame.td"/>-->
-        <property name="run.tests" value="com/sun/jini/test/spec/policyprovider/dynamicPolicyProvider/GrantPrincipal.td"/>
-        <!--<property name="run.tests" value="com/sun/jini/test/spec/policyprovider/dynamicPolicyProvider/GrantNoPrincipalCase02.td"/>*fails*-->
+        <!--<property name="run.tests" value="com/sun/jini/test/spec/policyprovider/dynamicPolicyProvider/GrantPrincipal.td"/>-->
+        <!--<property name="run.tests" value="com/sun/jini/test/spec/policyprovider/dynamicPolicyProvider/GrantNoPrincipalCase02.td"/>-->
         <!--<property name="run.tests" value=""/>-->
         <!--<property name="run.tests" value=""/>-->
         <!--<property name="run.tests" value=""/>-->

Modified: incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java (original)
+++ incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/joinmanager/LeaseRenewDurRFE.java Sat Jul 10 05:15:31 2010
@@ -112,7 +112,7 @@ import java.util.StringTokenizer;
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
 import net.jini.discovery.DiscoveryListenerManagement;
-import net.jini.discovery.DiscoveryManagement2;
+import net.jini.discovery.RegistrarManagement;
 
 /**
  * This class verifies that the current implementation of the 
@@ -453,7 +453,7 @@ public class LeaseRenewDurRFE extends Ab
 
         /* create SDM to retrieve ref to TestService-i from lookup */
         sdm = new ServiceDiscoveryManager
-                                    ((DiscoveryManagement2) ldm, null, sysConfig.getConfiguration());
+                                    ((DiscoveryListenerManagement) ldm, null, sysConfig.getConfiguration());
     }//end setup
 
     /** For each separate TestService started during setup, do the following:

Modified: incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/servicediscovery/event/LookupTaskServiceIdMapRace.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/servicediscovery/event/LookupTaskServiceIdMapRace.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/servicediscovery/event/LookupTaskServiceIdMapRace.java (original)
+++ incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/impl/servicediscovery/event/LookupTaskServiceIdMapRace.java Sat Jul 10 05:15:31 2010
@@ -37,7 +37,8 @@ import net.jini.core.lookup.ServiceRegis
 import java.rmi.RemoteException;
 import java.util.ArrayList;
 import java.util.logging.Level;
-import net.jini.discovery.DiscoveryManagement2;
+import net.jini.discovery.DiscoveryListenerManagement;
+import net.jini.discovery.RegistrarManagement;
 
 /**
  * This test attempts to simulate the following race condition that
@@ -274,7 +275,7 @@ public class LookupTaskServiceIdMapRace 
         /* 2. Create half the SDM's and caches */
         for (int i=0; i<(N_SDM/2); i++) {
             ServiceDiscoveryManager sdm = new ServiceDiscoveryManager
-                                      ( (DiscoveryManagement2) ldm,null,testConfig.getConfiguration());
+                                      ( (DiscoveryListenerManagement) ldm,null,testConfig.getConfiguration());
             sdmList.add(sdm);
             SDMListener l = new SDMListener(testConfig, "SDM_"+i);
             sdmListeners.add(l);
@@ -288,7 +289,7 @@ public class LookupTaskServiceIdMapRace 
         /* 4. Create the remaining SDM's and caches */
         for (int i=(N_SDM/2); i<N_SDM; i++) {
             ServiceDiscoveryManager sdm = new ServiceDiscoveryManager
-                                      ( (DiscoveryManagement2) ldm,null,testConfig.getConfiguration());
+                                      ( (DiscoveryListenerManagement) ldm,null,testConfig.getConfiguration());
             sdmList.add(sdm);
             SDMListener l = new SDMListener(testConfig, "SDM_"+i);
             sdmListeners.add(l);

Modified: incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java (original)
+++ incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/AbstractBaseTest.java Sat Jul 10 05:15:31 2010
@@ -66,7 +66,8 @@ import java.util.HashMap;
 import java.util.Properties;
 
 import net.jini.config.ConfigurationException;
-import net.jini.discovery.DiscoveryManagement2;
+import net.jini.discovery.DiscoveryListenerManagement;
+import net.jini.discovery.RegistrarManagement;
 
 /**
  * This class is an abstract class that acts as the base class which
@@ -504,7 +505,7 @@ abstract public class AbstractBaseTest e
 	    /* Construct the ServiceDiscoveryManager that will be tested */
 	    logger.log(Level.FINE, "constructing a service discovery manager");
 	    srvcDiscoveryMgr = new ServiceDiscoveryManager
-		( (DiscoveryManagement2) getLookupDiscoveryManager(),
+		( (DiscoveryListenerManagement) getLookupDiscoveryManager(),
 		 null,  //LeaseRenewalManager
 		 sysConfig.getConfiguration());
 	    sdmList.add(srvcDiscoveryMgr);
@@ -574,7 +575,7 @@ abstract public class AbstractBaseTest e
             for(int i=0;i<sdmList.size();i++) {
                 ServiceDiscoveryManager sdmMgr
                                     = (ServiceDiscoveryManager)sdmList.get(i);
-                DiscoveryManagement2 discMgr = sdmMgr.discoveryManager();
+                DiscoveryListenerManagement discMgr = sdmMgr.getDiscoveryListenerManager();
                 try {
                     logger.log(Level.FINE,
 			 "tearDown - terminating service discovery manager "+i);

Modified: incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/DefaultDiscoverPublic.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/DefaultDiscoverPublic.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/DefaultDiscoverPublic.java (original)
+++ incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/DefaultDiscoverPublic.java Sat Jul 10 05:15:31 2010
@@ -26,7 +26,8 @@ import net.jini.discovery.LookupDiscover
 import net.jini.lookup.ServiceDiscoveryManager;
 import com.sun.jini.qa.harness.QAConfig;
 import com.sun.jini.qa.harness.TestException;
-import net.jini.discovery.DiscoveryManagement2;
+import net.jini.discovery.DiscoveryListenerManagement;
+import net.jini.discovery.RegistrarManagement;
 import net.jini.lease.LeaseRenewalManager;
 
 /**
@@ -61,7 +62,7 @@ public class DefaultDiscoverPublic exten
         testDesc = "service discovery manager with default lookup "
                    +"discovery manager (should discover public lookups)";
         srvcDiscoveryMgr = 
-	    new ServiceDiscoveryManager( (DiscoveryManagement2) null, 
+	    new ServiceDiscoveryManager( (DiscoveryListenerManagement) null, 
 					 (LeaseRenewalManager) null,
 					config.getConfiguration());
         sdmList.add(srvcDiscoveryMgr);
@@ -69,7 +70,7 @@ public class DefaultDiscoverPublic exten
 
     /** Executes the current test by doing the following:
      *  
-     *  1. Retrieves the instance of <code>DiscoveryManagement2</code>
+     *  1. Retrieves the instance of <code>RegistrarManagement</code>
      *     being used by the service discovery manager.
      *  2. Retrieves the set of groups the lookup discovery manager is
      *     configured to discover. 
@@ -79,7 +80,7 @@ public class DefaultDiscoverPublic exten
      *           <code>null</code> if the test was successful.
      */
     protected void applyTestDef() throws Exception {
-        DiscoveryManagement2 dm = srvcDiscoveryMgr.discoveryManager();
+        DiscoveryListenerManagement dm = srvcDiscoveryMgr.getDiscoveryListenerManager();
         if( !(dm instanceof LookupDiscoveryManager) ) {
         throw new TestException(" -- default lookup discovery manager is not "
 				+"an instance of "

Modified: incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/cache/AddListenerNPE.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/cache/AddListenerNPE.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/cache/AddListenerNPE.java (original)
+++ incubator/river/jtsk/trunk/qa/src/com/sun/jini/test/spec/servicediscovery/cache/AddListenerNPE.java Sat Jul 10 05:15:31 2010
@@ -33,7 +33,8 @@ import net.jini.lookup.ServiceDiscoveryM
 import java.rmi.RemoteException;
 import com.sun.jini.qa.harness.QAConfig;
 import com.sun.jini.qa.harness.TestException;
-import net.jini.discovery.DiscoveryManagement2;
+import net.jini.discovery.DiscoveryListenerManagement;
+import net.jini.discovery.RegistrarManagement;
 
 /**
  * This class verifies that the <code>addListener</code> method of
@@ -85,7 +86,7 @@ public class AddListenerNPE extends Abst
 				       null,
 				       sysConfig.getConfiguration());
         srvcDiscoveryMgr = 
-	    new ServiceDiscoveryManager((DiscoveryManagement2) discoveryMgr,
+	    new ServiceDiscoveryManager((DiscoveryListenerManagement) discoveryMgr,
 					null,
 					sysConfig.getConfiguration());
         sdmList.add(srvcDiscoveryMgr);

Modified: incubator/river/jtsk/trunk/src/com/sun/jini/example/browser/Browser.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/example/browser/Browser.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/com/sun/jini/example/browser/Browser.java (original)
+++ incubator/river/jtsk/trunk/src/com/sun/jini/example/browser/Browser.java Sat Jul 10 05:15:31 2010
@@ -104,9 +104,11 @@ import net.jini.discovery.ConstrainableL
 import net.jini.discovery.DiscoveryEvent;
 import net.jini.discovery.DiscoveryGroupManagement;
 import net.jini.discovery.DiscoveryListener;
+import net.jini.discovery.DiscoveryListenerManagement;
 import net.jini.discovery.DiscoveryLocatorManagement;
-import net.jini.discovery.DiscoveryManagement;
+//import net.jini.discovery.DiscoveryManagement;
 import net.jini.discovery.LookupDiscoveryManager;
+import net.jini.discovery.RegistrarManagement;
 import net.jini.export.Exporter;
 import net.jini.jeri.BasicILFactory;
 import net.jini.jeri.BasicJeriExporter;
@@ -239,9 +241,14 @@ public class Browser extends JFrame {
 	    				Boolean.FALSE)).booleanValue();
 	listen = new Listener();
 	try {
-	    DiscoveryManagement disco = (DiscoveryManagement)
+	    DiscoveryListenerManagement disco = (DiscoveryListenerManagement)
 		Config.getNonNullEntry(config, BROWSER, "discoveryManager",
-				       DiscoveryManagement.class);
+				       DiscoveryListenerManagement.class);
+            if (!(disco instanceof RegistrarManagement)) {
+		throw new ConfigurationException(
+			      "discoveryManager does not " +
+			      " support RegistrarManagement");
+	    }
 	    if (!(disco instanceof DiscoveryGroupManagement)) {
 		throw new ConfigurationException(
 			      "discoveryManager does not " +
@@ -360,7 +367,7 @@ public class Browser extends JFrame {
 	}));
 	adder = new LookupListener();
 	lnotify = new LeaseNotify();
-	((DiscoveryManagement) disco).addDiscoveryListener(adder);
+	((RegistrarManagement)disco).addDiscoveryListener(adder);
     }
 
     /**
@@ -1311,7 +1318,7 @@ public class Browser extends JFrame {
 
     private void failure(Throwable t) {
 	logger.log(Level.INFO, "call to lookup service failed", t);
-	((DiscoveryManagement) disco).discard(lookup);
+	((RegistrarManagement) disco).discard(lookup);
     }
 
     class ServiceItemRenderer implements ListCellRenderer {

Modified: incubator/river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java (original)
+++ incubator/river/jtsk/trunk/src/com/sun/jini/fiddler/FiddlerImpl.java Sat Jul 10 05:15:31 2010
@@ -59,7 +59,6 @@ import net.jini.discovery.DiscoveryEvent
 import net.jini.discovery.DiscoveryChangeListener;
 import net.jini.discovery.DiscoveryGroupManagement;
 import net.jini.discovery.DiscoveryLocatorManagement;
-import net.jini.discovery.DiscoveryManagement;
 import net.jini.discovery.LookupDiscoveryManager;
 import net.jini.discovery.LookupDiscoveryRegistration;
 import net.jini.discovery.RemoteDiscoveryEvent;
@@ -5291,11 +5290,11 @@ class FiddlerImpl implements ServerProxy
         /* Get the discovery manager to pass to this service's join manager. */
         try {
             joinMgrLDM  = 
-                (DiscoveryManagement)Config.getNonNullEntry
+                (DiscoveryListenerManagement)Config.getNonNullEntry
                                                   (config,
                                                    COMPONENT_NAME,
                                                    "discoveryManager",
-                                                   DiscoveryManagement.class);
+                                                   DiscoveryListenerManagement.class);
             if( joinMgrLDM instanceof DiscoveryGroupManagement ) {
                 String[] groups0 =
                            ((DiscoveryGroupManagement)joinMgrLDM).getGroups();

Modified: incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/JoinStateManager.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/JoinStateManager.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/JoinStateManager.java (original)
+++ incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/JoinStateManager.java Sat Jul 10 05:15:31 2010
@@ -36,7 +36,6 @@ import net.jini.config.ConfigurationExce
 import net.jini.core.discovery.LookupLocator;
 import net.jini.core.entry.Entry;
 import net.jini.core.lookup.ServiceID;
-import net.jini.discovery.DiscoveryManagement;
 import net.jini.discovery.DiscoveryLocatorManagement;
 import net.jini.discovery.DiscoveryGroupManagement;
 import net.jini.discovery.LookupDiscoveryManager;
@@ -81,7 +80,7 @@ class JoinStateManager extends LogHandle
      * Object used to find lookups. Has to implement DiscoveryManagement
      * and DiscoveryLocatorManagement as well as DiscoveryGroupManagement.
      */
-    private DiscoveryManagement dm;
+    private DiscoveryListenerManagement dm;
 
     /**
      * <code>JoinManager</code> that is handling the details of binding
@@ -183,9 +182,9 @@ class JoinStateManager extends LogHandle
 	         lookupLocatorPreparer);
 	}
 //TODO - defer creation of default LDM
-	dm = (DiscoveryManagement)
+	dm = (DiscoveryListenerManagement)
 	    Config.getNonNullEntry(config, TxnManager.MAHALO,
-		"discoveryManager", DiscoveryManagement.class, 
+		"discoveryManager", DiscoveryListenerManagement.class, 
 		new LookupDiscoveryManager(
                     DiscoveryGroupManagement.NO_GROUPS, null, null, config));
         if(initlogger.isLoggable(Level.CONFIG)) {

Modified: incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java (original)
+++ incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java Sat Jul 10 05:15:31 2010
@@ -898,9 +898,9 @@ class MailboxImpl implements MailboxBack
         // Get shorthand reference to the discovery manager
 	try {
             lookupDiscMgr  = 
-                (DiscoveryManagement)Config.getNonNullEntry(config,
+                (DiscoveryListenerManagement)Config.getNonNullEntry(config,
 	            MERCURY, "discoveryManager",
-                    DiscoveryManagement.class);
+                    DiscoveryListenerManagement.class);
             if(lookupDiscMgr instanceof DiscoveryGroupManagement) {
                  // Verify proper initial state ---> NO_GROUPS
                 String[] groups =

Modified: incubator/river/jtsk/trunk/src/com/sun/jini/norm/lookup/JoinState.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/norm/lookup/JoinState.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/com/sun/jini/norm/lookup/JoinState.java (original)
+++ incubator/river/jtsk/trunk/src/com/sun/jini/norm/lookup/JoinState.java Sat Jul 10 05:15:31 2010
@@ -38,7 +38,6 @@ import net.jini.core.entry.Entry;
 import net.jini.core.lookup.ServiceID;
 import net.jini.discovery.DiscoveryGroupManagement;
 import net.jini.discovery.DiscoveryLocatorManagement;
-import net.jini.discovery.DiscoveryManagement;
 import net.jini.discovery.LookupDiscoveryManager;
 import net.jini.lease.LeaseRenewalManager;
 import net.jini.lookup.JoinManager;
@@ -303,8 +302,8 @@ public class JoinState extends LogHandle
 	throws ConfigurationException, IOException
     {
 	try {
-	    dm = (DiscoveryManagement) Config.getNonNullEntry(
-		config, NORM, "discoveryManager", DiscoveryManagement.class);
+	    dm = (DiscoveryListenerManagement) Config.getNonNullEntry(
+		config, NORM, "discoveryManager", DiscoveryListenerManagement.class);
 	    if (!(dm instanceof DiscoveryGroupManagement)) {
 		throw new ConfigurationException(
 		    "Entry for component " + NORM +

Modified: incubator/river/jtsk/trunk/src/com/sun/jini/outrigger/JoinStateManager.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/outrigger/JoinStateManager.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/com/sun/jini/outrigger/JoinStateManager.java (original)
+++ incubator/river/jtsk/trunk/src/com/sun/jini/outrigger/JoinStateManager.java Sat Jul 10 05:15:31 2010
@@ -29,7 +29,6 @@ import java.util.logging.Logger;
 import net.jini.core.discovery.LookupLocator;
 import net.jini.core.entry.Entry;
 import net.jini.core.lookup.ServiceID;
-import net.jini.discovery.DiscoveryManagement;
 import net.jini.discovery.DiscoveryLocatorManagement;
 import net.jini.discovery.DiscoveryGroupManagement;
 import net.jini.discovery.LookupDiscoveryManager;
@@ -42,6 +41,7 @@ import net.jini.security.ProxyPreparer;
 import com.sun.jini.config.Config;
 import com.sun.jini.logging.Levels;
 import net.jini.discovery.DiscoveryListenerManagement;
+import net.jini.discovery.RegistrarManagement;
 
 /**
  * <code>JoinStateManager</code> provides a utility that manages
@@ -166,8 +166,20 @@ class JoinStateManager implements Storab
 		new LookupDiscoveryManager(
                     DiscoveryGroupManagement.NO_GROUPS, null, null,
 		    config));
-
-	if (!(dgm instanceof DiscoveryManagement))
+        
+        if (!(dgm instanceof DiscoveryListenerManagement))
+	    throw throwNewConfigurationException("Entry for component " +
+		OutriggerServerImpl.COMPONENT_NAME + ", name " +
+		"discoveryManager must implement " +
+	        "net.jini.discovery.DiscoveryListenerManagement");
+        
+        if (!(dgm instanceof RegistrarManagement))
+	    throw throwNewConfigurationException("Entry for component " +
+		OutriggerServerImpl.COMPONENT_NAME + ", name " +
+		"discoveryManager must implement " +
+	        "net.jini.discovery.RegistrarManagement");
+        
+	if (!(dgm instanceof DiscoveryGroupManagement))
 	    throw throwNewConfigurationException("Entry for component " +
 		OutriggerServerImpl.COMPONENT_NAME + ", name " +
 		"discoveryManager must implement " +
@@ -329,7 +341,7 @@ class JoinStateManager implements Storab
 	    mgr.terminate();
 
 	if (dgm != null) 
-	    ((DiscoveryManagement)dgm).terminate();
+	    ((RegistrarManagement)dgm).terminate();
     }
 
     /* Basically we are implementing JoinAdmin, for get methods we just

Modified: incubator/river/jtsk/trunk/src/com/sun/jini/reggie/RegistrarImpl.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/reggie/RegistrarImpl.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/com/sun/jini/reggie/RegistrarImpl.java (original)
+++ incubator/river/jtsk/trunk/src/com/sun/jini/reggie/RegistrarImpl.java Sat Jul 10 05:15:31 2010
@@ -284,7 +284,7 @@ class RegistrarImpl implements Registrar
     private long minEventExpiration = Long.MAX_VALUE;
 
     /** Manager for discovering other lookup services */
-    private DiscoveryManagement discoer;
+    private DiscoveryListenerManagement discoer;
     /** Manager for joining other lookup services */
     private JoinManager joiner;
     /** Task manager for sending events and discovery responses */
@@ -4515,8 +4515,8 @@ class RegistrarImpl implements Registrar
 		new BasicMethodConstraints(InvocationConstraints.EMPTY);
 	}
 	try {
-	    discoer = (DiscoveryManagement) config.getEntry(
-		COMPONENT, "discoveryManager", DiscoveryManagement.class);
+	    discoer = (DiscoveryListenerManagement) config.getEntry(
+		COMPONENT, "discoveryManager", DiscoveryListenerManagement.class);
 	} catch (NoSuchEntryException e) {
 	    discoer = new LookupDiscoveryManager(
 		DiscoveryGroupManagement.NO_GROUPS, null, null, config);

Modified: incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscovery.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscovery.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscovery.java (original)
+++ incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscovery.java Sat Jul 10 05:15:31 2010
@@ -697,7 +697,9 @@ import net.jini.security.SecurityContext
  * @see DiscoveryEvent
  * @see DiscoveryPermission
  */
-public class LookupDiscovery implements DiscoveryManagement, DiscoveryManagement2,
+public class LookupDiscovery implements DiscoveryManagement, 
+                                        RegistrarManagement,
+                                        DiscoveryListenerManagement,
                                         DiscoveryGroupManagement
 {
     /* Name of this component; used in config entry retrieval and the logger.*/

Modified: incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscoveryManager.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscoveryManager.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscoveryManager.java (original)
+++ incubator/river/jtsk/trunk/src/net/jini/discovery/LookupDiscoveryManager.java Sat Jul 10 05:15:31 2010
@@ -94,7 +94,8 @@ import net.jini.core.lookup.ServiceRegis
  */
 @SuppressWarnings("deprecation")
 public class LookupDiscoveryManager implements DiscoveryManagement,
-                                               DiscoveryManagement2,
+                                               RegistrarManagement,
+                                               DiscoveryListenerManagement,
                                                DiscoveryGroupManagement,
                                                DiscoveryLocatorManagement
 {
@@ -1333,7 +1334,7 @@ public class LookupDiscoveryManager impl
      */
     @Deprecated
     public void discard(ServiceRegistrar proxy) {
-        discard(proxy);
+        discard((PortableServiceRegistrar) proxy);
     }//end discard
     
     /**

Modified: incubator/river/jtsk/trunk/src/net/jini/discovery/LookupLocatorDiscovery.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/discovery/LookupLocatorDiscovery.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/discovery/LookupLocatorDiscovery.java (original)
+++ incubator/river/jtsk/trunk/src/net/jini/discovery/LookupLocatorDiscovery.java Sat Jul 10 05:15:31 2010
@@ -310,7 +310,9 @@ import net.jini.security.ProxyPreparer;
  *
  * @see net.jini.core.discovery.LookupLocator
  */
-public class LookupLocatorDiscovery implements DiscoveryManagement, DiscoveryManagement2,
+public class LookupLocatorDiscovery implements DiscoveryManagement, 
+                                               RegistrarManagement,
+                                               DiscoveryListenerManagement,
                                                DiscoveryLocatorManagement
 {
     /* Name of this component; used in config entry retrieval and the logger.*/

Copied: incubator/river/jtsk/trunk/src/net/jini/discovery/RegistrarManagement.java (from r943103, incubator/river/jtsk/trunk/src/net/jini/discovery/DiscoveryManagement2.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/discovery/RegistrarManagement.java?p2=incubator/river/jtsk/trunk/src/net/jini/discovery/RegistrarManagement.java&p1=incubator/river/jtsk/trunk/src/net/jini/discovery/DiscoveryManagement2.java&r1=943103&r2=962760&rev=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/discovery/DiscoveryManagement2.java (original)
+++ incubator/river/jtsk/trunk/src/net/jini/discovery/RegistrarManagement.java Sat Jul 10 05:15:31 2010
@@ -19,7 +19,6 @@
 package net.jini.discovery;
 
 import net.jini.core.lookup.PortableServiceRegistrar;
-import net.jini.discovery.DiscoveryListener;
 
 /**
  * This interface defines methods related to the discovery event mechanism
@@ -30,7 +29,7 @@ import net.jini.discovery.DiscoveryListe
  * @author Peter Firmstone.
  * @since 2.2.0
  */
-public interface DiscoveryManagement2 extends DiscoveryListenerManagement {
+public interface RegistrarManagement extends DiscoveryListenerManagement {
 
     /**
      * Returns an array of instances of <code>PortableServiceRegistrar</code>, each

Modified: incubator/river/jtsk/trunk/src/net/jini/lookup/JoinManager.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/lookup/JoinManager.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/lookup/JoinManager.java (original)
+++ incubator/river/jtsk/trunk/src/net/jini/lookup/JoinManager.java Sat Jul 10 05:15:31 2010
@@ -54,10 +54,8 @@ import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import net.jini.core.lookup.PortableServiceRegistrar;
-import net.jini.discovery.DiscManFacade;
 import net.jini.discovery.DiscoveryListenerManagement;
-import net.jini.discovery.DiscoveryManagement2;
-import net.jini.discovery.DiscMan2Facade;
+import net.jini.discovery.RegistrarManagement;
 import org.apache.river.api.util.Facade;
 
 /**
@@ -447,11 +445,12 @@ public class JoinManager {
     private static void discard(DiscoveryListenerManagement dlm, 
             PortableServiceRegistrar proxy, Logger logger){
         try {
-            if (dlm instanceof DiscoveryManagement2) {
-                ((DiscoveryManagement2)dlm).discard(proxy);
+            if (dlm instanceof RegistrarManagement){
+                RegistrarManagement rm = (RegistrarManagement) dlm;
+                rm.discard(proxy);
             } else {
-                DiscMan2Facade dm2f = new DiscMan2Facade(dlm);
-                dm2f.discard(proxy);
+                throw new UnsupportedOperationException("Not instance of " +
+                        "RegistrarManagement");
             }
         } catch(IllegalStateException e1) {
            logger.log(Level.FINEST,
@@ -462,7 +461,7 @@ public class JoinManager {
             logger.log(Level.FINEST,
                       "JoinManager - cannot discard lookup, "
                       +"DiscoveryManager not supported on this" +
-                      " platform, use DiscoveryManager2 instead.",
+                      " platform, use RegistrarManagement instead.",
                       ex);
         }
     }
@@ -1636,7 +1635,8 @@ public class JoinManager {
      * @see net.jini.discovery.DiscoveryManagement
      * @see net.jini.discovery.LookupDiscoveryManager
      * @see net.jini.lease.LeaseRenewalManager
-     * @deprecated {@link replaced by #JoinManager(Object, Entry[], ServiceIDListener, LeaseRenewalManager, DiscoveryListenerManagement)}
+     * @deprecated {@link replaced by #JoinManager(Object, Entry[],
+     * ServiceIDListener, LeaseRenewalManager, DiscoveryListenerManagement)}
      */
     @Deprecated
      public JoinManager(Object serviceProxy,
@@ -1993,12 +1993,12 @@ public class JoinManager {
                 throw new IllegalStateException("join manager was terminated");
             }//endif
         }//end sync
-        // Don't need to worry about revealing facades, they do that in their
-        // constructor.
+        // Don't need to worry about facades, all implementers of the new 
+        // interfaces implement DiscoveryManagement, at least until this method is removed. 
         if (discMgr instanceof DiscoveryManagement){
             return (DiscoveryManagement) discMgr;
         }
-	return new DiscManFacade(discMgr);
+	return null;
         
     }//end getDiscoveryManager
     
@@ -2018,7 +2018,7 @@ public class JoinManager {
      *         parameter.
      * 
      * @see net.jini.discovery.DiscoveryListenerManagement
-     * @see net.jini.discovery.DiscoveryManagement2
+     * @see net.jini.discovery.RegistrarManagement
      * @see net.jini.discovery.LookupDiscoveryManager
      */
     public DiscoveryListenerManagement discoveryManager(){
@@ -2713,10 +2713,10 @@ public class JoinManager {
             try {
                 // Changed to the new Interface which all DiscoveryManagers
                 // must implement.
-                discMgr = (DiscoveryManagement2)config.getEntry
+                discMgr = (DiscoveryListenerManagement)config.getEntry
                                                  (COMPONENT_NAME,
                                                   "discoveryManager",
-                                                  DiscoveryManagement2.class);
+                                                  DiscoveryListenerManagement.class);
             } catch(NoSuchEntryException e) { /* use default */
                 discMgr = new LookupDiscoveryManager
                                      (new String[] {""}, null, null, config);

Modified: incubator/river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java (original)
+++ incubator/river/jtsk/trunk/src/net/jini/lookup/ServiceDiscoveryManager.java Sat Jul 10 05:15:31 2010
@@ -69,10 +69,10 @@ import java.util.Map;
 import java.util.Random;
 import java.util.Set;
 import net.jini.core.lookup.PortableServiceRegistrar;
+import net.jini.core.lookup.ServiceRegistrar;
 import net.jini.core.lookup.StreamServiceRegistrar;
-import net.jini.discovery.DiscMan2Facade;
-import net.jini.discovery.DiscManFacade;
-import net.jini.discovery.DiscoveryManagement2;
+import net.jini.discovery.DiscoveryListenerManagement;
+import net.jini.discovery.RegistrarManagement;
 import org.apache.river.api.util.Facade;
 
 /**
@@ -325,7 +325,7 @@ import org.apache.river.api.util.Facade;
  *            this utility, and not by the utility itself.
  * </table>
  *
- * <a name="discoveryManager">
+ * <a name="getDiscoveryListenerManager">
  * <table summary="Describes the discoveryManager configuration entry" 
  *                border="0" cellpadding="2">
  *   <tr valign="top">
@@ -2489,7 +2489,7 @@ public class ServiceDiscoveryManager {
     /* Logger used by this utility. */
     private static final Logger logger = Logger.getLogger(COMPONENT_NAME);
     /* The discovery manager to use (passed in, or create one). */
-    private DiscoveryManagement2 discMgr;
+    private DiscoveryListenerManagement discMgr;
     /* Indicates whether the discovery manager was created internally or not */
     private boolean discMgrInternal = false;
     /* The listener added to discMgr that receives DiscoveryEvents */
@@ -2792,7 +2792,7 @@ public class ServiceDiscoveryManager {
         } catch(ConfigurationException e) { /* swallow this exception */ }
     }//end constructor
     
-    public ServiceDiscoveryManager(DiscoveryManagement2 discoveryMgr,
+    public ServiceDiscoveryManager(DiscoveryListenerManagement discoveryMgr,
             LeaseRenewalManager leaseMgr) throws IOException
     {
         try {
@@ -2873,7 +2873,7 @@ public class ServiceDiscoveryManager {
         init(discoveryMgr, leaseMgr, config);
     }//end constructor
 
-    public ServiceDiscoveryManager(DiscoveryManagement2 discoveryMgr,
+    public ServiceDiscoveryManager(DiscoveryListenerManagement discoveryMgr,
                                    LeaseRenewalManager leaseMgr,
                                    Configuration config)
                                                 throws IOException,
@@ -3235,10 +3235,13 @@ public class ServiceDiscoveryManager {
     @Deprecated
     public DiscoveryManagement getDiscoveryManager() {
 	checkTerminated();
-	return new DiscManFacade(discMgr);
+        if ( discMgr instanceof DiscoveryManagement){
+            return (DiscoveryManagement) discMgr;
+        }
+	return null;
     }//end getDiscoveryManager
     
-    public DiscoveryManagement2 discoveryManager() {
+    public DiscoveryListenerManagement getDiscoveryListenerManager() {
         checkTerminated();
         return discMgr;
     }
@@ -3758,7 +3761,18 @@ public class ServiceDiscoveryManager {
 
     /** Discards a ServiceRegistrar through the discovery manager.*/
     private void discard(PortableServiceRegistrar proxy) {
-	discMgr.discard(proxy);
+        if (discMgr instanceof RegistrarManagement){
+            RegistrarManagement dm = (RegistrarManagement) discMgr;
+            dm.discard(proxy);
+        } 
+        // This will need to be commented out for Java cdc Personal Basis Profile
+        else if (discMgr instanceof DiscoveryManagement){
+            DiscoveryManagement dm = (DiscoveryManagement) discMgr;
+            if (proxy instanceof ServiceRegistrar){
+                ServiceRegistrar prxy = (ServiceRegistrar) proxy;
+                dm.discard(prxy);
+            }
+        }
     }//end discard
 
     /** Cancels the given event lease. */
@@ -3879,18 +3893,18 @@ public class ServiceDiscoveryManager {
 	return false;
     }//end isArrayContainsServiceItems
     
-    private void init(DiscoveryManagement discoveryMgr,
-                      LeaseRenewalManager leaseMgr,
-                      Configuration config)
-                                    throws IOException, ConfigurationException
-    {
-        init(new DiscMan2Facade(discoveryMgr), leaseMgr, config);
-    }
+//    private void init(DiscoveryManagement discoveryMgr,
+//                      LeaseRenewalManager leaseMgr,
+//                      Configuration config)
+//                                    throws IOException, ConfigurationException
+//    {
+//        init(discoveryMgr, leaseMgr, config);
+//    }
 
     /* Convenience method that encapsulates the retrieval of the configurable
      * items from the given <code>Configuration</code> object.
      */
-    private void init(DiscoveryManagement2 discoveryMgr,
+    private void init(DiscoveryListenerManagement discoveryMgr,
                       LeaseRenewalManager leaseMgr,
                       Configuration config)
                                     throws IOException, ConfigurationException
@@ -3933,11 +3947,11 @@ public class ServiceDiscoveryManager {
 	if(discMgr == null) {
 	    discMgrInternal = true;
             try {
-                // All Discovery Managers Must implement DiscoveryManagement2
-                discMgr = (DiscoveryManagement2)thisConfig.getEntry
-                                                   (COMPONENT_NAME,
-                                                    "discoveryManager",
-                                                    DiscoveryManagement2.class);
+                // All Discovery Managers Must implement RegistrarManagement
+                discMgr = (DiscoveryListenerManagement) thisConfig.getEntry(
+                                    COMPONENT_NAME,
+                                    "discoveryManager",
+                                    DiscoveryListenerManagement.class);
             } catch(NoSuchEntryException e) { /* use default */
                 discMgr = new LookupDiscoveryManager
                                    (new String[] {""}, null, null, thisConfig);

Modified: incubator/river/jtsk/trunk/src/org/apache/river/imp/security/policy/concurrent/DynamicConcurrentPolicyProvider.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/org/apache/river/imp/security/policy/concurrent/DynamicConcurrentPolicyProvider.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/org/apache/river/imp/security/policy/concurrent/DynamicConcurrentPolicyProvider.java (original)
+++ incubator/river/jtsk/trunk/src/org/apache/river/imp/security/policy/concurrent/DynamicConcurrentPolicyProvider.java Sat Jul 10 05:15:31 2010
@@ -15,6 +15,7 @@ import java.security.Provider;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -28,6 +29,7 @@ import java.util.logging.Logger;
 import net.jini.security.GrantPermission;
 import net.jini.security.policy.DynamicPolicy;
 import net.jini.security.policy.PolicyInitializationException;
+import net.jini.security.policy.UmbrellaGrantPermission;
 import org.apache.river.api.security.Denied;
 import org.apache.river.api.security.PermissionGrant;
 import org.apache.river.imp.security.policy.spi.RevokeableDynamicPolicySpi;
@@ -155,6 +157,10 @@ public class DynamicConcurrentPolicyProv
     
     /**
      * Idempotent method.
+     * 
+     * Actually we should consider allowing a null base policy so we can choose our own
+     * default.  Or pass in a string for the basePolicy to find it itself.
+     * 
      * @param basePolicy
      * @return
      */
@@ -202,6 +208,7 @@ public class DynamicConcurrentPolicyProv
         PermissionCollection mypc = getPermissions(own);
         mypc = PolicyUtils.toConcurrentPermissionsCopy(mypc);
         cache.putIfAbsent(own, mypc);
+        new GrantPermission(new UmbrellaGrantPermission());
     }
 
     public boolean revokeSupported() {
@@ -228,9 +235,27 @@ public class DynamicConcurrentPolicyProv
         if (initialized == false) throw new RuntimeException("Object not initialized");
         return basePolicy.getPermissions(domain);
     }
+    
+    /* River-26 Mark Brouwer suggested making UmbrellaPermission's expandable
+     * from Dynamic Grants.  Since it is the preferred behaviour of a
+     * RevokableDynamicPolicy, to minimise the Permission's granted by
+     * and underlying policy, so they can be later revoked, this is
+     * desireable behaviour.
+     */ 
+    private void expandUmbrella(PermissionCollection pc) {
+	if (pc.implies(new UmbrellaGrantPermission())) {
+	    List<Permission> l = Collections.list(pc.elements());
+	    pc.add(new GrantPermission(
+		       l.toArray(new Permission[l.size()])));
+	}
+    }
 
     public boolean implies(ProtectionDomain domain, Permission permission) {
         if (initialized == false) throw new RuntimeException("Object not initialized");
+        if (basePolicyIsDynamic){
+            // Total delegation revoke and deny not supported.
+            return basePolicy.implies(domain, permission);
+        }
         // Will this ProtectionDomain and Permission be denied?
         if (checkDenied){
             try {
@@ -243,25 +268,44 @@ public class DynamicConcurrentPolicyProv
                 }
             } finally { drl.unlock(); }
         }
-        // First check the our cache if the basePolicy is not dynamic.
+        // First check our cache if the basePolicy is not dynamic.
         PermissionCollection pc = cache.get(domain);
-        if (!basePolicyIsDynamic && pc != null) {
+        if ( pc != null ) {
             if (pc.implies(permission)) return true;           
         }
         // Then check the base policy, this will resolve any unresolved
         // permissions, but we should the add that domain's permissions to
         // our cache, to reduce any contention if the underlying policy
-        // is single threaded.
-        if (basePolicy.implies(domain, permission)) {
-            if (basePolicyIsDynamic) return true;
+        // is single threaded. 
+        else if ( basePolicy.implies(domain, permission)) {
+            // only fetch it if we don't have it already.
             PermissionCollection bpc = basePolicy.getPermissions(domain);
+           /* Don't use the underlying policy permission collection otherwise
+            * we can leak grants in to the underlying policy from our cache,
+            * this could then be merged into the PermissionDomain's permission
+            * cache negating the possiblity of revoking the permission.  This
+            * PolicyUtils method defensively copies or creates new if null.
+            */
             pc = PolicyUtils.toConcurrentPermissionsCopy(bpc);
-            cache.putIfAbsent(domain, pc); 
-            // Who cares if it's already there, we're not adding anything to it.
-            // Another thread might be, so don't replace it.
+            PermissionCollection existed = cache.putIfAbsent(domain, pc); 
+            if ( existed != null ){
+                pc = existed;
+            }
+            expandUmbrella(pc); // We need to avoid using PolicyFileProvider
             return true;
+        } else {
+            // We just called implies, so UnresolvedPermission's will be
+            // resolved, lets cache it, so we definitely have it.
+            PermissionCollection bpc = basePolicy.getPermissions(domain);
+            pc = PolicyUtils.toConcurrentPermissionsCopy(bpc);
+            PermissionCollection existed = cache.putIfAbsent(domain, pc); 
+            if ( existed != null ){
+                pc = existed;
+            }
+            expandUmbrella(pc);
         }
-        if (basePolicyIsDynamic) return false;
+        // Once we get to here pc is definitely not null and we have the
+        // copy referenced in the cache.
         if (loggable){
             logger.log(Level.FINEST, domain + permission.toString() + 
                     ": Base policy is not dynamic and returned false" );
@@ -281,19 +325,15 @@ public class DynamicConcurrentPolicyProv
         if (loggable) {
             logger.log(Level.FINEST, "Grants: " + dynamicallyGrantedPermissions.toString());
         }
-        if (dynamicallyGrantedPermissions.isEmpty()) return false;
-        // Operation starts to get expensive
-        if (pc == null){
-            pc = basePolicy.getPermissions(domain);
-           /* Don't use the underlying policy permission collection otherwise
-            * we can leak grants in to the underlying policy from our cache,
-            * this could then be merged into the PermissionDomain's permission
-            * cache negating the possiblity of revoking the permission.  This
-            * PolicyUtils method defensively copies or creates new if null.
-            */
-            pc = PolicyUtils.toConcurrentPermissionsCopy(pc);                  
-            PermissionCollection existed = cache.putIfAbsent(domain, pc);
-            if ( (existed != null) ){ pc = existed;} //Another thread might have just done it!
+        if (dynamicallyGrantedPermissions.isEmpty()) {
+            // We have no dynamic grants, but we might have an UmbrellaGrant
+            // that has just been expanded, the GrantPermission instanceof
+            // is just an optimisation.
+           if  (permission instanceof GrantPermission &&
+		 pc.implies(permission)) {
+                 return true;
+           }
+            return false;
         }
         Iterator<Permission> dgpi = dynamicallyGrantedPermissions.iterator();
         while (dgpi.hasNext()){
@@ -304,6 +344,8 @@ public class DynamicConcurrentPolicyProv
         if (loggable) {
             logger.log(Level.FINEST, "PermissionCollection: " + pc.toString());
         }
+        // We have added dynamic grants, lets expand them
+        expandUmbrella(pc);
         return pc.implies(permission);
     }
     

Modified: incubator/river/jtsk/trunk/test/src/org/apache/river/imp/security/policy/se/ConcurrentPolicyFileTest.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/test/src/org/apache/river/imp/security/policy/se/ConcurrentPolicyFileTest.java?rev=962760&r1=962759&r2=962760&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/test/src/org/apache/river/imp/security/policy/se/ConcurrentPolicyFileTest.java (original)
+++ incubator/river/jtsk/trunk/test/src/org/apache/river/imp/security/policy/se/ConcurrentPolicyFileTest.java Sat Jul 10 05:15:31 2010
@@ -40,7 +40,10 @@ import org.apache.river.imp.security.pol
 import org.apache.river.imp.security.policy.util.UnresolvedPrincipal;
 import org.apache.river.imp.security.policy.util.DefaultPolicyParser;
 import junit.framework.TestCase;
+import org.apache.river.api.security.PermissionGrant;
+import org.apache.river.api.security.PermissionGrantBuilder;
 import org.apache.river.imp.security.policy.se.ConcurrentPolicyFile;
+import org.apache.river.imp.security.policy.util.PermissionGrantBuilderImp;
 
 
 /**
@@ -55,14 +58,13 @@ public class ConcurrentPolicyFileTest ex
 
     static class TestParser extends DefaultPolicyParser {
 
-        PolicyEntry[] content;
+        PermissionGrant[] content;
 
-        public TestParser(PolicyEntry[] content) {
+        public TestParser(PermissionGrant[] content) {
             this.content = content;
         }
 
-        @Override
-        public Collection<PolicyEntry> parse(URL location, Properties system)
+        public Collection<PermissionGrant> parse(URL location, Properties system)
             throws Exception {
             if (content != null) {
                 return Arrays.asList(content);
@@ -76,17 +78,18 @@ public class ConcurrentPolicyFileTest ex
      */
     public void testRefresh() {
         Permission sp = new SecurityPermission("sdf");
-        PolicyEntry[] pe = new PolicyEntry[] { 
-            new PolicyEntry((CodeSource)null,
-                (Collection<Principal>)null,
-            Arrays.asList(new Permission[] { sp })) 
+        PermissionGrantBuilder pgb = new PermissionGrantBuilderImp();
+        PermissionGrant[] pe = new PermissionGrant[] { 
+            pgb.codeSource(null).principals(null)
+               .permissions(new Permission[] { sp })
+               .build()
         };
         TestParser tp = new TestParser(pe);
         ConcurrentPolicyFile policy = new ConcurrentPolicyFile(tp);
         CodeSource cs = new CodeSource(null, (Certificate[])null);
         assertTrue(policy.getPermissions(cs).implies(sp));
 
-        tp.content = new PolicyEntry[0];
+        tp.content = new PermissionGrant[0];
         policy.refresh();
         assertFalse(policy.getPermissions(cs).implies(sp));
 
@@ -110,21 +113,25 @@ public class ConcurrentPolicyFileTest ex
      * @throws java.lang.Exception 
      */
     public void testGetPermissions_CodeSource() throws Exception {
+        PermissionGrantBuilder pgb = new PermissionGrantBuilderImp();
         CodeSource cs = new CodeSource(null, (Certificate[])null);
         CodeSource cs2 = new CodeSource(new URL("http://a.b.c"),
             (Certificate[])null);
         Permission sp1 = new SecurityPermission("aaa");
         Permission sp2 = new SecurityPermission("bbb");
         Permission sp3 = new SecurityPermission("ccc");
-        PolicyEntry pe1 = new PolicyEntry(cs, null, Arrays
-            .asList(new Permission[] { sp1 }));
-        PolicyEntry pe2 = new PolicyEntry(cs2, new HashSet<Principal>(), Arrays
-            .asList(new Permission[] { sp2 }));
-        PolicyEntry pe3 = new PolicyEntry(cs, Arrays
-            .asList(new Principal[] { new FakePrincipal("qqq") }), Arrays
-            .asList(new Permission[] { sp3 }));
-        PolicyEntry[] peArray = new PolicyEntry[] {
-            pe1, pe2, pe3 };
+        PermissionGrant pe1 = pgb.codeSource(cs)
+                .permissions(new Permission[] { sp1 })
+                .build();
+        PermissionGrant pe2 = pgb.codeSource(cs2)
+                .principals(new Principal[0])
+                .permissions(new Permission[] { sp2 })
+                .build();
+        PermissionGrant pe3 = pgb.codeSource(cs)
+                .principals( new Principal[] {new FakePrincipal("qqq") })
+                .permissions(new Permission[] { sp3 })
+                        .build();
+        PermissionGrant[] peArray = new PermissionGrant[] { pe1, pe2, pe3};
         ConcurrentPolicyFile policy = new ConcurrentPolicyFile(new TestParser(peArray));
 
         assertTrue(policy.getPermissions(cs).implies(sp1));
@@ -141,6 +148,7 @@ public class ConcurrentPolicyFileTest ex
      * @throws java.lang.Exception 
      */
     public void testGetPermissions_ProtectionDomain() throws Exception {
+        PermissionGrantBuilder pgb = new PermissionGrantBuilderImp();
         Permission sp1 = new SecurityPermission("aaa");
         Permission sp2 = new SecurityPermission("bbb");
         Permission sp3 = new SecurityPermission("ccc");
@@ -154,22 +162,26 @@ public class ConcurrentPolicyFileTest ex
         ProtectionDomain pd1 = new ProtectionDomain(cs, null);
         ProtectionDomain pd2 = new ProtectionDomain(cs2, pcZ, null,
             new Principal[] { new FakePrincipal("qqq") });
-
-        PolicyEntry pe1 = new PolicyEntry(cs, null, Arrays
-            .asList(new Permission[] { sp1 }));
-        PolicyEntry pe2 = new PolicyEntry(cs2, Arrays
-            .asList(new Principal[] { new UnresolvedPrincipal(
-                UnresolvedPrincipal.WILDCARD, UnresolvedPrincipal.WILDCARD) }),
-            Arrays.asList(new Permission[] { sp2 }));
-        PolicyEntry pe3 = new PolicyEntry(cs, Arrays
-            .asList(new Principal[] { new UnresolvedPrincipal(
-                FakePrincipal.class.getName(), "qqq") }), Arrays
-            .asList(new Permission[] { sp3 }));
-        PolicyEntry pe4 = new PolicyEntry(cs2, Arrays
-            .asList(new Principal[] { new UnresolvedPrincipal(
-                FakePrincipal.class.getName(), "ttt") }), Arrays
-            .asList(new Permission[] { sp4 }));
-        PolicyEntry[] peArray = new PolicyEntry[] {
+        
+        PermissionGrant pe1 = pgb.codeSource(cs)
+                .permissions(new Permission[] { sp1 })
+                .build();
+        PermissionGrant pe2 = pgb.codeSource(cs2)
+                .principals(new Principal[] { new UnresolvedPrincipal(
+                UnresolvedPrincipal.WILDCARD, UnresolvedPrincipal.WILDCARD) })
+                .permissions(new Permission[] { sp2 })
+                .build();
+        PermissionGrant pe3 = pgb.codeSource(cs)
+                .principals(new Principal[] { new UnresolvedPrincipal(
+                FakePrincipal.class.getName(), "qqq") })
+                .permissions(new Permission[] { sp3 })
+                .build();
+        PermissionGrant pe4 = pgb.codeSource(cs2)
+                .principals(new Principal[] { new UnresolvedPrincipal(
+                FakePrincipal.class.getName(), "ttt") })
+                .permissions(new Permission[] { sp4 })
+                .build();
+        PermissionGrant[] peArray = new PermissionGrant[]{
             pe1, pe2, pe3, pe4 };
         ConcurrentPolicyFile policy = new ConcurrentPolicyFile(new TestParser(peArray));