hammant 02/02/02 04:18:02 Modified: altrmi/src/java/org/apache/commons/altrmi/client/impl AbstractAltrmiFactory.java BaseServedObject.java ClientClassAltrmiFactory.java ServerClassAltrmiFactory.java Log: alternate facades as arrays/retval now works in a more classloader aware manner. Revision Changes Path 1.13 +3 -1 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/AbstractAltrmiFactory.java Index: AbstractAltrmiFactory.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/AbstractAltrmiFactory.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- AbstractAltrmiFactory.java 1 Feb 2002 00:16:38 -0000 1.12 +++ AbstractAltrmiFactory.java 2 Feb 2002 12:18:02 -0000 1.13 @@ -31,7 +31,7 @@ * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.12 $ + * @version $Revision: 1.13 $ */ public abstract class AbstractAltrmiFactory implements AltrmiFactory { @@ -95,6 +95,8 @@ //TODO } } + + protected abstract Class getFacadeClass(String publishedServiceName, String objectName, boolean beanOnly) throws AltrmiConnectionException, ClassNotFoundException; protected abstract Object getInstance( String publishedServiceName, String objectName, BaseServedObject baseServedObject, 1.8 +3 -2 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/BaseServedObject.java Index: BaseServedObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/BaseServedObject.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- BaseServedObject.java 1 Feb 2002 00:16:38 -0000 1.7 +++ BaseServedObject.java 2 Feb 2002 12:18:02 -0000 1.8 @@ -30,7 +30,7 @@ * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.7 $ + * @version $Revision: 1.8 $ */ public final class BaseServedObject { @@ -130,7 +130,8 @@ } } else if (reply.getReplyCode() == AltrmiReply.METHODFACADEARRAYREPLY) { MethodFacadeArrayReply mfar = (MethodFacadeArrayReply) reply; - Class clazz = Class.forName(objNameWithoutArray.replace('$','.')); + Class clazz = mAltrmiFactory.getFacadeClass(mPublishedServiceName, objNameWithoutArray, + mAltrmiFactory.isBeanOnly()); Long[] refs = mfar.getReferenceIDs(); Object[] implBeans = (Object[]) Array.newInstance(clazz, refs.length); 1.9 +13 -7 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/ClientClassAltrmiFactory.java Index: ClientClassAltrmiFactory.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/ClientClassAltrmiFactory.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- ClientClassAltrmiFactory.java 30 Jan 2002 23:42:44 -0000 1.8 +++ ClientClassAltrmiFactory.java 2 Feb 2002 12:18:02 -0000 1.9 @@ -29,7 +29,7 @@ * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ */ public class ClientClassAltrmiFactory extends AbstractAltrmiFactory { @@ -92,6 +92,17 @@ return retVal; } + protected Class getFacadeClass(String publishedServiceName, String objectName, boolean beanOnly) throws AltrmiConnectionException, ClassNotFoundException { + String code = "2"; + + if (beanOnly) { + code = ""; + } + + return Class.forName("AltrmiGenerated" + code + publishedServiceName + "_" + + objectName); + } + /** * Method getInstance * @@ -109,15 +120,10 @@ boolean beanOnly) throws AltrmiConnectionException { - String code = "2"; - if (beanOnly) { - code = ""; - } try { - Class clazz = Class.forName("AltrmiGenerated" + code + publishedServiceName + "_" - + objectName); + Class clazz = getFacadeClass(publishedServiceName, objectName, beanOnly); Constructor[] constructors = clazz.getConstructors(); Object retVal = constructors[0].newInstance(new Object[]{ baseServedObject }); 1.11 +16 -6 jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/ServerClassAltrmiFactory.java Index: ServerClassAltrmiFactory.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/client/impl/ServerClassAltrmiFactory.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ServerClassAltrmiFactory.java 1 Feb 2002 00:16:38 -0000 1.10 +++ ServerClassAltrmiFactory.java 2 Feb 2002 12:18:02 -0000 1.11 @@ -36,7 +36,7 @@ * * * @author Paul Hammant <a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> - * @version $Revision: 1.10 $ + * @version $Revision: 1.11 $ */ public class ServerClassAltrmiFactory extends AbstractAltrmiFactory { @@ -110,9 +110,7 @@ return retVal; } - protected Object getInstance( - String publishedServiceName, String objectName, BaseServedObject baseServedObject, boolean beanOnly) - throws AltrmiConnectionException { + protected Class getFacadeClass(String publishedServiceName, String objectName, boolean beanOnly) throws AltrmiConnectionException, ClassNotFoundException{ String code = "2"; @@ -120,7 +118,6 @@ code = ""; } - try { TransportedClassLoader tcl = null; String beanClassName = "AltrmiGenerated" + publishedServiceName + "_" + objectName; String iiClassName = "AltrmiGenerated2" + publishedServiceName + "_" + objectName; @@ -171,8 +168,21 @@ mPublishedServiceClassLoaders.put(beanClassName, tcl); } + return tcl.loadClass(className); + } + + protected Object getInstance( + String publishedServiceName, String objectName, BaseServedObject baseServedObject, boolean beanOnly) + throws AltrmiConnectionException { + + String code = "2"; + + if (beanOnly) { + code = ""; + } - Class clazz = tcl.loadClass(className); + try { + Class clazz = getFacadeClass(publishedServiceName, objectName, beanOnly); Constructor[] constructors = clazz.getConstructors(); Object retVal = constructors[0].newInstance(new Object[]{ baseServedObject });
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>