hammant     2002/10/13 06:40:01

  Modified:    altrmi   build.xml
               altrmi/src/java/org/apache/excalibur/altrmi/client/impl
                        AbstractAltrmiFactory.java
                        AbstractSameVmBindableHostContext.java
               altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket
                        SocketCustomStreamHostContext.java
                        SocketObjectStreamHostContext.java
               altrmi/src/java/org/apache/excalibur/altrmi/registry
                        Registry.java
               altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket
                        CompleteSocketCustomStreamServer.java
                        PartialSocketCustomStreamServer.java
                        PartialSocketObjectStreamServer.java
  Log:
  Client no longer directly references Registry.  Can be in different classloader or 
absent.
  
  Revision  Changes    Path
  1.41      +1 -0      jakarta-avalon-excalibur/altrmi/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/build.xml,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- build.xml 13 Oct 2002 11:54:24 -0000      1.40
  +++ build.xml 13 Oct 2002 13:40:00 -0000      1.41
  @@ -321,6 +321,7 @@
                   <include name="org/apache/excalibur/altrmi/common/*.java"/>
                   <include name="org/apache/excalibur/altrmi/generator/*.java"/>
                   <include name="org/apache/excalibur/altrmi/server/*.java"/>
  +                <include name="org/apache/excalibur/altrmi/registry/**.java"/>
                   <include name="org/apache/excalibur/altrmi/server/impl/*.java"/>    
            
                   <include 
name="org/apache/excalibur/altrmi/server/impl/adapters/*.java"/>
                   <include 
name="org/apache/excalibur/altrmi/server/impl/callback/*.java"/>
  
  
  
  1.10      +21 -13    
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractAltrmiFactory.java
  
  Index: AbstractAltrmiFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractAltrmiFactory.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AbstractAltrmiFactory.java        13 Oct 2002 11:54:25 -0000      1.9
  +++ AbstractAltrmiFactory.java        13 Oct 2002 13:40:00 -0000      1.10
  @@ -120,15 +120,23 @@
                   AbstractSameVmBindableHostContext sameVmBindableHostContext =
                           (AbstractSameVmBindableHostContext) m_hostContext;
                   m_hostContext = sameVmBindableHostContext.makeSameVmHostContext();
  -                m_clientInvocationHandler = 
