hammant     2002/10/22 16:18:24

  Modified:    altrmi/src/java/org/apache/excalibur/altrmi/client/impl
                        AbstractAltrmiFactory.java
               altrmi/src/java/org/apache/excalibur/altrmi/client/impl/stream
                        StreamInvocationHandler.java
               altrmi/src/java/org/apache/excalibur/altrmi/server/impl
                        StreamServerConnection.java
  Log:
  Tests pass again.
  
  Revision  Changes    Path
  1.12      +3 -5      
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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- AbstractAltrmiFactory.java        20 Oct 2002 19:19:51 -0000      1.11
  +++ AbstractAltrmiFactory.java        22 Oct 2002 23:18:24 -0000      1.12
  @@ -93,14 +93,12 @@
        */
       public void setHostContext( AltrmiHostContext hostContext, boolean 
allowOptimize ) throws IOException
       {
  -
           if( m_hostContext == null )
           {
               m_hostContext = (AbstractHostContext) hostContext;
               m_clientInvocationHandler = m_hostContext.getClientInvocationHandler();
           }
   
  -
           ( (AbstractClientInvocationHandler) m_clientInvocationHandler 
).initialize();
   
           UID machineID = allowOptimize ? U_ID : null;
  @@ -119,8 +117,8 @@
               {
                   AbstractSameVmBindableHostContext sameVmBindableHostContext =
                           (AbstractSameVmBindableHostContext) m_hostContext;
  -                m_hostContext = sameVmBindableHostContext.makeSameVmHostContext();
  -                if (m_hostContext == null)
  +                AltrmiHostContext hContext = 
sameVmBindableHostContext.makeSameVmHostContext();
  +                if (hContext == null)
                   {
                       // Registry not found, or a different instance to the one
                       // the server placed its piped instance in.
  
  
  
  1.7       +16 -5     
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/stream/StreamInvocationHandler.java
  
  Index: StreamInvocationHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/stream/StreamInvocationHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StreamInvocationHandler.java      23 May 2002 21:37:19 -0000      1.6
  +++ StreamInvocationHandler.java      22 Oct 2002 23:18:24 -0000      1.7
  @@ -160,10 +160,7 @@
                       }
                       catch( IOException ioe )
                       {
  -                        if( ioe instanceof SocketException | ioe instanceof 
EOFException
  -                            | ioe instanceof InterruptedIOException
  -                            | ( ( ioe.getMessage() != null )
  -                            && ioe.getMessage().equals( "Read end dead" ) ) )
  +                        if(isSafeEnd(ioe))
                           {
                               int retryConnectTries = 0;
   
  @@ -208,6 +205,20 @@
               throw new AltrmiInvocationException( "Class definition missing on 
Deserialization: "
                                                    + e.getMessage() );
           }
  +    }
  +
  +    private boolean isSafeEnd(IOException ioe) {
  +        if (ioe instanceof SocketException | ioe instanceof EOFException
  +                            | ioe instanceof InterruptedIOException) {
  +                                return true;
  +                            }
  +        if (ioe.getMessage() != null) {
  +            String msg = ioe.getMessage();
  +            if (msg.equals("Read end dead") | msg.equals("Pipe closed")) {
  +                return true;
  +            }
  +        }
  +        return false;
       }
   
       /**
  
  
  
  1.7       +44 -26    
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/StreamServerConnection.java
  
  Index: StreamServerConnection.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/StreamServerConnection.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StreamServerConnection.java       21 Sep 2002 15:52:56 -0000      1.6
  +++ StreamServerConnection.java       22 Oct 2002 23:18:24 -0000      1.7
  @@ -11,6 +11,7 @@
   import java.io.IOException;
   import java.io.InterruptedIOException;
   import java.net.SocketException;
  +
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.excalibur.altrmi.common.AltrmiReply;
   import org.apache.excalibur.altrmi.common.AltrmiRequest;
  @@ -25,7 +26,7 @@
    * @version $Revision$
    */
   public abstract class StreamServerConnection extends AbstractLogEnabled
  -    implements Runnable, AltrmiServerConnection
  +        implements Runnable, AltrmiServerConnection
   {
   
       /**
  @@ -51,8 +52,8 @@
        * @param readWriter The Read Writer.
        *
        */
  -    public StreamServerConnection( AbstractServer abstractServer,
  -                                   ServerStreamReadWriter readWriter )
  +    public StreamServerConnection(AbstractServer abstractServer,
  +                                  ServerStreamReadWriter readWriter)
       {
           m_abstractServer = abstractServer;
           m_readWriter = readWriter;
  @@ -66,7 +67,7 @@
       public void run()
       {
   
  -        m_abstractServer.connectionStart( this );
  +        m_abstractServer.connectionStart(this);
   
           try
           {
  @@ -76,62 +77,79 @@
               AltrmiRequest request = null;
               AltrmiReply reply = null;
   
  -            while( more )
  +            while (more)
               {
                   try
                   {
  -                    if( request != null )
  +                    if (request != null)
                       {
  -                        reply = m_abstractServer.handleInvocation( request );
  +                        reply = m_abstractServer.handleInvocation(request);
                       }
   
  -                    request = m_readWriter.writeReplyAndGetRequest( reply );
  +                    request = m_readWriter.writeReplyAndGetRequest(reply);
   
                       // 
http://developer.java.sun.com/developer/bugParade/bugs/4499841.html
                       // halves the performance though.
                       //oOS.reset();
  -                    if( m_endConnection )
  +                    if (m_endConnection)
                       {
                           reply = new EndConnectionReply();
                           more = false;
                       }
                   }
  -                catch( IOException ioe )
  +                catch (IOException ioe)
                   {
                       more = false;
   
  -                    if( ioe instanceof EOFException )
  +                    if (ioe instanceof EOFException)
                       {
  -                        getLogger().info( "One Connection closed. (EOF)" );
  +                        getLogger().info("One Connection closed. (EOF)");
                       }
  -                    else if( ( ioe instanceof SocketException )
  -                        || ioe.getClass().getName().equals( 
"java.net.SocketTimeoutException" )
  -                        || ( ioe instanceof InterruptedIOException )
  -                        || ( ( ioe.getMessage() != null )
  -                        && ( ioe.getMessage().equals( "Write end dead" )
  -                        || ioe.getMessage().equals( "Pipe broken" ) ) ) )
  +                    else if (isSafeEnd(ioe))
                       {
   
                           // TODO implement implementation indepandant logger
  -                        getLogger().info( "One Connection closed." );
  +                        getLogger().info("One Connection closed.");
                       }
                       else
                       {
  -                        getLogger().error( "Unexpected IOE in 
StreamServerConnection #1", ioe );
  +                        getLogger().error("Unexpected IOE in StreamServerConnection 
#1", ioe);
                       }
                   }
               }
           }
  -        catch( IOException e )
  +        catch (IOException e)
           {
  -            getLogger().error( "Unexpected IOE in StreamServerConnection #2", e );
  +            getLogger().error("Unexpected IOE in StreamServerConnection #2", e);
           }
  -        catch( ClassNotFoundException e )
  +        catch (ClassNotFoundException e)
           {
  -            getLogger().error( "Unexpected ClassNotFoundException in 
StreamServerConnection", e );
  +            getLogger().error("Unexpected ClassNotFoundException in 
StreamServerConnection", e);
           }
   
  -        m_abstractServer.connectionCompleted( this );
  +        m_abstractServer.connectionCompleted(this);
  +    }
  +
  +    private boolean isSafeEnd(IOException ioe)
  +    {
  +        if ((ioe instanceof SocketException)
  +                || 
ioe.getClass().getName().equals("java.net.SocketTimeoutException") // 1.3 safe
  +                || (ioe instanceof InterruptedIOException))
  +        {
  +            return true;
  +        }
  +
  +        if (ioe.getMessage() != null)
  +        {
  +            String msg = ioe.getMessage();
  +            if (msg.equals("Write end dead")
  +                    | msg.equals("Pipe broken")
  +                    | msg.equals("Pipe closed"))
  +            {
  +                return true;
  +            }
  +        }
  +        return false;
       }
   
       /**
  
  
  

--
To unsubscribe, e-mail:   <mailto:avalon-cvs-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-cvs-help@;jakarta.apache.org>

Reply via email to