hammant     2002/11/25 22:09:55

  Modified:    altrmi   build.xml
               altrmi/src/java/org/apache/excalibur/altrmi/client
                        ProxyHelper.java
               altrmi/src/java/org/apache/excalibur/altrmi/client/impl
                        DefaultProxyHelper.java
               altrmi/src/java/org/apache/excalibur/altrmi/common
                        RawRequest.java
               altrmi/src/java/org/apache/excalibur/altrmi/generator
                        ProxyGeneratorImpl.java
               altrmi/src/java/org/apache/excalibur/altrmi/server
                        PublicationDescriptionItem.java
               altrmi/src/java/org/apache/excalibur/altrmi/server/impl
                        StreamServerConnection.java
               altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters
                        InvocationHandlerAdapter.java
                        MarshalledInvocationHandlerAdapter.java
               altrmi/src/test/org/apache/excalibur/altrmi/test/async
                        SimpleAsyncTestCase.java
  Log:
  Asynchronous method invocation works to a point.
  
  Revision  Changes    Path
  1.44      +37 -36    jakarta-avalon-excalibur/altrmi/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/build.xml,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- build.xml 25 Nov 2002 21:17:06 -0000      1.43
  +++ build.xml 26 Nov 2002 06:09:54 -0000      1.44
  @@ -3,13 +3,13 @@
   <project name="Excalibur AltRMI" default="main" basedir=".">
   
       <property file="ant.properties"/>
  -    <property file="${basedir}/../ant.properties"/>    
  -    <property file="${basedir}/ant.properties"/>   
  +    <property file="${basedir}/../ant.properties"/>
  +    <property file="${basedir}/ant.properties"/>
       <property file="${basedir}/../default.properties"/>
  -    <property file="${basedir}/default.properties"/>    
  +    <property file="${basedir}/default.properties"/>
       <property file="${user.home}/.ant.properties"/>
       <property file="default.properties"/>
  -    
  +
       <!-- Classpath for product -->
       <path id="project.class.path">
           <pathelement location="${build.classes}"/>
  @@ -33,7 +33,7 @@
           <pathelement location="${junit.jar}"/>
           <path refid="project.class.path"/>
       </path>
  -    
  +
       <path id="test.classpath2">
           <pathelement location="${build.testclasses}"/>
           <pathelement location="${junit.jar}"/>
  @@ -41,19 +41,19 @@
           <pathelement location="lib/JSX1.0.3.1.jar"/>
           <path refid="project.class.path"/>
       </path>
  -    
  +
       <path id="test.classpath3">
           <pathelement location="${build.testclasses}"/>
           <pathelement location="${junit.jar}"/>
           <path refid="project.class.path"/>
       </path>
   
  -    
  +
       <property name="cp" refid="test.class.path"/>
   
       <target name="main" depends="compile, compile-test" description="Build the 
project"/>
       <target name="rebuild" depends="clean,main" description="Rebuild the project"/>
  -    
  +
       <target name="checkBCEL">
           <ant antfile="${depchecker.prefix}/depchecker.xml" 
target="checkRequiredClass">
               <property name="proj.jar.name" value="jakarta-bcel.jar"/>
  @@ -94,12 +94,12 @@
               <classpath refid="project.class.path" />
               <include name="**/*.java"/>
           </javac>
  -        
  +
           <rmic base="${build.classes}"
               
classname="org.apache.excalibur.altrmi.server.impl.rmi.RmiInovcationAdapter"
               stubVersion="1.2">
  -            <classpath refid="project.class.path" />    
  -        </rmic>          
  +            <classpath refid="project.class.path" />
  +        </rmic>
   
           <!-- copy resources to same location as .class files -->
           <copy todir="${build.classes}">
  @@ -115,8 +115,8 @@
       <target name="compile-test" depends="compile, dependencies-test" 
