You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by jc...@apache.org on 2010/09/16 01:45:53 UTC

svn commit: r997542 [2/2] - in /incubator/river/jtsk/trunk: examples/hello/src/com/sun/jini/example/hello/ qa/src/com/sun/jini/test/impl/joinmanager/ qa/src/com/sun/jini/test/spec/joinmanager/ src/com/sun/jini/discovery/ src/com/sun/jini/discovery/inte...

Modified: incubator/river/jtsk/trunk/src/net/jini/io/MarshalledInstance.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/net/jini/io/MarshalledInstance.java?rev=997542&r1=997541&r2=997542&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/io/MarshalledInstance.java (original)
+++ incubator/river/jtsk/trunk/src/net/jini/io/MarshalledInstance.java Wed Sep 15 23:45:52 2010
@@ -24,6 +24,7 @@ import java.io.InputStream;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.io.ObjectStreamClass;
 import java.io.ObjectStreamException;
 import java.io.OutputStream;
 import java.io.Serializable;
@@ -68,7 +69,7 @@ import net.jini.io.context.IntegrityEnfo
  * @author Sun Microsystems, Inc.
  * @since 2.0
  */
-public class MarshalledInstance<T> implements Serializable {
+public class MarshalledInstance implements Serializable {
 
     /**
      * @serial Bytes of serialized representation.  If <code>objBytes</code> is
@@ -93,14 +94,6 @@ public class MarshalledInstance<T> imple
 
     static final long serialVersionUID = -5187033771082433496L;
     
-    MarshalledInstance(net.jini.io.MarshalledObject<T> mo){
-        if ( mo == null) throw new NullPointerException("MarshalledObject was null");
-        // for some reason objBytes.clone() throws a null pointer exception.
-        objBytes = Arrays.copyOf(mo.objBytes, mo.objBytes.length);
-        locBytes = mo.locBytes;
-        hash = mo.hash;
-    }
-    
     /**
      * Creates a new <code>MarshalledInstance</code> that contains the
      * marshalled representation of the current state of the supplied
@@ -114,7 +107,7 @@ public class MarshalledInstance<T> imple
      *          <code>MarshalledInstance</code>
      * @throws IOException if the object cannot be serialized
      */
-    public MarshalledInstance(T obj) throws IOException {
+    public MarshalledInstance(Object obj) throws IOException {
 	this(obj, Collections.EMPTY_SET);
     }
 
@@ -133,7 +126,7 @@ public class MarshalledInstance<T> imple
      * @throws IOException if the object cannot be serialized
      * @throws NullPointerException if <code>context</code> is <code>null</code>
      */
-    public MarshalledInstance(T obj, Collection context)
+    public MarshalledInstance(Object obj, Collection context)
 	throws IOException
     {
 	if (context == null)
@@ -183,10 +176,8 @@ public class MarshalledInstance<T> imple
      *        the object the new <code>MarshalledInstance</code> should
      *        contain
      * @throws NullPointerException if <code>mo</code> is <code>null</code>
-     * @deprecated As of Release 2.2.0 replaced by {@link Convert}
      */
-    @Deprecated
-    public MarshalledInstance(java.rmi.MarshalledObject<T> mo) {
+    public MarshalledInstance(java.rmi.MarshalledObject mo) {
 
 	if (mo == null)
 	    throw new NullPointerException();
@@ -197,9 +188,22 @@ public class MarshalledInstance<T> imple
 	// version of MarshalledObject allows access to the needed
 	// fields.
 	//
-        Convert<T> convert = new Convert<T>();
-	net.jini.io.MarshalledObject<T> privateMO = 
-                convert.toJiniMarshalledObject(mo);
+	net.jini.io.MarshalledObject privateMO = null;
+	try {
+	    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+	    ObjectOutputStream oos = new ObjectOutputStream(baos);
+	    oos.writeObject(mo);
+	    oos.flush();
+	    byte[] bytes = baos.toByteArray();
+	    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+	    ObjectInputStream ois = new FromMOInputStream(bais);
+	    privateMO =
+		(net.jini.io.MarshalledObject)ois.readObject();
+	} catch (IOException ioe) {
+	    throw new AssertionError(ioe);
+	} catch (ClassNotFoundException cnfe) {
+	    throw new AssertionError(cnfe);
+	}
 	objBytes = privateMO.objBytes;
 	locBytes = privateMO.locBytes;
 	hash = privateMO.hash;
@@ -212,27 +216,44 @@ public class MarshalledInstance<T> imple
      * <p>
      * The object contained in this <code>MarshalledInstance</code>
      * object will not be unmarshalled as part of this call.
-     * @deprecated As of Release 2.2.0 replaced by {@link Convert}
      * @return A new <code>MarshalledObject</code> which
      *        contains an object equivalent to the object
      *        contained in this <code>MarshalledInstance</code>
      */
-    @SuppressWarnings("unchecked")
-    @Deprecated
-    public java.rmi.MarshalledObject<T> convertToMarshalledObject() {
-        Convert convert = Convert.getInstance();
-        return convert.toRmiMarshalledObject(this);
-    }
-    
-    MarshalledObject<T> asMarshalledObject(){
-        MarshalledObject<T> mo = new MarshalledObject<T>();
-        // Don't worry about defensive copies, this is package private.
-        mo.objBytes = objBytes;
-        mo.locBytes = locBytes;
-        mo.hash = hash;
-        return mo;
+    public java.rmi.MarshalledObject convertToMarshalledObject() {
+
+	// To create a java.rmi.MarshalledObject with previously
+	// serialized data we first create a private
+	// net.jini.io.MarshalledObject with the
+	// data and then convert it to the final object by changing
+	// the class during readObject(). (See resolveClass() in
+	// ToMOInputStream)
+	//
+	net.jini.io.MarshalledObject privateMO =
+		new net.jini.io.MarshalledObject();
+
+	privateMO.objBytes = objBytes;
+	privateMO.locBytes = locBytes;
+	privateMO.hash = hash;
+
+	java.rmi.MarshalledObject mo = null;
+	try {
+	    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+	    ObjectOutputStream oos = new ObjectOutputStream(baos);
+	    oos.writeObject(privateMO);
+	    oos.flush();
+	    byte[] bytes = baos.toByteArray();
+	    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
+	    ObjectInputStream ois = new ToMOInputStream(bais);
+	    mo = (java.rmi.MarshalledObject)ois.readObject();
+	} catch (IOException ioe) {
+	    throw new AssertionError(ioe);
+	} catch (ClassNotFoundException cnfe) {
+	    throw new AssertionError(cnfe);
+	}
+	return mo;
     }
-    
+
     /**
      * Returns a new copy of the contained object. Deserialization is
      * performed with the semantics defined by <code>MarshalInputStream</code>.
@@ -260,7 +281,7 @@ public class MarshalledInstance<T> imple
      *         is <code>true</code> and the integrity of the
      *         contained object's codebase cannot be confirmed
      */
-    public T get(final boolean verifyCodebaseIntegrity) 
+    public Object get(final boolean verifyCodebaseIntegrity) 
 	throws IOException, ClassNotFoundException 
     {
 	return get(null, verifyCodebaseIntegrity, null, null);
@@ -306,7 +327,7 @@ public class MarshalledInstance<T> imple
      *         is <code>true</code> and the integrity of the
      *         contained object's codebase cannot be confirmed
      */
-    public T get(ClassLoader defaultLoader,
+    public Object get(ClassLoader defaultLoader,
 		      final boolean verifyCodebaseIntegrity,
 		      ClassLoader verifierLoader,
 		      Collection context)
@@ -334,8 +355,7 @@ public class MarshalledInstance<T> imple
 					      verifierLoader,
 					      context);
 	in.useCodebaseAnnotations();
-        @SuppressWarnings("unchecked")
-	T obj = (T) in.readObject();
+	Object obj = in.readObject();
 	in.close();
 	return obj;
     }
@@ -419,55 +439,166 @@ public class MarshalledInstance<T> imple
      */
     private void readObjectNoData() throws ObjectStreamException {
 	throw new InvalidObjectException("Bad class hierarchy");
-    } 
-    
-    private static class MarshalledInstanceInputStream extends MarshalInputStream {
+    }
+
+    /**
+     * This class is used to marshal objects for
+     * <code>MarshalledInstance</code>.  It places the location annotations
+     * to one side so that two <code>MarshalledInstance</code>s can be
+     * compared for equality if they differ only in location
+     * annotations.  Objects written using this stream should be read back
+     * from a <code>MarshalledInstanceInputStream</code>.
+     *   
+     * @see MarshalledInstanceInputStream
+     */  
+    private static class MarshalledInstanceOutputStream
+        extends MarshalOutputStream
+    {
+	/** The stream on which location objects are written. */
+	private ObjectOutputStream locOut;
+ 
+	/** <code>true</code> if non-<code>null</code> annotations are
+	 *  written.
+	 */
+	private boolean hadAnnotations;
+
+	/**
+	 * Creates a new <code>MarshalledObjectOutputStream</code> whose
+	 * non-location bytes will be written to <code>objOut</code> and whose
+	 * location annotations (if any) will be written to
+	 * <code>locOut</code>.
+	 */
+	public MarshalledInstanceOutputStream(OutputStream objOut,
+					      OutputStream locOut,
+					      Collection context)
+	    throws IOException
+	{
+	    super(objOut, context);
+	    this.locOut = new ObjectOutputStream(locOut);
+	    hadAnnotations = false;
+	}
+ 
+	/**
+	 * Returns <code>true</code> if any non-<code>null</code> location
+	 * annotations have been written to this stream.
+	 */
+	public boolean hadAnnotations() {
+	    return hadAnnotations;
+	}
+ 
+	/**
+	 * Overrides <code>MarshalOutputStream.writeAnnotation</code>
+	 * implementation to write annotations to the location stream.
+	 */
+	protected void writeAnnotation(String loc) throws IOException {
+	    hadAnnotations |= (loc != null);
+	    locOut.writeObject(loc);
+	}
 
-        private ObjectInputStream locIn;
+	public void flush() throws IOException {
+	    super.flush();
+	    locOut.flush();
+	}
+    }
+
+    /**
+     * The counterpart to <code>MarshalledInstanceOutputStream</code>.
+     *   
+     * @see MarshalledInstanceOutputStream
+     */  
+    private static class MarshalledInstanceInputStream
+        extends MarshalInputStream
+    {
+	/**
+	 * The stream from which annotations will be read.  If this is
+	 * <code>null</code>, then all annotations were <code>null</code>.
+	 */
+	private ObjectInputStream locIn;
+ 
+	/**
+	 * Creates a new <code>MarshalledObjectInputStream</code> that
+	 * reads its objects from <code>objIn</code> and annotations
+	 * from <code>locIn</code>.  If <code>locIn</code> is
+	 * <code>null</code>, then all annotations will be
+	 * <code>null</code>.
+	 */
+	MarshalledInstanceInputStream(InputStream objIn,
+				      InputStream locIn,
+				      ClassLoader defaultLoader,
+				      boolean verifyCodebaseIntegrity,
+				      ClassLoader verifierLoader,
+				      Collection context)
+	    throws IOException
+	{
+	    super(objIn,
+		  defaultLoader,
+		  verifyCodebaseIntegrity,
+		  verifierLoader,
+		  context);
+	    this.locIn = (locIn == null ? null : new ObjectInputStream(locIn));
+	}
+ 
+	/**
+	 * Overrides <code>MarshalInputStream.readAnnotation</code> to
+	 * return locations from the stream we were given, or <code>null</code>
+	 * if we were given a <code>null</code> location stream.
+	 */
+	protected String readAnnotation()
+	    throws IOException, ClassNotFoundException
+	{
+	    return (locIn == null ? null : (String)locIn.readObject());
+	}
+    }    
+
+    /**
+     * Input stream to convert <code>java.rmi.MarshalledObject</code>
+     * into <code>net.jini.io.MarshalledObject</code>.
+     */
+    private static class FromMOInputStream extends ObjectInputStream {
 
-        MarshalledInstanceInputStream(InputStream objIn, InputStream locIn, ClassLoader defaultLoader, boolean verifyCodebaseIntegrity, ClassLoader verifierLoader, Collection context) throws IOException {
-            super(objIn, defaultLoader, verifyCodebaseIntegrity, verifierLoader, context);
-            this.locIn = (locIn == null ? null : new ObjectInputStream(locIn));
-        }
-
-        @Override
-        protected String readAnnotation() throws IOException, ClassNotFoundException {
-            return locIn == null ? null : (String) locIn.readObject();
-        }
+	public FromMOInputStream(InputStream in) throws IOException {
+	    super(in);
+	}
+ 
+	/**
+	 * Overrides <code>ObjectInputStream.resolveClass</code> to change
+	 * an occurence of class <code>java.rmi.MarshalledObject</code> to
+	 * class <code>net.jini.io.MarshalledObject</code>.
+	 */
+	protected Class resolveClass(ObjectStreamClass desc)
+	    throws IOException, ClassNotFoundException
+	{
+	    if (desc.getName().equals("java.rmi.MarshalledObject")) {
+		return net.jini.io.MarshalledObject.class;
+	    }
+	    return super.resolveClass(desc);
+	}
     }
-    
-    private static class MarshalledInstanceOutputStream extends MarshalOutputStream {
 
-        private ObjectOutputStream locOut;
-        /** <code>true</code> if non-<code>null</code> annotations are
-         *  written.
-         */
-        private boolean hadAnnotations;
-
-        public MarshalledInstanceOutputStream(OutputStream objOut, OutputStream locOut, Collection context) throws IOException {
-            super(objOut, context);
-            this.locOut = new ObjectOutputStream(locOut);
-            hadAnnotations = false;
-        }
-
-        /**
-         * Returns <code>true</code> if any non-<code>null</code> location
-         * annotations have been written to this stream.
-         */
-        public boolean hadAnnotations() {
-            return hadAnnotations;
-        }
-
-        @Override
-        protected void writeAnnotation(String loc) throws IOException {
-            hadAnnotations |= (loc != null);
-            locOut.writeObject(loc);
-        }
-
-        @Override
-        public void flush() throws IOException {
-            super.flush();
-            locOut.flush();
-        }
+    /**
+     * Input stream to convert
+     * <code>net.jini.io.MarshalledObject</code> into
+     * <code>java.rmi.MarshalledObject</code>.
+     */
+    private static class ToMOInputStream extends ObjectInputStream {
+
+	public ToMOInputStream(InputStream in) throws IOException {
+	    super(in);
+	}
+ 
+	/**
+	 * Overrides <code>ObjectInputStream.resolveClass</code>
+	 * to change an occurence of class
+	 * <code>net.jini.io.MarshalledObject</code>
+	 * to class <code>java.rmi.MarshalledObject</code>.
+	 */
+	protected Class resolveClass(ObjectStreamClass desc)
+	    throws IOException, ClassNotFoundException
+	{
+	    if (desc.getName().equals("net.jini.io.MarshalledObject")) {
+		return java.rmi.MarshalledObject.class;
+	    }
+	    return super.resolveClass(desc);
+	}
     }
 }

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=997542&r1=997541&r2=997542&view=diff
==============================================================================
--- incubator/river/jtsk/trunk/src/net/jini/lookup/JoinManager.java (original)
+++ incubator/river/jtsk/trunk/src/net/jini/lookup/JoinManager.java Wed Sep 15 23:45:52 2010
@@ -53,10 +53,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import net.jini.core.lookup.PortableServiceRegistrar;
-import net.jini.discovery.DiscoveryListenerManagement;
-import net.jini.discovery.RegistrarManagement;
-import org.apache.river.api.util.Facade;
 
 /**
  * A goal of any well-behaved service is to advertise the facilities and
@@ -441,31 +437,7 @@ import org.apache.river.api.util.Facade;
  * @see java.util.logging.Logger
  */
 public class JoinManager {
-    
-    private static void discard(DiscoveryListenerManagement dlm, 
-            PortableServiceRegistrar proxy, Logger logger){
-        try {
-            if (dlm instanceof RegistrarManagement){
-                RegistrarManagement rm = (RegistrarManagement) dlm;
-                rm.discard(proxy);
-            } else {
-                throw new UnsupportedOperationException("Not instance of " +
-                        "RegistrarManagement");
-            }
-        } catch(IllegalStateException e1) {
-           logger.log(Level.FINEST,
-                      "JoinManager - cannot discard lookup, "
-                      +"discovery manager already terminated",
-                      e1);
-        } catch(UnsupportedOperationException ex){
-            logger.log(Level.FINEST,
-                      "JoinManager - cannot discard lookup, "
-                      +"DiscoveryManager not supported on this" +
-                      " platform, use RegistrarManagement instead.",
-                      ex);
-        }
-    }
-     
+
     /** Implementation Note:
      *
      *  This class executes a number of tasks asynchronously. Each task is
@@ -1173,7 +1145,7 @@ public class JoinManager {
          *  this class, and with which this join manager's service will be
          *  registered.
          */
-	public PortableServiceRegistrar proxy;
+	public ServiceRegistrar proxy;
         /** The <i>prepared</i> registration proxy returned by this class'
          *  associated lookup service when this join manager registers its
          *  associated service.
@@ -1201,12 +1173,12 @@ public class JoinManager {
 	 *               which the sub-tasks referenced in this class will be
 	 *               executed in order
          */
-	public ProxyReg(PortableServiceRegistrar proxy) {
+	public ProxyReg(ServiceRegistrar proxy) {
 	    if(proxy == null)  throw new IllegalArgumentException
                                                       ("proxy can't be null");
 	    this.proxy = proxy;
-	}//end constructor
-        
+	}//end constructor	    
+
         /** Convenience method that adds new sub-tasks to this class' 
          *  task queue.
          *
@@ -1354,12 +1326,17 @@ public class JoinManager {
 		    LogUtil.logThrow(logger, Level.INFO, ProxyReg.class, "fail",
 			"JoinManager - failure for lookup service proxy: {0}",
 			new Object[] { proxy }, e);
-		    discard(discMgr, proxy, logger);
+		    try {
+			discMgr.discard(proxy);
+		    } catch(IllegalStateException e1) {
+		       logger.log(Level.FINEST,
+				  "JoinManager - cannot discard lookup, "
+				  +"discovery manager already terminated",
+				  e1);
+		    }
 		}//endif
 	    }//end sync(this)
 	}//end ProxyReg.fail
-        
-
 
 	/** Returns true if the both objects' associated proxies are equal. */
 	public boolean equals(Object obj) {
@@ -1382,15 +1359,15 @@ public class JoinManager {
 	/* Invoked when new or previously discarded lookup is discovered. */
 	public void discovered(DiscoveryEvent e) {
 	    synchronized(joinSet) {
-		PortableServiceRegistrar[] proxys
-				       = (PortableServiceRegistrar[])e.getPRegistrars();
+		ServiceRegistrar[] proxys
+				       = (ServiceRegistrar[])e.getRegistrars();
 		for(int i=0;i<proxys.length;i++) {
 		    /* Prepare the proxy to the discovered lookup service
 					 * before interacting with it.
 					 */
 		    try {
 			proxys[i]
-			  = (PortableServiceRegistrar)registrarPreparer.prepareProxy
+			  = (ServiceRegistrar)registrarPreparer.prepareProxy
 								   (proxys[i]);
 			logger.log(Level.FINEST, "JoinManager - discovered "
 				   +"lookup service proxy prepared: {0}",
@@ -1400,7 +1377,7 @@ public class JoinManager {
 			    DiscMgrListener.class, "discovered", "failure "
 			    + "preparing discovered ServiceRegistrar proxy: "
 			    + "{0}", new Object[] { proxys[i] }, e1);
-			discard( discMgr, proxys[i], logger);
+			discMgr.discard(proxys[i]);
 			continue;
 		    }
 		    /* If the serviceItem is a lookup service, don't need to
@@ -1499,11 +1476,11 @@ public class JoinManager {
      *  references a proxy to one of the lookup services with which this
      *  join manager's service is registered.
      */
-    private final ArrayList<ProxyReg> joinSet = new ArrayList<ProxyReg>(1);
+    private final ArrayList joinSet = new ArrayList(1);
     /** Contains the discovery manager that discovers the lookup services
      *  with which this join manager will register its associated service.
      */
-    private DiscoveryListenerManagement discMgr = null;
+    private DiscoveryManagement discMgr = null;
     /** Contains the discovery listener registered by this join manager with
      *  the discovery manager so that this join manager is notified whenever
      *  one of the desired lookup services is discovered or discarded.
@@ -1635,10 +1612,7 @@ 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
      public JoinManager(Object serviceProxy,
                         Entry[] attrSets,
 			ServiceIDListener callback,
@@ -1651,20 +1625,6 @@ public class JoinManager {
                              EmptyConfiguration.INSTANCE);
         } catch(ConfigurationException e) { /* swallow this exception */ }
     }//end constructor
-     
-     public JoinManager(Object serviceProxy,
-                        Entry[] attrSets,
-			ServiceIDListener callback,
-                        DiscoveryListenerManagement discoveryMgr,
-			LeaseRenewalManager leaseMgr
-                        )    throws IOException
-    {
-        discMgr = discoveryMgr;
-        try {
-           createJoinManager(null, serviceProxy, attrSets, callback, leaseMgr,
-                             EmptyConfiguration.INSTANCE);
-        } catch(ConfigurationException e) { /* swallow this exception */ }
-    }//end constructor
 
     /** 
      * Constructs an instance of this class, configured using the items
@@ -1769,7 +1729,6 @@ public class JoinManager {
      * @see net.jini.config.Configuration
      * @see net.jini.config.ConfigurationException
      */
-     @Deprecated
      public JoinManager(Object serviceProxy,
                         Entry[] attrSets,
 			ServiceIDListener callback,
@@ -1783,19 +1742,6 @@ public class JoinManager {
                           callback, leaseMgr, config);
     }//end constructor
 
-     public JoinManager(Object serviceProxy,
-                        Entry[] attrSets,
-			ServiceIDListener callback,
-                        DiscoveryListenerManagement discoveryMgr,
-                        LeaseRenewalManager leaseMgr,			
-                        Configuration config)
-                                    throws IOException, ConfigurationException
-    {
-        discMgr = discoveryMgr;
-        createJoinManager(null, serviceProxy, attrSets,
-                          callback, leaseMgr, config);
-    }//end constructor
-     
     /** 
      * Constructs an instance of this class that will register the
      * service with all discovered lookup services, using the supplied 
@@ -1845,7 +1791,6 @@ public class JoinManager {
      * @see net.jini.discovery.LookupDiscoveryManager
      * @see net.jini.lease.LeaseRenewalManager
      */
-     @Deprecated
      public JoinManager(Object serviceProxy,
                         Entry[] attrSets,
 			ServiceID serviceID,
@@ -1860,22 +1805,6 @@ public class JoinManager {
         } catch(ConfigurationException e) { /* swallow this exception */ }
     }//end constructor
 
-     public JoinManager(Object serviceProxy,
-                        Entry[] attrSets,
-			ServiceID serviceID,
-                        DiscoveryListenerManagement discoveryMgr,
-                        LeaseRenewalManager leaseMgr
-			)
-                        throws IOException
-    {
-        discMgr = discoveryMgr;
-        try {
-           createJoinManager(serviceID, serviceProxy, attrSets,
-                             (ServiceIDListener)null, leaseMgr,
-                             EmptyConfiguration.INSTANCE);
-        } catch(ConfigurationException e) { /* swallow this exception */ }
-    }//end constructor
-     
     /** 
      * Constructs an instance of this class, configured using the items
      * retrieved through the given <code>Configuration</code>, that will
@@ -1940,7 +1869,6 @@ public class JoinManager {
      * @see net.jini.config.Configuration
      * @see net.jini.config.ConfigurationException
      */
-     @Deprecated
      public JoinManager(Object serviceProxy,
                         Entry[] attrSets,
 			ServiceID serviceID,
@@ -1953,19 +1881,6 @@ public class JoinManager {
         createJoinManager(serviceID, serviceProxy, attrSets,
                           (ServiceIDListener)null, leaseMgr, config);
     }//end constructor
-     
-     public JoinManager(Object serviceProxy,
-                        Entry[] attrSets,
-			ServiceID serviceID,
-                        DiscoveryListenerManagement discoveryMgr,
-                        LeaseRenewalManager leaseMgr,			
-                        Configuration config)
-                                    throws IOException, ConfigurationException
-    {
-        discMgr = discoveryMgr;
-        createJoinManager(serviceID, serviceProxy, attrSets,
-                          (ServiceIDListener)null, leaseMgr, config);
-    }//end constructor
 
     /** 
      * Returns the instance of <code>DiscoveryManagement</code> that was
@@ -1984,54 +1899,16 @@ public class JoinManager {
      * 
      * @see net.jini.discovery.DiscoveryManagement
      * @see net.jini.discovery.LookupDiscoveryManager
-     * @deprecated replaced by {@link #discoveryManager()}
      */
-    @Deprecated
     public DiscoveryManagement getDiscoveryManager(){
         synchronized(this) {
             if(bTerminated) {
                 throw new IllegalStateException("join manager was terminated");
             }//endif
         }//end sync
-        // 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 null;
-        
-    }//end getDiscoveryManager
-    
-    /** 
-     * Returns the instance of <code>DiscoveryListenerManagement</code> that was
-     * either passed into the constructor, or that was created as a result
-     * of <code>null</code> being input to that parameter.
-     * <p>
-     * The object returned by this method encapsulates the mechanism by which
-     * either the <code>JoinManager</code> or the entity itself can set
-     * discovery listeners and discard previously discovered lookup services
-     * when they are found to be unavailable.
-     *
-     * @return the instance of the <code>DiscoveryListenerManagement</code> interface
-     *         that was either passed into the constructor, or that was
-     *         created as a result of <code>null</code> being input to that
-     *         parameter.
-     * 
-     * @see net.jini.discovery.DiscoveryListenerManagement
-     * @see net.jini.discovery.RegistrarManagement
-     * @see net.jini.discovery.LookupDiscoveryManager
-     */
-    public DiscoveryListenerManagement discoveryManager(){
-        synchronized(this) {
-            if(bTerminated) {
-                throw new IllegalStateException("join manager was terminated");
-            }//endif
-        }//end sync
-        // Don't need to worry about revealing facades, they do that in their
-        // constructor.
-	return discMgr;
+	return discMgr; 
     }//end getDiscoveryManager
-    
+
     /** 
      * Returns the instance of the <code>LeaseRenewalManager</code> class
      * that was either passed into the constructor, or that was created
@@ -2061,7 +1938,6 @@ public class JoinManager {
 	return leaseRenewalMgr;
     }//end getLeaseRenewalManager
 
-
     /** 
      * Returns an array of <code>ServiceRegistrar</code> objects, each
      * corresponding to a lookup service with which the service is currently
@@ -2075,7 +1951,7 @@ public class JoinManager {
      * 
      * @see net.jini.core.lookup.ServiceRegistrar
      */
-    public PortableServiceRegistrar[] getPJoinSet() {
+    public ServiceRegistrar[] getJoinSet() {
         synchronized(this) {
             if(bTerminated) {
                 throw new IllegalStateException("join manager was terminated");
@@ -2090,38 +1966,11 @@ public class JoinManager {
                     retList.add(proxyReg.proxy);
                 }//endif
 	    }//end loop
-            return ( (PortableServiceRegistrar[])(retList.toArray
-                                 (new PortableServiceRegistrar[retList.size()]) ) );
-	}//end sync(joinSet)
-    }//end getPJoinSet
-    
-    @Deprecated
-    public ServiceRegistrar[] getJoinSet() {
-        synchronized(this) {
-            if(bTerminated) {
-                throw new IllegalStateException("join manager was terminated");
-            }//endif
-        }//end sync
-	synchronized(joinSet) {
-            ArrayList<ServiceRegistrar> retList = 
-                    new ArrayList<ServiceRegistrar>(joinSet.size());
-	    int k = 0;
-	    for (Iterator iter = joinSet.iterator(); iter.hasNext(); ) {
-                ProxyReg proxyReg = (ProxyReg)iter.next();
-                if(proxyReg.srvcRegistration != null) {//test registration flag
-                    PortableServiceRegistrar psr = proxyReg.proxy;
-                    if (psr instanceof ServiceRegistrar){
-                        retList.add((ServiceRegistrar)psr);
-                    }else{
-                        retList.add(new ServiceRegistrarFacade(psr));
-                    }
-                }//endif
-	    }//end loop
             return ( (ServiceRegistrar[])(retList.toArray
                                  (new ServiceRegistrar[retList.size()]) ) );
 	}//end sync(joinSet)
     }//end getJoinSet
-    
+
     /** 
      * Returns an array containing the set of attributes currently associated
      * with the service. If the service is not currently associated with an
@@ -2711,12 +2560,10 @@ public class JoinManager {
 	if(discMgr == null) {
 	    bCreateDiscMgr = true;
             try {
-                // Changed to the new Interface which all DiscoveryManagers
-                // must implement.
-                discMgr = (DiscoveryListenerManagement)config.getEntry
+                discMgr = (DiscoveryManagement)config.getEntry
                                                  (COMPONENT_NAME,
                                                   "discoveryManager",
-                                                  DiscoveryListenerManagement.class);
+                                                  DiscoveryManagement.class);
             } catch(NoSuchEntryException e) { /* use default */
                 discMgr = new LookupDiscoveryManager
                                      (new String[] {""}, null, null, config);
@@ -2730,11 +2577,7 @@ public class JoinManager {
      *  such an element, returns that element; otherwise returns
      *  <code>null</code>.
      */
-    private ProxyReg findReg(PortableServiceRegistrar proxy) {
-        while ( proxy instanceof Facade){
-            Facade f = (Facade)proxy;
-            proxy = (PortableServiceRegistrar) f.reveal();
-        }
+    private ProxyReg findReg(ServiceRegistrar proxy) {
 	for (Iterator iter = joinSet.iterator(); iter.hasNext(); ) {
 	    ProxyReg reg =(ProxyReg)iter.next();
 	    if(reg.proxy.equals(proxy))  return reg;