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: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>