description="Compiles the source code">
           <mkdir dir="${build.testsrc}"/>
   
  -        <filter token="SPEEDTEST-ITERATIONS" value="${speedtest.iterations}"/>   
  -        
  +        <filter token="SPEEDTEST-ITERATIONS" value="${speedtest.iterations}"/>
  +
           <echo>Speed Test Iterations=${speedtest.iterations}</echo>
   
           <!-- Copy over all of the tests applying test filters -->
  @@ -170,37 +170,37 @@
               compress="${build.compress}"
               manifest="src/conf/MANIFEST-client-impl.MF">
             <include name="org/apache/excalibur/altrmi/client/impl/**"/>
  -        </jar>    
  +        </jar>
   
           <jar jarfile="${build.lib}/${server-interfaces.jar.name}"
               basedir="${build.classes}"
               compress="${build.compress}"
               manifest="src/conf/MANIFEST-server-interfaces.MF">
             <include name="org/apache/excalibur/altrmi/server/*"/>
  -        </jar>    
  +        </jar>
   
           <jar jarfile="${build.lib}/${server-impl.jar.name}"
               basedir="${build.classes}"
               compress="${build.compress}"
               manifest="src/conf/MANIFEST-server-impl.MF">
             <include name="org/apache/excalibur/altrmi/server/impl/**"/>
  -        </jar>    
  +        </jar>
   
   
           <jar jarfile="${build.lib}/${generator.jar.name}"
               basedir="${build.classes}"
               manifest="src/conf/MANIFEST-generator.MF">
             <include name="org/apache/excalibur/altrmi/generator/**"/>
  -          <include name="org/apache/excalibur/altrmi/javacompiler/**"/>      
  -        </jar> 
  +          <include name="org/apache/excalibur/altrmi/javacompiler/**"/>
  +        </jar>
   
           <jar jarfile="${build.lib}/${registry.jar.name}"
               basedir="${build.classes}"
               manifest="src/conf/MANIFEST-registry.MF">
             <include name="org/apache/excalibur/altrmi/registry/**"/>
  -        </jar> 
  +        </jar>
  +
   
  -        
       </target>
   
       <!-- Creates all the Javadocs -->
  @@ -228,12 +228,12 @@
   
           <echo message="Performing Unit Tests" />
   
  -        <ant antfile="base.xml" target="generate"/>  
  +        <ant antfile="base.xml" target="generate"/>
   
           <mkdir dir="${build.tests}"/>
   
           <!-- Plain tests -->
  -        
  +
           <junit fork="true"
               haltonfailure="${junit.failonerror}"
               printsummary="yes"
  @@ -244,7 +244,8 @@
               <formatter type="plain" usefile="false"/>  <!-- text reports for humans 
    -->
               <batchtest todir="${build.tests}">
                   <fileset dir="${build.testclasses}">
  -                    <include name="**/test/**/SimpleAsy*TestCase.class"/>
  +                 <!--   <include name="**/test/**/SimpleAsy*TestCase.class"/> -->
  +                    <include name="**/test/**/*TestCase.class"/>
                       <exclude name="**/Abstract*"/>
                       <exclude name="**/JSXObjectStreamTestCase.class"/>
                   </fileset>
  @@ -252,7 +253,7 @@
           </junit>
   
           <!-- Dynamic Server Side classes -->
  -        
  +
           <junit fork="true"
               haltonfailure="${junit.failonerror}"
               printsummary="yes"
  @@ -329,7 +330,7 @@
                   <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/*.java"/>
                   <include 
name="org/apache/excalibur/altrmi/server/impl/adapters/*.java"/>
                   <include 
name="org/apache/excalibur/altrmi/server/impl/callback/*.java"/>
                   <include 
name="org/apache/excalibur/altrmi/server/impl/classretrievers/*.java"/>
  @@ -405,8 +406,8 @@
               <fileset dir="${build.lib}">
                   <include name="*.jar"/>
               </fileset>
  -        </copy> 
  -    </target>   
  +        </copy>
  +    </target>
   
       <!-- Creates a minimal distribution -->
       <target name="dist.lite"
  @@ -444,8 +445,8 @@
         <filter token="LOGKIT_BASE" value="${logkit.base}"/>
         <filter token="TESTLET_BASE" value="${testlet.base}"/>
       </target>
  -    
  -    
  +
  +
       <!-- Prepares the documentation directory -->
       <target name="docs" depends="setup-filters" description="Generates the Docs">
       <ant antfile="${basedir}/../cocoonbuild.xml"/>
  @@ -454,19 +455,19 @@
           <fileset dir="${build.docs}">
             <include name="**"/>
           </fileset>
  -      </copy>    
  +      </copy>
   
       </target>
  -    
  -    <target name="site" depends="javadocs, docs" description=" Places Docs ready 
for hosting on website">  
  -  
  -      <mkdir dir="../site/dist/docs/${dir-name}"/>     
  +
  +    <target name="site" depends="javadocs, docs" description=" Places Docs ready 
for hosting on website">
  +
  +      <mkdir dir="../site/dist/docs/${dir-name}"/>
         <copy todir="../site/dist/docs/${dir-name}">
           <fileset dir="${docs.dir}">
             <include name="**"/>
           </fileset>
  -      </copy>        
  -  
  +      </copy>
  +
       </target>
   
       <!-- Cleans up build and distribution directories -->
  
  
  
  1.7       +3 -3      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/ProxyHelper.java
  
  Index: ProxyHelper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/ProxyHelper.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ProxyHelper.java  25 Nov 2002 21:17:07 -0000      1.6
  +++ ProxyHelper.java  26 Nov 2002 06:09:55 -0000      1.7
  @@ -7,7 +7,7 @@
    */
   package org.apache.excalibur.altrmi.client;
   
  -import org.apache.excalibur.altrmi.common.RawRequest;
  +import java.util.Vector;
   
   /**
    * Interface ProxyHelper
  @@ -72,7 +72,7 @@
        * @throws Throwable
        *
        */
  -    void processVoidRequests( RawRequest[] requests ) throws Throwable;
  +    void processVoidRequests( Vector requests ) throws Throwable;
   
   
       /**
  
  
  
  1.15      +61 -56    
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/DefaultProxyHelper.java
  
  Index: DefaultProxyHelper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/client/impl/DefaultProxyHelper.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- DefaultProxyHelper.java   25 Nov 2002 21:17:07 -0000      1.14
  +++ DefaultProxyHelper.java   26 Nov 2002 06:09:55 -0000      1.15
  @@ -7,8 +7,6 @@
    */
   package org.apache.excalibur.altrmi.client.impl;
   
  -import java.lang.reflect.Array;
  -
   import org.apache.excalibur.altrmi.client.AltrmiClientInvocationHandler;
   import org.apache.excalibur.altrmi.client.AltrmiProxy;
   import org.apache.excalibur.altrmi.client.ProxyHelper;
  @@ -18,13 +16,17 @@
   import org.apache.excalibur.altrmi.common.ExceptionReply;
   import org.apache.excalibur.altrmi.common.GarbageCollectionReply;
   import org.apache.excalibur.altrmi.common.GarbageCollectionRequest;
  +import org.apache.excalibur.altrmi.common.MethodAsyncRequest;
   import org.apache.excalibur.altrmi.common.MethodFacadeArrayReply;
   import org.apache.excalibur.altrmi.common.MethodFacadeReply;
   import org.apache.excalibur.altrmi.common.MethodFacadeRequest;
   import org.apache.excalibur.altrmi.common.MethodReply;
   import org.apache.excalibur.altrmi.common.MethodRequest;
   import org.apache.excalibur.altrmi.common.RawRequest;
  -import org.apache.excalibur.altrmi.common.MethodAsyncRequest;
  +
  +import javax.swing.*;
  +import java.lang.reflect.Array;
  +import java.util.Vector;
   
   /**
    * Class DefaultProxyHelper
  @@ -37,12 +39,12 @@
   public final class DefaultProxyHelper implements ProxyHelper
   {
   
  -    private final transient AbstractAltrmiFactory mAltrmiFactory;
  -    private final transient AltrmiClientInvocationHandler mClientInvocationHandler;
  -    private final transient String mPublishedServiceName;
  -    private final transient String mObjectName;
  -    private final transient Long mReferenceID;
  -    private final transient Long mSession;
  +    private final transient AbstractAltrmiFactory m_altrmiFactory;
  +    private final transient AltrmiClientInvocationHandler m_clientInvocationHandler;
  +    private final transient String m_publishedServiceName;
  +    private final transient String m_objectName;
  +    private final transient Long m_referenceID;
  +    private final transient Long m_session;
   
   
       /**
  @@ -63,12 +65,12 @@
                                  Long session )
       {
   
  -        mAltrmiFactory = altrmiFactory;
  -        mClientInvocationHandler = clientInvocationHandler;
  -        mPublishedServiceName = pubishedServiceName;
  -        mObjectName = objectName;
  -        mReferenceID = referenceID;
  -        mSession = session;
  +        m_altrmiFactory = altrmiFactory;
  +        m_clientInvocationHandler = clientInvocationHandler;
  +        m_publishedServiceName = pubishedServiceName;
  +        m_objectName = objectName;
  +        m_referenceID = referenceID;
  +        m_session = session;
       }
   
       /**
  @@ -80,7 +82,7 @@
        */
       public void registerImplObject( Object implBean )
       {
  -        mAltrmiFactory.registerReferenceObject( implBean, mReferenceID );
  +        m_altrmiFactory.registerReferenceObject( implBean, m_referenceID );
       }
   
       /**
  @@ -109,18 +111,18 @@
   
           if( arrayRetVal )
           {
  -            request = new MethodFacadeRequest( mPublishedServiceName, mObjectName,
  -                                               methodSignature, args, mReferenceID,
  -                                               objNameWithoutArray, mSession );
  +            request = new MethodFacadeRequest( m_publishedServiceName, m_objectName,
  +                                               methodSignature, args, m_referenceID,
  +                                               objNameWithoutArray, m_session );
           }
           else
           {
  -            request = new MethodFacadeRequest( mPublishedServiceName, mObjectName,
  -                                               methodSignature, args, mReferenceID, 
objectName,
  -                                               mSession );
  +            request = new MethodFacadeRequest( m_publishedServiceName, m_objectName,
  +                                               methodSignature, args, 
m_referenceID, objectName,
  +                                               m_session );
           }
   
  -        AltrmiReply reply = mClientInvocationHandler.handleInvocation( request );
  +        AltrmiReply reply = m_clientInvocationHandler.handleInvocation( request );
   
           if( reply.getReplyCode() == AltrmiReplyConstants.METHODFACADEREPLY )
           {
  @@ -133,18 +135,18 @@
                   return null;
               }
   
  -            Object implBean = mAltrmiFactory.getImplObj( ref );
  +            Object implBean = m_altrmiFactory.getImplObj( ref );
   
               if( implBean == null )
               {
  -                DefaultProxyHelper pHelper = new DefaultProxyHelper( mAltrmiFactory,
  -                                                                     
mClientInvocationHandler,
  -                                                                     
mPublishedServiceName,
  +                DefaultProxyHelper pHelper = new DefaultProxyHelper( 
m_altrmiFactory,
  +                                                                     
m_clientInvocationHandler,
  +                                                                     
m_publishedServiceName,
                                                                        
mfr.getObjectName(), ref,
  -                                                                     mSession );
  -                Object retFacade = mAltrmiFactory.getInstance( 
mPublishedServiceName,
  +                                                                     m_session );
  +                Object retFacade = m_altrmiFactory.getInstance( 
m_publishedServiceName,
                                                                  mfr.getObjectName(), 
pHelper,
  -                                                               
mAltrmiFactory.isBeanOnly() );
  +                                                               
m_altrmiFactory.isBeanOnly() );
   
                   pHelper.registerImplObject( retFacade );
   
  @@ -172,24 +174,24 @@
                   }
                   else
                   {
  -                    Object o = mAltrmiFactory.getImplObj( ref );
  +                    Object o = m_altrmiFactory.getImplObj( ref );
   
                       implBeans[ i ] = o;
   
                       if( implBeans[ i ] == null )
                       {
  -                        DefaultProxyHelper bo2 = new DefaultProxyHelper( 
mAltrmiFactory,
  -                                                                         
mClientInvocationHandler,
  -                                                                         
mPublishedServiceName,
  +                        DefaultProxyHelper bo2 = new DefaultProxyHelper( 
m_altrmiFactory,
  +                                                                         
m_clientInvocationHandler,
  +                                                                         
m_publishedServiceName,
                                                                            
objectNames[ i ], refs[ i ],
  -                                                                         mSession );
  +                                                                         m_session 
);
                           Object retFacade = null;
   
                           try
                           {
  -                            retFacade = mAltrmiFactory.getInstance( 
mPublishedServiceName,
  +                            retFacade = m_altrmiFactory.getInstance( 
m_publishedServiceName,
                                                                       objectNames[ i 
], bo2,
  -                                                                    
mAltrmiFactory.isBeanOnly() );
  +                                                                    
m_altrmiFactory.isBeanOnly() );
                           }
                           catch( Exception e )
                           {
  @@ -236,11 +238,11 @@
       public Object processObjectRequest( String methodSignature, Object[] args, 
Class[] argClasses ) throws Throwable
       {
   
  -        mAltrmiFactory.marshallCorrection( methodSignature, args, argClasses );
  +        m_altrmiFactory.marshallCorrection( methodSignature, args, argClasses );
   
  -        MethodRequest request = new MethodRequest( mPublishedServiceName, 
mObjectName,
  -                                                   methodSignature, args, 
mReferenceID, mSession );
  -        AltrmiReply reply = mClientInvocationHandler.handleInvocation( request );
  +        MethodRequest request = new MethodRequest( m_publishedServiceName, 
m_objectName,
  +                                                   methodSignature, args, 
m_referenceID, m_session );
  +        AltrmiReply reply = m_clientInvocationHandler.handleInvocation( request );
   
           if( reply.getReplyCode() == AltrmiReplyConstants.METHODREPLY )
           {
  @@ -261,13 +263,16 @@
           }
       }
   
  -    public void processVoidRequests(RawRequest[] requests) throws Throwable
  +    public void processVoidRequests(Vector requests) throws Throwable
       {
  -        MethodAsyncRequest request = new MethodAsyncRequest( mPublishedServiceName, 
mObjectName,
  -                                                   requests, mReferenceID, mSession 
);
  +
  +        RawRequest[] rawRequests = new RawRequest[requests.size()];
  +        requests.copyInto(rawRequests);
  +        MethodAsyncRequest request = new MethodAsyncRequest( 
m_publishedServiceName, m_objectName,
  +                                                   rawRequests, m_referenceID, 
m_session );
   
           //debug(args);
  -        AltrmiReply reply = mClientInvocationHandler.handleInvocation( request );
  +        AltrmiReply reply = m_clientInvocationHandler.handleInvocation( request );
   
           if( reply.getReplyCode() == AltrmiReplyConstants.METHODREPLY )
           {
  @@ -301,11 +306,11 @@
       public void processVoidRequest( String methodSignature, Object[] args ) throws 
Throwable
       {
   
  -        MethodRequest request = new MethodRequest( mPublishedServiceName, 
mObjectName,
  -                                                   methodSignature, args, 
mReferenceID, mSession );
  +        MethodRequest request = new MethodRequest( m_publishedServiceName, 
m_objectName,
  +                                                   methodSignature, args, 
m_referenceID, m_session );
   
           //debug(args);
  -        AltrmiReply reply = mClientInvocationHandler.handleInvocation( request );
  +        AltrmiReply reply = m_clientInvocationHandler.handleInvocation( request );
   
           if( reply.getReplyCode() == AltrmiReplyConstants.METHODREPLY )
           {
  @@ -388,9 +393,9 @@
   
           // this checks the factory because reference IDs should not be
           // given out to any requester.  It should be privileged information.
  -        if( factory == mAltrmiFactory )
  +        if( factory == m_altrmiFactory )
           {
  -            return mReferenceID;
  +            return m_referenceID;
           }
           else
           {
  @@ -401,13 +406,13 @@
       protected void finalize() throws Throwable
       {
   
  -        synchronized( mAltrmiFactory )
  +        synchronized( m_altrmiFactory )
           {
               AltrmiReply reply =
  -                mClientInvocationHandler
  -                .handleInvocation( new GarbageCollectionRequest( 
mPublishedServiceName,
  -                                                                 mObjectName, 
mSession,
  -                                                                 mReferenceID ) );
  +                m_clientInvocationHandler
  +                .handleInvocation( new GarbageCollectionRequest( 
m_publishedServiceName,
  +                                                                 m_objectName, 
m_session,
  +                                                                 m_referenceID ) );
               if (reply instanceof ExceptionReply) {
                   // This happens if the object can not be GCed on the remote server
                   //  for any reason.
  
  
  
  1.2       +53 -1     
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/common/RawRequest.java
  
  Index: RawRequest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/common/RawRequest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RawRequest.java   25 Nov 2002 21:17:07 -0000      1.1
  +++ RawRequest.java   26 Nov 2002 06:09:55 -0000      1.2
  @@ -1,13 +1,65 @@
  +/*
  + * Copyright (C) The Apache Software Foundation. All rights reserved.
  + *
  + * This software is published under the terms of the Apache Software License
  + * version 1.1, a copy of which has been included with this distribution in
  + * the LICENSE.txt file.
  + */
   package org.apache.excalibur.altrmi.common;
   
  -public class RawRequest
  +import java.io.IOException;
  +import java.io.ObjectInput;
  +import java.io.ObjectOutput;
  +
  +/**
  + * Class RawRequest
  + *
  + *
  + * @author Paul Hammant
  + * @version $Revision$
  + */
  +public class RawRequest extends AltrmiRequest
   {
       private String m_methodSignature;
       private Object[] m_args;
   
  +    public RawRequest()
  +    {
  +    }
  +
       public RawRequest(String methodSignature, Object[] args)
       {
           m_methodSignature = methodSignature;
           m_args = args;
       }
  +
  +    public String getMethodSignature()
  +    {
  +        return m_methodSignature;
  +    }
  +
  +    public Object[] getArgs()
  +    {
  +        return m_args;
  +    }
  +
  +    public int getRequestCode()
  +    {
  +        return AltrmiRequestConstants.METHODASYNCREQUEST;
  +    }
  +
  +    public void writeExternal( ObjectOutput out ) throws IOException
  +    {
  +        super.writeExternal( out );
  +        out.writeObject( m_methodSignature );
  +        out.writeObject( m_args );
  +    }
  +
  +    public void readExternal( ObjectInput in ) throws IOException, 
ClassNotFoundException
  +    {
  +        super.readExternal( in );
  +        m_methodSignature = (String)in.readObject();
  +        m_args = (Object[]) in.readObject();
  +    }
  +
   }
  
  
  
  1.15      +29 -14    
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ProxyGeneratorImpl.java
  
  Index: ProxyGeneratorImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ProxyGeneratorImpl.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ProxyGeneratorImpl.java   25 Nov 2002 21:17:07 -0000      1.14
  +++ ProxyGeneratorImpl.java   26 Nov 2002 06:09:55 -0000      1.15
  @@ -151,7 +151,7 @@
           m_classSource.print( "public class AltrmiGenerated" + getGenName() + "_" + 
name );
           m_classSource.println( " implements 
org.apache.excalibur.altrmi.client.AltrmiProxy{ " );
           m_classSource.println(
  -            "  private transient org.apache.excalibur.altrmi.client.ProxyHelper 
mProxyHelper;" );
  +            "  private transient org.apache.excalibur.altrmi.client.ProxyHelper 
m_proxyHelper;" );
   
           if (needsAsyncBehavior(interfacesToExpose))
           {
  @@ -164,7 +164,7 @@
           m_classSource.println(
               "  public AltrmiGenerated" + getGenName() + "_" + name
               + " (org.apache.excalibur.altrmi.client.ProxyHelper proxyHelper) {" );
  -        m_classSource.println( "      mProxyHelper = proxyHelper;" );
  +        m_classSource.println( "      m_proxyHelper = proxyHelper;" );
           m_classSource.println( "  }" );
   
           // helper method for the factory.
  @@ -172,7 +172,7 @@
           m_classSource
               .println( "    public Long altrmiGetReferenceID(Object 
factoryThatIsAsking) {" );
           m_classSource
  -            .println( "        return 
mProxyHelper.getReferenceID(factoryThatIsAsking);" );
  +            .println( "        return 
m_proxyHelper.getReferenceID(factoryThatIsAsking);" );
           m_classSource.println( "    }" );
   
           makeSourceInterfaces(interfacesToExpose, methodsDone);
  @@ -278,7 +278,7 @@
           else if (commit)
           {
               generateAsyncMethodBody(argTypes, rClass, methodSignature, method);
  -            generateAsyncCommitMethodBody(argTypes, rClass, methodSignature, 
method);
  +            generateAsyncCommitMethodBody();
           }
           else if (rollback)
           {
  @@ -291,11 +291,6 @@
           m_classSource.println( "}" );
       }
   
  -    private void generateAsyncCommitMethodBody(Class[] argTypes, Class rClass, 
String methodSignature, Method method)
  -    {
  -
  -    }
  -
       private void generateNonAsyncMethodBody(Class[] argTypes, Class rClass, String 
methodSignature, Method method)
       {
           Class[] throwsTypes;
  @@ -305,7 +300,7 @@
   
           if( rClass.equals( "void" ) )
           {
  -            m_classSource.println( "      mProxyHelper.processVoidRequest(\""
  +            m_classSource.println( "      m_proxyHelper.processVoidRequest(\""
                                     + methodSignature.toString() + "\",args);" );
           }
           else
  @@ -352,10 +347,30 @@
       private void generateAsyncMethodBody(Class[] argTypes, Class rClass, String 
methodSignature, Method method)
       {
           generateMethodArgs(argTypes);
  -        m_classSource.println( "  m_asyncInvocations.add(new 
org.apache.excalibur.altrmi.common.RawRequest(\""
  +        m_classSource.println( "    m_asyncInvocations.add(new 
org.apache.excalibur.altrmi.common.RawRequest(\""
                   + methodSignature + "\", args));" );
       }
   
  +    private void generateAsyncCommitMethodBody()
  +    {
  +        m_classSource.println( "    try {" );
  +
  +        m_classSource.println( "      
m_proxyHelper.processVoidRequests(m_asyncInvocations);" );
  +        m_classSource.println( "    } catch (Throwable t) {" );
  +        m_classSource.println( "      if (t instanceof RuntimeException) { " );
  +        m_classSource.println( "        throw (RuntimeException) t;" );
  +        m_classSource.println( "      } else if (t instanceof Error) { " );
  +        m_classSource.println( "        throw (Error) t;" );
  +        m_classSource.println( "      } else { " );
  +        m_classSource.println( "        t.printStackTrace(); " );
  +        m_classSource.println(
  +            "        throw new org.apache.excalibur.altrmi.common."
  +            + "AltrmiInvocationException(\"Should never get here: \" 
+t.getMessage());");
  +        m_classSource.println( "      }" );
  +        m_classSource.println( "    }" );
  +
  +    }
  +
   
       private void makeSourceInterfacesMethodsNotDoneNotVoid(Method method,
               Class rClass, String methodSignature)
  @@ -371,7 +386,7 @@
               }
   
               m_classSource.println(
  -                "  Object retVal = mProxyHelper.processObjectRequestGettingFacade("
  +                "  Object retVal = m_proxyHelper.processObjectRequestGettingFacade("
                   + retClassType.getName() + ".class , \""
                   + methodSignature.toString() + "\",args,\""
                   + MethodNameHelper.encodeClassName( getClassType( rClass ) ) + 
"\");" );
  @@ -381,7 +396,7 @@
           else
           {
               m_classSource.println(
  -                "      Object retVal = mProxyHelper.processObjectRequest(\""
  +                "      Object retVal = m_proxyHelper.processObjectRequest(\""
                   + methodSignature.toString() + "\",args,argClasses);" );
               generateReturnLine( rClass );
           }
  
  
  
  1.3       +44 -5     
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/PublicationDescriptionItem.java
  
  Index: PublicationDescriptionItem.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/PublicationDescriptionItem.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PublicationDescriptionItem.java   25 Nov 2002 21:17:08 -0000      1.2
  +++ PublicationDescriptionItem.java   26 Nov 2002 06:09:55 -0000      1.3
  @@ -34,20 +34,26 @@
           m_rollbackMethod = null;
       }
   
  -    public PublicationDescriptionItem(Class facadeClass, String[] asyncMethods)
  +    public PublicationDescriptionItem(Class facadeClass, String[] asyncMethods) 
throws PublicationException
       {
  -        this.m_facadeClass = facadeClass;
  +        m_facadeClass = facadeClass;
           if (facadeClass == null)
           {
               throw new RuntimeException("Facade class nust not be null");
           }
  -        this.m_asyncMethods = asyncMethods;
  +        m_asyncMethods = asyncMethods;
  +        for (int i = 0; i < asyncMethods.length; i++)
  +        {
  +            String asyncMethod = asyncMethods[i];
  +            testMethodType(facadeClass.getMethods(), asyncMethod);
  +
  +        }
           m_commitMethod = null;
           m_rollbackMethod = null;
       }
   
       public PublicationDescriptionItem(Class facadeClass, String[] asyncMethods,
  -                                      String commitMethod, String rollbackMethod)
  +                                      String commitMethod, String rollbackMethod) 
throws PublicationException
       {
           m_facadeClass = facadeClass;
           if (facadeClass == null)
  @@ -57,7 +63,40 @@
           m_asyncMethods = asyncMethods;
           m_commitMethod = commitMethod;
           m_rollbackMethod = rollbackMethod;
  +        for (int i = 0; i < asyncMethods.length; i++)
  +        {
  +            String asyncMethod = asyncMethods[i];
  +            testMethodType(facadeClass.getMethods(), asyncMethod);
  +
  +        }
  +        testMethodType(facadeClass.getMethods(), commitMethod);
  +        testMethodType(facadeClass.getMethods(), rollbackMethod);
       }
  +
  +    private void testMethodType(Method[] methods, String methodSignature) throws 
PublicationException
  +    {
  +        for (int i = 0; i < methods.length; i++)
  +        {
  +            Method method = methods[i];
  +            if (MethodNameHelper.getMethodSignature(method).equals(methodSignature))
  +            {
  +                if (method.getReturnType().toString().equals("void") != true)
  +                {
  +                    throw new PublicationException("Only 'void' returning methods 
are "
  +                            + "eligible for asynchronous methods.");
  +                }
  +
  +                Class[] exceptions = method.getExceptionTypes();
  +
  +                if (exceptions.length != 0)
  +                {
  +                    throw new PublicationException("Only methods without exceptions 
"
  +                            + "are eligible for asynchronous behavior ");
  +                }
  +            }
  +        }
  +    }
  +
   
       public Class getFacadeClass()
       {
  
  
  
  1.9       +3 -1      
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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- StreamServerConnection.java       28 Oct 2002 21:58:56 -0000      1.8
  +++ StreamServerConnection.java       26 Nov 2002 06:09:55 -0000      1.9
  @@ -20,6 +20,8 @@
   import org.apache.excalibur.altrmi.common.BadConnectionException;
   import org.apache.excalibur.altrmi.server.AltrmiServerConnection;
   
  +import javax.swing.*;
  +
   /**
    * Class StreamServerConnection
    *
  
  
  
  1.14      +52 -11    
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters/InvocationHandlerAdapter.java
  
  Index: InvocationHandlerAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters/InvocationHandlerAdapter.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- InvocationHandlerAdapter.java     25 Nov 2002 21:17:08 -0000      1.13
  +++ InvocationHandlerAdapter.java     26 Nov 2002 06:09:55 -0000      1.14
  @@ -43,6 +43,8 @@
   import org.apache.excalibur.altrmi.common.SameVMReply;
   import org.apache.excalibur.altrmi.common.SuspendedReply;
   import org.apache.excalibur.altrmi.common.MethodNameHelper;
  +import org.apache.excalibur.altrmi.common.MethodAsyncRequest;
  +import org.apache.excalibur.altrmi.common.RawRequest;
   import org.apache.excalibur.altrmi.server.AltrmiAuthenticator;
   import org.apache.excalibur.altrmi.server.ClassRetrievalException;
   import org.apache.excalibur.altrmi.server.ClassRetriever;
  @@ -52,6 +54,8 @@
   import org.apache.excalibur.altrmi.server.impl.DefaultMethodInvocationHandler;
   import org.apache.excalibur.altrmi.server.impl.classretrievers.NoClassRetriever;
   
  +import javax.swing.*;
  +
   /**
    * Class InvocationHandlerAdapter
    *
  @@ -124,6 +128,11 @@
               return doMethodFacadeRequest( request );
   
           }
  +        else if( request.getRequestCode() == 
AltrmiRequestConstants.METHODASYNCREQUEST )
  +        {
  +            return doMethodAsyncRequest( (MethodAsyncRequest) request );
  +
  +        }
           else if( request.getRequestCode() == AltrmiRequestConstants.GCREQUEST )
           {
               return doGarbageCollectionRequest( request );
  @@ -172,16 +181,16 @@
        */
       private AltrmiReply doMethodFacadeRequest( AltrmiRequest request )
       {
  -        MethodFacadeRequest mFacReq = (MethodFacadeRequest)request;
  -        String publishedThing = mFacReq.getPublishedServiceName() + "_"
  -            + mFacReq.getObjectName();
  +        MethodFacadeRequest facadeRequest = (MethodFacadeRequest)request;
  +        String publishedThing = facadeRequest.getPublishedServiceName() + "_"
  +            + facadeRequest.getObjectName();
   
           if( !isPublished( publishedThing ) )
           {
               return new NotPublishedReply();
           }
   
  -        if( !sessionExists( mFacReq.getSession() ) )
  +        if( !sessionExists( facadeRequest.getSession() ) )
           {
               return new ExceptionReply(
                   new AltrmiInvocationException( "TODO - you dirty rat/hacker" ) );
  @@ -189,7 +198,7 @@
   
           MethodInvocationHandler methodInvocationHandler =
               getMethodInvocationHandler( publishedThing );
  -        AltrmiReply ar = methodInvocationHandler.handleMethodInvocation( mFacReq );
  +        AltrmiReply ar = methodInvocationHandler.handleMethodInvocation( 
facadeRequest );
   
           if( ar.getReplyCode() == AltrmiReplyConstants.EXCEPTIONREPLY )
           {
  @@ -209,11 +218,11 @@
               }
               else if( !methodReply.getClass().isArray() )
               {
  -                return doMethodFacadeRequestNonArray( methodReply, mFacReq );
  +                return doMethodFacadeRequestNonArray( methodReply, facadeRequest );
               }
               else
               {
  -                return doMethodFacadeRequestArray( methodReply, mFacReq );
  +                return doMethodFacadeRequestArray( methodReply, facadeRequest );
   
               }
           }
  @@ -330,8 +339,8 @@
        */
       private AltrmiReply doMethodRequest( AltrmiRequest request )
       {
  -        MethodRequest mReq = (MethodRequest)request;
  -        String publishedThing = mReq.getPublishedServiceName() + "_" + 
mReq.getObjectName();
  +        MethodRequest methodRequest = (MethodRequest)request;
  +        String publishedThing = methodRequest.getPublishedServiceName() + "_" + 
methodRequest.getObjectName();
   
           if( !isPublished( publishedThing ) )
           {
  @@ -341,8 +350,40 @@
           MethodInvocationHandler methodInvocationHandler =
               getMethodInvocationHandler( publishedThing );
   
  -        return methodInvocationHandler.handleMethodInvocation( mReq );
  +        return methodInvocationHandler.handleMethodInvocation( methodRequest );
       }
  +
  +    private AltrmiReply doMethodAsyncRequest(MethodAsyncRequest methodRequest)
  +    {
  +        String publishedThing = methodRequest.getPublishedServiceName() + "_" + 
methodRequest.getObjectName();
  +
  +        if( !isPublished( publishedThing ) )
  +        {
  +            return new NotPublishedReply();
  +        }
  +
  +        MethodInvocationHandler methodInvocationHandler =
  +            getMethodInvocationHandler( publishedThing );
  +
  +        RawRequest[] requests = methodRequest.getRawRequests();
  +        for (int i = 0; i < requests.length; i++)
  +        {
  +            RawRequest rawRequest = requests[i];
  +            methodInvocationHandler.handleMethodInvocation(
  +                    new MethodRequest(
  +                            methodRequest.getPublishedServiceName(),
  +                            methodRequest.getObjectName(),
  +                            rawRequest.getMethodSignature(),
  +                            rawRequest.getArgs(),
  +                            methodRequest.getReferenceID(),
  +                            methodRequest.getSession())
  +            );
  +        }
  +
  +        return new MethodReply();
  +
  +    }
  +
   
       /**
        * DO a lokkup request
  
  
  
  1.4       +3 -1      
jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters/MarshalledInvocationHandlerAdapter.java
  
  Index: MarshalledInvocationHandlerAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters/MarshalledInvocationHandlerAdapter.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MarshalledInvocationHandlerAdapter.java   26 Sep 2002 06:23:54 -0000      1.3
  +++ MarshalledInvocationHandlerAdapter.java   26 Nov 2002 06:09:55 -0000      1.4
  @@ -14,6 +14,8 @@
   import org.apache.excalibur.altrmi.common.AltrmiRequest;
   import org.apache.excalibur.altrmi.common.SerializationHelper;
   
  +import javax.swing.*;
  +
   /**
    * Class MarshalledInvocationHandlerAdapter
    *
  
  
  
  1.3       +11 -4     
jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/async/SimpleAsyncTestCase.java
  
  Index: SimpleAsyncTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/async/SimpleAsyncTestCase.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SimpleAsyncTestCase.java  25 Nov 2002 21:17:08 -0000      1.2
  +++ SimpleAsyncTestCase.java  26 Nov 2002 06:09:55 -0000      1.3
  @@ -49,9 +49,9 @@
                   new PublicationDescriptionItem(AsyncTest.class,
                       new String[]{"setOne(java.lang.String)",
                                    "setTwo(java.lang.String)",
  -                                 "setThree(java.lang.String)"
  -                    }//,
  -                //    "fire()", null
  +                                 "setThree(java.lang.String)",
  +                    },
  +                    "fire()", null
                   )
           );
           cr.generate("AsyncTest",pd, this.getClass().getClassLoader());
  @@ -88,7 +88,6 @@
           assertNotNull("Field 'Tree' should not be null", asyncTestImpl.three);
           assertTrue("Field 'Fire' should not be false", asyncTestImpl.fired);
   
  -
       }
   
   
  @@ -104,6 +103,14 @@
           server = null;
           asyncTestImpl = null;
           super.tearDown();
  +    }
  +
  +    public static void main(String[] args) throws Exception
  +    {
  +        SimpleAsyncTestCase simp = new SimpleAsyncTestCase("testSimpleAsync");
  +        simp.setUp();
  +        simp.testSimpleAsync();
  +        simp.tearDown();
       }
   
   }
  
  
  

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

Reply via email to