You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2002/11/15 00:49:29 UTC

cvs commit: jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/async AsyncTest.java AsyncTestImpl.java SimpleAsyncTestCase.java

hammant     2002/11/14 15:49:29

  Modified:    altrmi   base.xml
               altrmi/src/java/org/apache/excalibur/altrmi/common
                        ProxyGenerator.java
               altrmi/src/java/org/apache/excalibur/altrmi/generator
                        AbstractProxyGenerator.java
                        BCELProxyGeneratorImpl.java ProxyGeneratorImpl.java
               altrmi/src/java/org/apache/excalibur/altrmi/generator/ant
                        AltrmiProxyTask.java
               altrmi/src/java/org/apache/excalibur/altrmi/server
                        PublicationDescription.java
               altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters
                        PublicationAdapter.java
               altrmi/src/java/org/apache/excalibur/altrmi/server/impl/classretrievers
                        AbstractDynamicGeneratorClassRetriever.java
               altrmi/src/test/org/apache/excalibur/altrmi/test/generator
                        BCELProxyGeneratorTestCase.java
  Added:       altrmi/src/java/org/apache/excalibur/altrmi/server
                        PublicationDescriptionItem.java
               altrmi/src/test/org/apache/excalibur/altrmi/test/async
                        AsyncTest.java AsyncTestImpl.java
                        SimpleAsyncTestCase.java
  Log:
  start of asynchronous functionality
  
  Revision  Changes    Path
  1.6       +9 -0      jakarta-avalon-excalibur/altrmi/base.xml
  
  Index: base.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/base.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- base.xml	26 Aug 2002 21:53:48 -0000	1.5
  +++ base.xml	14 Nov 2002 23:49:28 -0000	1.6
  @@ -53,6 +53,15 @@
           <pathelement location="${build.home}/testclasses"/>            
         </classpath>
       </altrmiproxies> 
  +
  +    <altrmiproxies genname="AsyncTest" srcgendir="${build.home}/genjava" 
  +        classgendir="${build.home}/genclasses" verbose="true"
  +        interfaces="org.apache.excalibur.altrmi.test.async.AsyncTest">
  +      <classpath>
  +        <pathelement location="${build.home}/classes"/>
  +        <pathelement location="${build.home}/testclasses"/>            
  +      </classpath>
  +    </altrmiproxies> 
       
       <altrmiproxies genname="CallBackTestListenerImpl" srcgendir="${build.home}/genjava" 
           classgendir="${build.home}/genclasses" verbose="true" 
  
  
  
  1.4       +5 -3      jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/common/ProxyGenerator.java
  
  Index: ProxyGenerator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/common/ProxyGenerator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ProxyGenerator.java	23 May 2002 21:37:19 -0000	1.3
  +++ ProxyGenerator.java	14 Nov 2002 23:49:28 -0000	1.4
  @@ -7,6 +7,8 @@
    */
   package org.apache.excalibur.altrmi.common;
   
  +import org.apache.excalibur.altrmi.server.PublicationDescriptionItem;
  +
   /**
    * Class ProxyGenerator
    *
  @@ -24,7 +26,7 @@
        * @param interfacesToExpose the interfaces to expose
        *
        */
  -    void setInterfacesToExpose( Class[] interfacesToExpose );
  +    void setInterfacesToExpose( PublicationDescriptionItem[] interfacesToExpose );
   
       /**
        * Set the additional facades
  @@ -33,7 +35,7 @@
        * @param additionalFacades additional facades/interfaces to expose
        *
        */
  -    void setAdditionalFacades( Class[] additionalFacades );
  +    void setAdditionalFacades( PublicationDescriptionItem[] additionalFacades );
   
       /**
        * Set the source generation directory
  
  
  
  1.3       +10 -9     jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/AbstractProxyGenerator.java
  
  Index: AbstractProxyGenerator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/AbstractProxyGenerator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AbstractProxyGenerator.java	15 Jul 2002 21:52:19 -0000	1.2
  +++ AbstractProxyGenerator.java	14 Nov 2002 23:49:28 -0000	1.3
  @@ -10,6 +10,7 @@
   import org.apache.excalibur.altrmi.common.AbstractMethodHandler;
   import org.apache.excalibur.altrmi.common.ProxyGenerator;
   import org.apache.excalibur.altrmi.common.ProxyGenerationException;
  +import org.apache.excalibur.altrmi.server.PublicationDescriptionItem;
   
   
   /**
  @@ -29,8 +30,8 @@
       private String m_srcGenDir;
       private String m_classpath;
       private boolean m_verbose;
  -    private Class[] m_additionalFacades;
  -    private Class[] m_interfacesToExpose;
  +    private PublicationDescriptionItem[] m_additionalFacades;
  +    private PublicationDescriptionItem[] m_interfacesToExpose;
   
       /**
        * Get the directory name of the class generation directory.
  @@ -91,7 +92,7 @@
        *
        * @return the additional facades
        */
  -    public Class[] getAdditionalFacades()
  +    public PublicationDescriptionItem[] getAdditionalFacades()
       {
           return m_additionalFacades;
       }
  @@ -101,7 +102,7 @@
        *
        * @return the interfaces
        */
  -    public Class[] getInterfacesToExpose()
  +    public PublicationDescriptionItem[] getInterfacesToExpose()
       {
           return m_interfacesToExpose;
       }
  @@ -126,7 +127,7 @@
         * @param interfacesToExpose the interfaces.
         *
         */
  -     public void setInterfacesToExpose( Class[] interfacesToExpose )
  +     public void setInterfacesToExpose( PublicationDescriptionItem[] interfacesToExpose )
        {
            m_interfacesToExpose = interfacesToExpose;
        }
  @@ -140,7 +141,7 @@
        * @param additionalFacades the facades.
        *
        */
  -    public void setAdditionalFacades( Class[] additionalFacades )
  +    public void setAdditionalFacades( PublicationDescriptionItem[] additionalFacades )
       {
           m_additionalFacades = additionalFacades;
       }
  @@ -211,11 +212,11 @@
   
           for( int p = 0; p < m_additionalFacades.length; p++ )
           {
  -            if( clazz.getName().equals( m_additionalFacades[ p ].getName() ) )
  +            if( clazz.getName().equals( m_additionalFacades[ p ].getFacadeClass().getName() ) )
               {
                   return true;
               }
  -            else if( clazz.getName().equals( "[L" + m_additionalFacades[ p ].getName() + ";" ) )
  +            else if( clazz.getName().equals( "[L" + m_additionalFacades[ p ].getFacadeClass().getName() + ";" ) )
               {
                   return true;
               }
  
  
  
  1.7       +11 -10    jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/BCELProxyGeneratorImpl.java
  
  Index: BCELProxyGeneratorImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/BCELProxyGeneratorImpl.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BCELProxyGeneratorImpl.java	24 Aug 2002 11:39:05 -0000	1.6
  +++ BCELProxyGeneratorImpl.java	14 Nov 2002 23:49:28 -0000	1.7
  @@ -33,6 +33,7 @@
   import org.apache.bcel.generic.ObjectType;
   import org.apache.bcel.generic.PUSH;
   import org.apache.bcel.generic.Type;
  +import org.apache.excalibur.altrmi.server.PublicationDescriptionItem;
   
   /**
    * Class BCElProxyGeneratorImpl
  @@ -76,14 +77,14 @@
           {
               for (int i = 0; i < getAdditionalFacades().length; i++)
               {
  -                String encodedClassName = encodeClassName(getAdditionalFacades()[i]);
  +                String encodedClassName = encodeClassName(getAdditionalFacades()[i].getFacadeClass());
                   generateAltrmiProxyClass(
                       STUB_PREFIX + getGenName() + "_" + encodedClassName,
  -                    new Class[] { getAdditionalFacades()[i] });
  +                    new PublicationDescriptionItem[] { getAdditionalFacades()[i] });
                   generateAltrmiProxyClass2(
                       STUB_PREFIX + "2" + getGenName() + "_" + encodedClassName,
                       STUB_PREFIX + getGenName() + "_" + encodedClassName,
  -                    new Class[] { getAdditionalFacades()[i] });
  +                    new PublicationDescriptionItem[] { getAdditionalFacades()[i] });
   
               }
           }
  @@ -99,7 +100,7 @@
        */
       protected void generateAltrmiProxyClass(
           String mGeneratedClassName,
  -        Class[] interfacesToStubify)
  +        PublicationDescriptionItem[] interfacesToStubify)
       {
           //Start creating class
           createNewClassDeclaration(mGeneratedClassName);
  @@ -147,7 +148,7 @@
       protected void generateAltrmiProxyClass2(
           String generatedClassName2,
           String generatedClassName,
  -        Class[] interfacesToStubify)
  +        PublicationDescriptionItem[] interfacesToStubify)
       {
           //start creating the class
           createNewClassDeclaration2(
  @@ -208,12 +209,12 @@
       protected void createNewClassDeclaration2(
           String generatedClassName2,
           String generatedClassName,
  -        Class[] interfacesToStubify)
  +        PublicationDescriptionItem[] interfacesToStubify)
       {
           String[] interafacesToImplement = new String[interfacesToStubify.length];
           for (int i = 0; i < interafacesToImplement.length; i++)
           {
  -            interafacesToImplement[i] = interfacesToStubify[i].getName();
  +            interafacesToImplement[i] = interfacesToStubify[i].getFacadeClass().getName();
           }
           m_classGen =
               new ClassGen(
  @@ -438,11 +439,11 @@
        */
       protected void createInterfaceMethods(
           String generatedClassName,
  -        Class[] interfacesToStubify)
  +        PublicationDescriptionItem[] interfacesToStubify)
       {
           for (int x = 0; x < interfacesToStubify.length; x++)
           {
  -            Class clazz = interfacesToStubify[x];
  +            Class clazz = interfacesToStubify[x].getFacadeClass();
   
               if (isVerbose())
               {
  
  
  
  1.13      +12 -11    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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ProxyGeneratorImpl.java	24 Aug 2002 11:39:05 -0000	1.12
  +++ ProxyGeneratorImpl.java	14 Nov 2002 23:49:28 -0000	1.13
  @@ -16,6 +16,7 @@
   import java.util.Vector;
   import org.apache.excalibur.altrmi.common.ProxyGenerationException;
   import org.apache.excalibur.altrmi.javacompiler.JavaCompiler;
  +import org.apache.excalibur.altrmi.server.PublicationDescriptionItem;
   
   /**
    * Class ProxyGeneratorImpl
  @@ -51,10 +52,10 @@
           {
               for( int i = 0; i < getAdditionalFacades().length; i++ )
               {
  -                Class facade = getAdditionalFacades()[ i ];
  +                PublicationDescriptionItem facade = getAdditionalFacades()[ i ];
   
  -                makeSource( classLoader, encodeClassName( facade ), new Class[]{facade} );
  -                makeSource2( classLoader, encodeClassName( facade ), new Class[]{facade} );
  +                makeSource( classLoader, encodeClassName( facade.getFacadeClass() ), new PublicationDescriptionItem[]{facade} );
  +                makeSource2( classLoader, encodeClassName( facade.getFacadeClass() ), new PublicationDescriptionItem[]{facade} );
               }
           }
       }
  @@ -87,7 +88,7 @@
           {
               for( int i = 0; i < getAdditionalFacades().length; i++ )
               {
  -                String classname = encodeClassName( getAdditionalFacades()[ i ] );
  +                String classname = encodeClassName( getAdditionalFacades()[ i ].getFacadeClass() );
   
                   jc.doCompile( getSrcGenDir() + File.separator + "AltrmiGenerated"
                           + getGenName() + "_" + classname + ".java" );
  @@ -127,7 +128,7 @@
        * @throws ProxyGenerationException if generation not possible.
        *
        */
  -    public void makeSource( ClassLoader classloader, String name, Class[] interfacesToExpose )
  +    public void makeSource( ClassLoader classloader, String name, PublicationDescriptionItem[] interfacesToExpose )
           throws ProxyGenerationException
       {
   
  @@ -172,13 +173,13 @@
           m_classSource.close();
       }
   
  -    private void makeSourceInterfaces(Class[] interfacesToExpose,
  +    private void makeSourceInterfaces(PublicationDescriptionItem[] interfacesToExpose,
           Vector methodsDone) throws ProxyGenerationException
       {
           // TODO DefaultProxyHelper altrmiGetProxyHelper();
           for( int x = 0; x < interfacesToExpose.length; x++ )
           {
  -            Class clazz = interfacesToExpose[ x ];
  +            Class clazz = interfacesToExpose[ x ].getFacadeClass();
   
               if( isVerbose() )
               {
  @@ -338,7 +339,7 @@
        * @throws ProxyGenerationException if generation not possible.
        *
        */
  -    public void makeSource2( ClassLoader classloader, String name, Class[] interfacesToExpose )
  +    public void makeSource2( ClassLoader classloader, String name, PublicationDescriptionItem[] interfacesToExpose )
           throws ProxyGenerationException
       {
   
  @@ -407,12 +408,12 @@
           }
       }
   
  -    private void generateInterfaceList( PrintWriter pw, Class[] interfacesToExpose )
  +    private void generateInterfaceList( PrintWriter pw, PublicationDescriptionItem[] interfacesToExpose )
       {
   
           for( int x = 0; x < interfacesToExpose.length; x++ )
           {
  -            pw.print( interfacesToExpose[ x ].getName() );
  +            pw.print( interfacesToExpose[ x ].getFacadeClass().getName() );
   
               if( x + 1 < interfacesToExpose.length )
               {
  
  
  
  1.9       +6 -5      jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ant/AltrmiProxyTask.java
  
  Index: AltrmiProxyTask.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/generator/ant/AltrmiProxyTask.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- AltrmiProxyTask.java	2 Sep 2002 22:36:23 -0000	1.8
  +++ AltrmiProxyTask.java	14 Nov 2002 23:49:28 -0000	1.9
  @@ -12,6 +12,7 @@
   import java.util.Vector;
   import org.apache.excalibur.altrmi.common.ProxyGenerationException;
   import org.apache.excalibur.altrmi.common.ProxyGenerator;
  +import org.apache.excalibur.altrmi.server.PublicationDescriptionItem;
   import org.apache.tools.ant.AntClassLoader;
   import org.apache.tools.ant.BuildException;
   import org.apache.tools.ant.Task;
  @@ -253,27 +254,27 @@
               proxyGenerator.verbose( Boolean.valueOf( mVerbose ).booleanValue() );
               proxyGenerator.setClasspath( mClasspath.concatSystemClasspath( "ignore" ).toString() );
   
  -            Class[] interfacesToExpose = new Class[ mInterfacesToExpose.length ];
  +            PublicationDescriptionItem[] interfacesToExpose = new PublicationDescriptionItem[ mInterfacesToExpose.length ];
               ClassLoader classLoader = new AntClassLoader( getProject(), mClasspath );
   
               for( int i = 0; i < mInterfacesToExpose.length; i++ )
               {
                   String cn = mInterfacesToExpose[ i ];
   
  -                interfacesToExpose[ i ] = classLoader.loadClass( cn );
  +                interfacesToExpose[ i ] = new PublicationDescriptionItem(classLoader.loadClass( cn ));
               }
   
               proxyGenerator.setInterfacesToExpose( interfacesToExpose );
   
               if( mAdditionalFacades != null )
               {
  -                Class[] additionalFacades = new Class[ mAdditionalFacades.length ];
  +                PublicationDescriptionItem[] additionalFacades = new PublicationDescriptionItem[ mAdditionalFacades.length ];
   
                   for( int i = 0; i < mAdditionalFacades.length; i++ )
                   {
                       String cn = mAdditionalFacades[ i ];
   
  -                    additionalFacades[ i ] = classLoader.loadClass( cn );
  +                    additionalFacades[ i ] = new PublicationDescriptionItem(classLoader.loadClass( cn ));
                   }
   
                   proxyGenerator.setAdditionalFacades( additionalFacades );
  
  
  
  1.6       +85 -35    jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/PublicationDescription.java
  
  Index: PublicationDescription.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/PublicationDescription.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PublicationDescription.java	28 Oct 2002 23:44:49 -0000	1.5
  +++ PublicationDescription.java	14 Nov 2002 23:49:28 -0000	1.6
  @@ -7,6 +7,8 @@
    */
   package org.apache.excalibur.altrmi.server;
   
  +import java.util.ArrayList;
  +
   /**
    * Class PublicationDescription
    *
  @@ -20,11 +22,11 @@
       /**
        * An array of interfaces to expose.
        */
  -    private final Class[] m_interfacesToExpose;
  +    private ArrayList m_interfacesToExpose = new ArrayList();
       /**
        * An array of additional facades.
        */
  -    private final Class[] m_additionalFacades;
  +    private ArrayList m_additionalFacades = new ArrayList();
   
       /**
        * Construct a publication description.
  @@ -35,9 +37,7 @@
        */
       public PublicationDescription( Class interfaceToExpose )
       {
  -        m_interfacesToExpose = new Class[]{interfaceToExpose};
  -        m_additionalFacades = new Class[ 0 ];
  -    }
  +       this( new Class[] {interfaceToExpose}, new Class[0]);    }
   
       /**
        * Construct a publication description.
  @@ -50,9 +50,7 @@
        */
       public PublicationDescription( Class interfaceToExpose, Class additionalFacade )
       {
  -        m_interfacesToExpose = new Class[]{interfaceToExpose};
  -        m_additionalFacades = new Class[]{additionalFacade};
  -    }
  +        this( new Class[] {interfaceToExpose}, new Class[] {additionalFacade});   }
   
       /**
        * Construct a publication description.
  @@ -66,8 +64,7 @@
        */
       public PublicationDescription( Class interfaceToExpose, Class[] additionalFacades )
       {
  -        m_interfacesToExpose = new Class[]{interfaceToExpose};
  -        m_additionalFacades = additionalFacades;
  +        this( new Class[] {interfaceToExpose}, additionalFacades);
       }
   
       /**
  @@ -79,8 +76,7 @@
        */
       public PublicationDescription( Class[] interfacesToExpose )
       {
  -        m_interfacesToExpose = interfacesToExpose;
  -        m_additionalFacades = new Class[ 0 ];
  +        this(interfacesToExpose, new Class[ 0 ]);
       }
   
       /**
  @@ -94,8 +90,8 @@
        */
       public PublicationDescription( Class[] interfacesToExpose, Class[] additionalFacades )
       {
  -        m_interfacesToExpose = interfacesToExpose;
  -        m_additionalFacades = additionalFacades;
  +        addInterfacesToExpose(interfacesToExpose);
  +        addAdditionalFacadesToExpose(additionalFacades);
       }
   
       /**
  @@ -111,8 +107,7 @@
       public PublicationDescription( String interfaceToExpose, ClassLoader classLoader )
           throws PublicationException
       {
  -        m_interfacesToExpose = makeClasses( new String[]{interfaceToExpose}, classLoader );
  -        m_additionalFacades = new Class[ 0 ];
  +       this( makeClasses( new String[]{interfaceToExpose}, classLoader ), new Class[0]);
       }
   
       /**
  @@ -130,8 +125,8 @@
           String interfaceToExpose, String additionalFacade, ClassLoader classLoader )
           throws PublicationException
       {
  -        m_interfacesToExpose = makeClasses( new String[]{interfaceToExpose}, classLoader );
  -        m_additionalFacades = makeClasses( new String[]{additionalFacade}, classLoader );
  +        this( makeClasses( new String[]{interfaceToExpose}, classLoader ),
  +              makeClasses( new String[]{additionalFacade}, classLoader ));
       }
   
       /**
  @@ -148,8 +143,8 @@
           String interfaceToExpose, String[] additionalFacades, ClassLoader classLoader )
           throws PublicationException
       {
  -        m_interfacesToExpose = makeClasses( new String[]{interfaceToExpose}, classLoader );
  -        m_additionalFacades = makeClasses( additionalFacades, classLoader );
  +        this( makeClasses( new String[]{interfaceToExpose}, classLoader ),
  +              makeClasses( additionalFacades, classLoader ) );
       }
   
       /**
  @@ -164,8 +159,8 @@
       public PublicationDescription( String[] interfacesToExpose, ClassLoader classLoader )
           throws PublicationException
       {
  -        m_interfacesToExpose = makeClasses( interfacesToExpose, classLoader );
  -        m_additionalFacades = new Class[ 0 ];
  +        this( makeClasses( interfacesToExpose, classLoader ),
  +                new Class[0]);
       }
   
       /**
  @@ -183,8 +178,8 @@
           String[] interfacesToExpose, String[] additionalFacades, ClassLoader classLoader )
           throws PublicationException
       {
  -        m_interfacesToExpose = makeClasses( interfacesToExpose, classLoader );
  -        m_additionalFacades = makeClasses( additionalFacades, classLoader );
  +        this( makeClasses( interfacesToExpose, classLoader ),
  +              makeClasses( additionalFacades, classLoader ) );
       }
   
       private static Class[] makeClasses( String[] classNames, ClassLoader classLoader )
  @@ -213,6 +208,56 @@
           }
       }
   
  +    public void addInterfacesToExpose(Class[] interfacesToExpose) {
  +        for (int i = 0; i < interfacesToExpose.length; i++) {
  +            Class interfaceToExpose = interfacesToExpose[i];
  +            addInterfaceToExpose(new PublicationDescriptionItem(interfaceToExpose));
  +        }
  +    }
  +
  +    public void addInterfaceToExpose(PublicationDescriptionItem publicationDescriptionItem) {
  +        addInterfacesToExpose(
  +                new PublicationDescriptionItem[] {publicationDescriptionItem});
  +    }
  +
  +    public void addInterfacesToExpose(PublicationDescriptionItem[] publicationDescriptionItems) {
  +        for (int i = 0; i < publicationDescriptionItems.length; i++) {
  +            PublicationDescriptionItem publicationDescriptionItem = publicationDescriptionItems[i];
  +            if (publicationDescriptionItem == null) {
  +                throw new RuntimeException("'PubDescItem' cannot be null");
  +            }
  +            if (publicationDescriptionItem.getFacadeClass() == null) {
  +                throw new RuntimeException("'Class' cannot be null");
  +            }
  +            m_interfacesToExpose.add(publicationDescriptionItem);
  +        }
  +    }
  +
  +    public void addAdditionalFacadesToExpose(Class[] additionalFacades) {
  +        for (int i = 0; i < additionalFacades.length; i++) {
  +            Class additionalFacade = additionalFacades[i];
  +            addAdditionalFacadeToExpose(new PublicationDescriptionItem(additionalFacade));
  +        }
  +    }
  +
  +    public void addAdditionalFacadeToExpose(PublicationDescriptionItem publicationDescriptionItem) {
  +        addAdditionalFacadesToExpose( new PublicationDescriptionItem[] { publicationDescriptionItem });
  +    }
  +
  +    public void addAdditionalFacadesToExpose(PublicationDescriptionItem[] publicationDescriptionItems) {
  +        for (int i = 0; i < publicationDescriptionItems.length; i++) {
  +            PublicationDescriptionItem publicationDescriptionItem = publicationDescriptionItems[i];
  +            if (publicationDescriptionItem == null) {
  +                throw new RuntimeException("'PubDescItem' cannot be null");
  +            }
  +            if (publicationDescriptionItem.getFacadeClass() == null) {
  +                throw new RuntimeException("'Class' cannot be null");
  +            }
  +            m_additionalFacades.add(publicationDescriptionItem);
  +        }
  +    }
  +
  +
       /**
        * Get the princiapal interfaces to expose.
        *
  @@ -220,9 +265,11 @@
        * @return an array of those interfaces.
        *
        */
  -    public Class[] getInterfacesToExpose()
  +    public PublicationDescriptionItem[] getInterfacesToExpose()
       {
  -        return m_interfacesToExpose;
  +        PublicationDescriptionItem[] items = new PublicationDescriptionItem[m_interfacesToExpose.size()];
  +        m_interfacesToExpose.toArray(items);
  +        return items;
       }
   
       /**
  @@ -232,9 +279,12 @@
        * @return an array of those facades.
        *
        */
  -    public Class[] getAdditionalFacades()
  +    public PublicationDescriptionItem[] getAdditionalFacades()
       {
  -        return m_additionalFacades;
  +        PublicationDescriptionItem[] items = new PublicationDescriptionItem[m_additionalFacades.size()];
  +        m_additionalFacades.toArray(items);
  +        return items;
  +
       }
   
   
  @@ -254,19 +304,19 @@
   
           Class facadeRetVal = null;
   
  -        for( int i = 0; i < m_additionalFacades.length; i++ )
  +        for( int i = 0; i < m_additionalFacades.size(); i++ )
           {
  -            Class facade = m_additionalFacades[ i ];
  +            Class facadeClass = ((PublicationDescriptionItem) m_additionalFacades.get( i )).getFacadeClass();
   
  -            if( facade.isAssignableFrom( beanImpl.getClass() ) )
  +            if( facadeClass.isAssignableFrom( beanImpl.getClass() ) )
               {
                   if( facadeRetVal == null )
                   {
  -                    facadeRetVal = facade;
  +                    facadeRetVal = facadeClass;
                   }
  -                else if( facadeRetVal.isAssignableFrom( facade ) )
  +                else if( facadeRetVal.isAssignableFrom( facadeClass ) )
                   {
  -                    facadeRetVal = facade;
  +                    facadeRetVal = facadeClass;
                   }
               }
           }
  
  
  
  1.1                  jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/PublicationDescriptionItem.java
  
  Index: PublicationDescriptionItem.java
  ===================================================================
  /*
   * 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.server;
  
  /**
   * Class PublicationDescriptionItem
   *
   *
   * @author Paul Hammant
   * @version * $Revision: 1.1 $
   */
  public class PublicationDescriptionItem
  {
  
      private final Class m_facadeClass;
      private final String[] m_asyncMethods;
  
      public PublicationDescriptionItem(Class facadeClass)
      {
          this.m_facadeClass = facadeClass;
          this.m_asyncMethods = new String[0];
      }
  
      public PublicationDescriptionItem(Class facadeClass, String[] asyncMethods)
      {
          this.m_facadeClass = facadeClass;
          if (facadeClass == null)
          {
              throw new RuntimeException("Facade class nust not be null");
          }
          this.m_asyncMethods = asyncMethods;
      }
  
      public Class getFacadeClass()
      {
          return m_facadeClass;
      }
  
      public String[] getAsyncMethods()
      {
          return m_asyncMethods;
      }
  }
  
  
  
  1.6       +9 -12     jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters/PublicationAdapter.java
  
  Index: PublicationAdapter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/adapters/PublicationAdapter.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PublicationAdapter.java	26 Sep 2002 06:23:54 -0000	1.5
  +++ PublicationAdapter.java	14 Nov 2002 23:49:28 -0000	1.6
  @@ -13,10 +13,7 @@
   
   import org.apache.excalibur.altrmi.common.AbstractMethodHandler;
   import org.apache.excalibur.altrmi.common.MethodRequest;
  -import org.apache.excalibur.altrmi.server.AltrmiPublisher;
  -import org.apache.excalibur.altrmi.server.MethodInvocationHandler;
  -import org.apache.excalibur.altrmi.server.PublicationDescription;
  -import org.apache.excalibur.altrmi.server.PublicationException;
  +import org.apache.excalibur.altrmi.server.*;
   import org.apache.excalibur.altrmi.server.impl.DefaultMethodInvocationHandler;
   
   /**
  @@ -67,7 +64,7 @@
           throws PublicationException
       {
           publish( impl, asName,
  -                 new PublicationDescription( new Class[]{interfaceToExpose}, new Class[ 0 ] ) );
  +                 new PublicationDescription( interfaceToExpose ) );
       }
   
       /**
  @@ -84,8 +81,8 @@
           PublicationDescription publicationDescription ) throws PublicationException
       {
   
  -        Class[] interfacesToExpose = publicationDescription.getInterfacesToExpose();
  -        Class[] additionalFacades = publicationDescription.getAdditionalFacades();
  +        PublicationDescriptionItem[] interfacesToExpose = publicationDescription.getInterfacesToExpose();
  +        PublicationDescriptionItem[] additionalFacades = publicationDescription.getAdditionalFacades();
   
           if( m_publishedObjects.containsKey( asName + "_Main" ) )
           {
  @@ -96,7 +93,7 @@
   
           for( int i = 0; i < interfacesToExpose.length; i++ )
           {
  -            interfaceNames[ i ] = interfacesToExpose[ i ].getName();
  +            interfaceNames[ i ] = interfacesToExpose[ i ].getFacadeClass().getName();
           }
   
           // add method maps for main lookup-able service.
  @@ -109,7 +106,7 @@
   
           for( int x = 0; x < interfacesToExpose.length; x++ )
           {
  -            Method methods[] = interfacesToExpose[ x ].getMethods();
  +            Method methods[] = interfacesToExpose[ x ].getFacadeClass().getMethods();
   
               for( int y = 0; y < methods.length; y++ )
               {
  @@ -129,8 +126,8 @@
           // add method maps for all the additional facades.
           for( int x = 0; x < additionalFacades.length; x++ )
           {
  -            Method methods[] = additionalFacades[ x ].getMethods();
  -            String encodedClassName = encodeClassName( additionalFacades[ x ].getName() );
  +            Method methods[] = additionalFacades[ x ].getFacadeClass().getMethods();
  +            String encodedClassName = encodeClassName( additionalFacades[ x ].getFacadeClass().getName() );
               HashMap methodMap = new HashMap();
               MethodInvocationHandler methodInvocationHandler =
                   new DefaultMethodInvocationHandler( this, asName + "_" + encodedClassName,
  
  
  
  1.6       +6 -11     jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/classretrievers/AbstractDynamicGeneratorClassRetriever.java
  
  Index: AbstractDynamicGeneratorClassRetriever.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/java/org/apache/excalibur/altrmi/server/impl/classretrievers/AbstractDynamicGeneratorClassRetriever.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AbstractDynamicGeneratorClassRetriever.java	25 Aug 2002 22:23:31 -0000	1.5
  +++ AbstractDynamicGeneratorClassRetriever.java	14 Nov 2002 23:49:28 -0000	1.6
  @@ -12,12 +12,7 @@
   import java.io.FileInputStream;
   import java.io.IOException;
   import org.apache.excalibur.altrmi.common.ProxyGenerator;
  -import org.apache.excalibur.altrmi.server.AltrmiProxyGenerator;
  -import org.apache.excalibur.altrmi.server.ClassRetrievalException;
  -import org.apache.excalibur.altrmi.server.ClassRetriever;
  -import org.apache.excalibur.altrmi.server.ProxyGenerationEnvironmentException;
  -import org.apache.excalibur.altrmi.server.PublicationDescription;
  -import org.apache.excalibur.altrmi.server.PublicationException;
  +import org.apache.excalibur.altrmi.server.*;
   
   /**
    * Class JarFileClassRetriever
  @@ -254,8 +249,8 @@
               classLoader = this.getClass().getClassLoader();
           }
   
  -        Class[] interfacesToExpose = new Class[ 0 ];
  -        Class[] addInfs = new Class[ 0 ];
  +        PublicationDescriptionItem[] interfacesToExpose = new PublicationDescriptionItem[ 0 ];
  +        PublicationDescriptionItem[] addInfs = new PublicationDescriptionItem[ 0 ];
   
           interfacesToExpose = publicationDescription.getInterfacesToExpose();
           addInfs = publicationDescription.getAdditionalFacades();
  @@ -297,7 +292,7 @@
   
               for( int i = 0; i < interfacesToExpose.length; i++ )
               {
  -                String aString = interfacesToExpose[ i ].getName();
  +                String aString = interfacesToExpose[ i ].getFacadeClass().getName();
   
                   System.out.println( "** .." + aString );
               }
  @@ -342,7 +337,7 @@
   
                   for( int i = 0; i < interfacesToExpose.length; i++ )
                   {
  -                    String aString = interfacesToExpose[ i ].getName();
  +                    String aString = interfacesToExpose[ i ].getFacadeClass().getName();
   
                       System.out.println( "** .." + aString );
                   }
  
  
  
  1.5       +3 -1      jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/generator/BCELProxyGeneratorTestCase.java
  
  Index: BCELProxyGeneratorTestCase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/generator/BCELProxyGeneratorTestCase.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BCELProxyGeneratorTestCase.java	4 Sep 2002 11:01:23 -0000	1.4
  +++ BCELProxyGeneratorTestCase.java	14 Nov 2002 23:49:29 -0000	1.5
  @@ -18,6 +18,7 @@
   import org.apache.excalibur.altrmi.client.impl.ClientClassAltrmiFactory;
   import org.apache.excalibur.altrmi.common.ProxyGenerator;
   import org.apache.excalibur.altrmi.generator.BCELProxyGeneratorImpl;
  +import org.apache.excalibur.altrmi.server.PublicationDescriptionItem;
   
   
   
  @@ -46,7 +47,8 @@
           if(mGeneratedProxyClass!=null)
               return mGeneratedProxyClass;
           mProxyGenerator.setGenName("Something");
  -        mProxyGenerator.setInterfacesToExpose(new Class[]{mTestInterfaceClass});
  +        mProxyGenerator.setInterfacesToExpose(new PublicationDescriptionItem[]{
  +            new PublicationDescriptionItem(mTestInterfaceClass)});
           mProxyGenerator.setClassGenDir(".");
           mProxyGenerator.verbose(true);
           mProxyGenerator.generateClass(null);
  
  
  
  1.1                  jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/async/AsyncTest.java
  
  Index: AsyncTest.java
  ===================================================================
  /*
   * 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.test.async;
  
  public interface AsyncTest
  {
  
      void setOne(String one);
  
      void setTwo(String two);
  
      void setThree(String three);
  
      void fire();
  
  }
  
  
  
  1.1                  jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/async/AsyncTestImpl.java
  
  Index: AsyncTestImpl.java
  ===================================================================
  /*
   * 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.test.async;
  
  public class AsyncTestImpl implements AsyncTest
  {
  
      public String one;
      public String two;
      public String three;
      public boolean fired;
  
      public void setOne(String one)
      {
          this.one = one;
      }
  
      public void setTwo(String two)
      {
          this.two = two;
      }
  
      public void setThree(String three)
      {
          this.three = three;
      }
  
      public void fire()
      {
          fired = true;
      }
  }
  
  
  
  1.1                  jakarta-avalon-excalibur/altrmi/src/test/org/apache/excalibur/altrmi/test/async/SimpleAsyncTestCase.java
  
  Index: SimpleAsyncTestCase.java
  ===================================================================
  /*
   * 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.test.async;
  
  import org.apache.excalibur.altrmi.server.impl.socket.CompleteSocketCustomStreamServer;
  import org.apache.excalibur.altrmi.server.PublicationDescription;
  import org.apache.excalibur.altrmi.client.impl.ClientClassAltrmiFactory;
  import org.apache.excalibur.altrmi.client.impl.socket.SocketCustomStreamHostContext;
  import org.apache.excalibur.altrmi.client.AltrmiFactory;
  import junit.framework.TestCase;
  
  public class SimpleAsyncTestCase extends TestCase
  {
  
      AsyncTestImpl asyncTestImpl;
      AsyncTest testClient;
      AltrmiFactory altrmiFactory;
      CompleteSocketCustomStreamServer server;
  
      public SimpleAsyncTestCase(String name)
      {
          super(name);
      }
  
      protected void setUp() throws Exception
      {
          super.setUp();
  
          // server side setup.
          server = new CompleteSocketCustomStreamServer(11001);
          asyncTestImpl = new AsyncTestImpl();
          PublicationDescription pd = new PublicationDescription(AsyncTest.class);
          server.publish(asyncTestImpl, "AsyncTest", pd);
          server.start();
  
          // Client side setup
          altrmiFactory = new ClientClassAltrmiFactory(false);
          altrmiFactory.setHostContext(new SocketCustomStreamHostContext("127.0.0.1", 11001), false);
          testClient = (AsyncTest) altrmiFactory.lookup("AsyncTest");
  
          // just a kludge for unit testing given we are intrinsically dealing with
          // threads, AltRMI being a client/server thing
          Thread.yield();
      }
  
      public void testTrue()
      {
  
      }
  
      public void testSimpleAsync() throws Exception
      {
  
          testClient.setOne("one");
          testClient.setTwo("two");
          testClient.setThree("three");
  
          assertNull("One should be null", asyncTestImpl.one);
          assertNull("Two should be null", asyncTestImpl.two);
          assertNull("Tree should be null", asyncTestImpl.three);
          assertFalse("Fire should be false", asyncTestImpl.fired);
  
          testClient.fire();
  
          assertNotNull("One should not be null", asyncTestImpl.one);
          assertNotNull("Two should not be null", asyncTestImpl.two);
          assertNotNull("Tree should not be null", asyncTestImpl.three);
          assertTrue("Fire should not be false", asyncTestImpl.fired);
  
  
      }
  
  
      protected void tearDown() throws Exception
      {
          testClient = null;
          System.gc();
          Thread.yield();
          altrmiFactory.close();
          Thread.yield();
          server.stop();
          Thread.yield();
          server = null;
          asyncTestImpl = null;
          super.tearDown();
      }
  
  }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>