m_hostContext.getClientInvocationHandler();
  -                reply = m_clientInvocationHandler.handleInvocation(new 
OpenConnectionRequest() );
  -
  +                if (m_hostContext == null)
  +                {
  +                    // Registry not found, or a different instance to the one
  +                    // the server placed its piped instance in.
  +                    // revert to non optimized.
  +                    m_clientInvocationHandler.handleInvocation(new 
OpenConnectionRequest( null ) );
  +                }
  +                else
  +                {
  +                    m_clientInvocationHandler = 
m_hostContext.getClientInvocationHandler();
  +                    reply = m_clientInvocationHandler.handleInvocation(new 
OpenConnectionRequest() );
  +                }
               }
               else
               {
                   throw new IOException("SameVM instruction for non rebindable host 
context.");
               }
  -
           }
   
           if( reply instanceof OpenConnectionReply )
  @@ -352,8 +360,8 @@
               };
           }
       }
  -    
  -    
  +
  +
       /**
        * Wraps the reference to the remote obj within the FacadeRefHolder obj.
        * @param obj
  @@ -367,10 +375,10 @@
   
           return new FacadeRefHolder( refID, objectName );
       }
  -    
   
  -    
  -       
  +
  +
  +
       public void marshallCorrection( String methodSignature, Object[] args, Class[] 
argClasses )
       {
   
  @@ -383,13 +391,13 @@
               if(args[i] instanceof AltrmiProxy)
               {
                   AltrmiProxy proxy = (AltrmiProxy)args[i];
  -    
  +
                       if( getReferenceID( proxy ) != null )
                       {
                           //The stripping "AltrmiGenerated2" from the proxy names 
generated by
                           //ProxyGenerator's:- "AltrmiGenerated2".length()=16
                           String objName = args[i].getClass().getName().substring( 16 
);
  -    
  +
                           args[i]= makeFacadeRefHolder( proxy, objName );
                       }
               }
  @@ -399,5 +407,5 @@
               }
           }
       }
  -    
  +
   }
  
  
  
  1.2       +18 -0     
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractSameVmBindableHostContext.java
  
  Index: AbstractSameVmBindableHostContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/AbstractSameVmBindableHostContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractSameVmBindableHostContext.java    13 Oct 2002 11:54:25 -0000      1.1
  +++ AbstractSameVmBindableHostContext.java    13 Oct 2002 13:40:00 -0000      1.2
  @@ -11,6 +11,7 @@
   import org.apache.excalibur.altrmi.client.AltrmiClientInvocationHandler;
   
   import java.io.IOException;
  +import java.lang.reflect.Method;
   
   public abstract class AbstractSameVmBindableHostContext extends AbstractHostContext{
   
  @@ -26,5 +27,22 @@
        * @throws IOException if a problem
        */
       public abstract AbstractHostContext makeSameVmHostContext() throws IOException;
  +
  +
  +    protected Object getOptmization(String uniqueID)
  +    {
  +        try
  +        {
  +            Object registry = this.getClass().getClassLoader()
  +                    
.loadClass("org.apache.excalibur.altrmi.registry.Registry").newInstance();
  +            //Binder binder = registry.get("/.altrmi/optimizations/" + uniqueID);
  +            Method method = registry.getClass().getMethod("get", new Class[] 
{String.class});
  +            return method.invoke(registry, new Object[] {"/.altrmi/optimizations/" 
+ uniqueID});
  +        }
  +        catch (Exception e)
  +        {
  +            return null;
  +        }
  +    }
   
   }
  
  
  
  1.4       +29 -11    
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamHostContext.java
  
  Index: SocketCustomStreamHostContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketCustomStreamHostContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SocketCustomStreamHostContext.java        13 Oct 2002 11:54:26 -0000      1.3
  +++ SocketCustomStreamHostContext.java        13 Oct 2002 13:40:00 -0000      1.4
  @@ -11,14 +11,11 @@
   import org.apache.excalibur.altrmi.client.impl.AbstractSameVmBindableHostContext;
   import org.apache.excalibur.altrmi.client.impl.AbstractHostContext;
   import org.apache.excalibur.altrmi.common.AltrmiConnectionException;
  -import org.apache.excalibur.altrmi.registry.Registry;
  -import org.apache.excalibur.altrmi.registry.Bound;
  -import org.apache.excalibur.altrmi.registry.Binder;
  -import org.apache.excalibur.altrmi.registry.BindException;
   
   import java.io.PipedInputStream;
   import java.io.PipedOutputStream;
   import java.io.IOException;
  +import java.lang.reflect.Method;
   
   /**
    * Class SocketCustomStreamHostContext
  @@ -80,21 +77,42 @@
           PipedOutputStream out = new PipedOutputStream();
           try
           {
  -            Registry registry = Registry.getInstance();
  -            Binder binder = registry.get("/.altrmi/optimizations/port=" + m_port);
  -            Bound bound = binder.bind(new Object[] {in, out});
  +            Object binder = getOptmization("port=" + m_port);
  +            if (binder == null)
  +            {
  +                return null;
  +            }
  +            Object bound = bind(binder, in, out);
  +            if (bound == null)
  +            {
  +                return null;
  +            }
               PipedCustomStreamHostContext pipedCustomStreamHostContext
                       = new PipedCustomStreamHostContext(in, out);
               pipedCustomStreamHostContext.initialize();
               return pipedCustomStreamHostContext;
           }
  -        catch (BindException e)
  +        catch (Exception e)
           {
               throw new IOException("Naming exception during bind :" + 
e.getMessage());
           }
  -        catch (AltrmiConnectionException e)
  +    }
  +
  +    private Object bind(Object object, PipedInputStream inputStream,
  +                       PipedOutputStream outputStream)
  +    {
  +
  +        try
           {
  -            throw new IOException("Connection exception during bind :" + 
e.getMessage());
  +            Object[] parms = new Object[]{ inputStream, outputStream };
  +            Method method = object.getClass().getMethod("bind", new Class[] { 
parms.getClass() });
  +            return method.invoke(object, new Object[] { parms });
  +        }
  +        catch (Exception e)
  +        {
  +            return null;
           }
       }
  +
  +
   }
  
  
  
  1.4       +33 -15    
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamHostContext.java
  
  Index: SocketObjectStreamHostContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/socket/SocketObjectStreamHostContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SocketObjectStreamHostContext.java        13 Oct 2002 11:54:26 -0000      1.3
  +++ SocketObjectStreamHostContext.java        13 Oct 2002 13:40:00 -0000      1.4
  @@ -8,16 +8,14 @@
   package org.apache.excalibur.altrmi.client.impl.socket;
   
   import org.apache.excalibur.altrmi.client.impl.AbstractHostContext;
  +import org.apache.excalibur.altrmi.client.impl.AbstractSameVmBindableHostContext;
   import org.apache.excalibur.altrmi.client.impl.piped.PipedObjectStreamHostContext;
   import org.apache.excalibur.altrmi.common.AltrmiConnectionException;
  -import org.apache.excalibur.altrmi.registry.Registry;
  -import org.apache.excalibur.altrmi.registry.Binder;
  -import org.apache.excalibur.altrmi.registry.Bound;
  -import org.apache.excalibur.altrmi.registry.BindException;
   
   import java.io.PipedInputStream;
   import java.io.IOException;
   import java.io.PipedOutputStream;
  +import java.lang.reflect.Method;
   
   /**
    * Class SocketObjectStreamHostContext
  @@ -26,7 +24,7 @@
    * @author Paul Hammant <a 
href="mailto:[EMAIL PROTECTED]";>[EMAIL PROTECTED]</a>
    * @version $Revision$
    */
  -public class SocketObjectStreamHostContext extends AbstractHostContext
  +public class SocketObjectStreamHostContext extends AbstractSameVmBindableHostContext
   {
   
       private String mObjectOutputStreamClassName;
  @@ -127,22 +125,42 @@
           PipedOutputStream out = new PipedOutputStream();
           try
           {
  -            Registry registry = Registry.getInstance();
  -            Binder binder = registry.get("/.altrmi/optimizations/port=" + m_port);
  -            Bound bound = binder.bind(new Object[] {in, out});
  -            PipedObjectStreamHostContext pipedObjectStreamHostContext
  +            Object binder = getOptmization("port=" + m_port);
  +            if (binder == null)
  +            {
  +                return null;
  +            }
  +            Object bound = bind(binder, in, out);
  +            if (bound == null)
  +            {
  +                return null;
  +            }
  +            PipedObjectStreamHostContext pipedCustomStreamHostContext
                       = new PipedObjectStreamHostContext(in, out);
  -            pipedObjectStreamHostContext.initialize();
  -            return pipedObjectStreamHostContext;
  +            pipedCustomStreamHostContext.initialize();
  +            return pipedCustomStreamHostContext;
           }
  -        catch (BindException e)
  +        catch (Exception e)
           {
               throw new IOException("Naming exception during bind :" + 
e.getMessage());
           }
  -        catch (AltrmiConnectionException e)
  +    }
  +
  +    private Object bind(Object object, PipedInputStream inputStream,
  +                       PipedOutputStream outputStream)
  +    {
  +
  +        try
  +        {
  +            Object[] parms = new Object[]{ inputStream, outputStream };
  +            Method method = object.getClass().getMethod("bind", new Class[] { 
parms.getClass() });
  +            return method.invoke(object, new Object[] { parms });
  +        }
  +        catch (Exception e)
           {
  -            throw new IOException("Connection exception during bind :" + 
e.getMessage());
  +            return null;
           }
       }
  +
   
   }
  
  
  
  1.2       +7 -25     
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/registry/Registry.java
  
  Index: Registry.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/registry/Registry.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Registry.java     13 Oct 2002 12:03:39 -0000      1.1
  +++ Registry.java     13 Oct 2002 13:40:00 -0000      1.2
  @@ -16,29 +16,7 @@
   public class Registry
   {
   
  -    private static Registry INSTANCE;
  -
  -    private HashMap m_map = new HashMap();
  -
  -    /**
  -     * Get the singleton instance
  -     * @return the instance
  -     */
  -    public static synchronized Registry getInstance()
  -    {
  -        if (INSTANCE == null)
  -        {
  -            INSTANCE = new Registry();
  -        }
  -        return INSTANCE;
  -    }
  -
  -    /**
  -     * Prevent public construction
  -     */
  -    private Registry()
  -    {
  -    }
  +    private static HashMap m_map = new HashMap();
   
       /**
        * Get a Bound object.
  @@ -47,7 +25,9 @@
        */
       public Binder get(String key)
       {
  -        return (Binder) m_map.get(key);
  +        synchronized (m_map) {
  +            return (Binder) m_map.get(key);
  +        }
       }
   
       /**
  @@ -57,7 +37,9 @@
        */
       public void put (String key, Object object)
       {
  -        m_map.put(key, object);
  +        synchronized (m_map) {
  +            m_map.put(key, object);
  +        }
       }
   
   }
  
  
  
  1.5       +3 -3      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/CompleteSocketCustomStreamServer.java
  
  Index: CompleteSocketCustomStreamServer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/CompleteSocketCustomStreamServer.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CompleteSocketCustomStreamServer.java     13 Oct 2002 11:54:27 -0000      1.4
  +++ CompleteSocketCustomStreamServer.java     13 Oct 2002 13:40:00 -0000      1.5
  @@ -36,7 +36,7 @@
       public CompleteSocketCustomStreamServer( int port ) throws AltrmiServerException
       {
           super( port );
  -        Registry.getInstance().put("/.altrmi/optimizations/port=" + port,
  +        new Registry().put("/.altrmi/optimizations/port=" + port,
                   new 
CompleteSocketCustomStreamPipedBinder(super.getInovcationHandlerAdapter()));
       }
   
  @@ -54,7 +54,7 @@
           throws AltrmiServerException
       {
           super( invocationHandlerAdapter, port );
  -        Registry.getInstance().put("/.altrmi/optimizations/port=" + port,
  +        new Registry().put("/.altrmi/optimizations/port=" + port,
                   new 
CompleteSocketCustomStreamPipedBinder(invocationHandlerAdapter));
       }
   
  
  
  
  1.6       +2 -2      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/PartialSocketCustomStreamServer.java
  
  Index: PartialSocketCustomStreamServer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/PartialSocketCustomStreamServer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PartialSocketCustomStreamServer.java      13 Oct 2002 11:54:27 -0000      1.5
  +++ PartialSocketCustomStreamServer.java      13 Oct 2002 13:40:00 -0000      1.6
  @@ -36,7 +36,7 @@
   
           m_completeSocketCustomStreamPipedBinder =
                   new 
CompleteSocketCustomStreamPipedBinder(super.getInovcationHandlerAdapter());
  -        Registry.getInstance().put("/.altrmi/optimizations/port="
  +        new Registry().put("/.altrmi/optimizations/port="
                   + port, m_completeSocketCustomStreamPipedBinder);
       }
   
  
  
  
  1.6       +2 -2      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/PartialSocketObjectStreamServer.java
  
  Index: PartialSocketObjectStreamServer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/socket/PartialSocketObjectStreamServer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PartialSocketObjectStreamServer.java      13 Oct 2002 11:54:27 -0000      1.5
  +++ PartialSocketObjectStreamServer.java      13 Oct 2002 13:40:00 -0000      1.6
  @@ -37,7 +37,7 @@
       {
           m_completeSocketObjectStreamPipedBinder =
                   new 
CompleteSocketObjectStreamPipedBinder(super.getInovcationHandlerAdapter());
  -        Registry.getInstance().put("/.altrmi/optimizations/port="
  +        new Registry().put("/.altrmi/optimizations/port="
                   + port, m_completeSocketObjectStreamPipedBinder);
       }
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to