You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ha...@apache.org on 2001/12/30 01:42:10 UTC
cvs commit: jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test DirectTest.java PipeTest.java RmiClientTest.java SocketClientTest.java
hammant 01/12/29 16:42:10
Modified: armi PROPOSAL test.xml
armi/src/java/org/apache/commons/armi/client
ArmiFactory.java
armi/src/java/org/apache/commons/armi/server/impl
AbstractServer.java
armi/src/java/org/apache/commons/armi/test DirectTest.java
PipeTest.java RmiClientTest.java
SocketClientTest.java
Added: armi/src/java/org/apache/commons/armi/client/impl
ClientClassArmiFactory.java
DefaultBlockingArmiFactory.java
ServerClassArmiFactory.java
TransportedClassLoader.java
armi/src/java/org/apache/commons/armi/common ClassReply.java
ClassRequest.java RequestFailedReply.java
armi/src/java/org/apache/commons/armi/generator
PrimarySourceGenerator.java
SecondarySourceGenerator.java
armi/src/java/org/apache/commons/armi/generator/ant
ArmiClassInternTask.java ArmiInterfaceTask.java
armi/src/java/org/apache/commons/armi/server/impl
BaseMobileClass.java
Removed: armi/src/java/org/apache/commons/armi/client/impl
DefaultArmiFactory.java
armi/src/java/org/apache/commons/armi/generator
SourceGenerator.java
armi/src/java/org/apache/commons/armi/generator/ant
ArmiTask.java
Log:
Proxy Classes (can be) forwarded to client from server now.
Revision Changes Path
1.2 +4 -0 jakarta-commons-sandbox/armi/PROPOSAL
Index: PROPOSAL
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/armi/PROPOSAL,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PROPOSAL 29 Dec 2001 01:35:22 -0000 1.1
+++ PROPOSAL 30 Dec 2001 00:42:10 -0000 1.2
@@ -49,6 +49,10 @@
- Later we will allow server to pass forward implementation class
definitions as opposed to just newInstance() them as at present.
+
+3) This is not of any use for EJB Home/Remote interfaces. The container
+ maker chooses the transport for use that container, not the bean coder.
+ This is intended for other client server solutions.
Initial commiters:
1.2 +95 -19 jakarta-commons-sandbox/armi/test.xml
Index: test.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/armi/test.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- test.xml 28 Dec 2001 18:08:37 -0000 1.1
+++ test.xml 30 Dec 2001 00:42:10 -0000 1.2
@@ -3,7 +3,7 @@
<!--
"Alt (to) RMI" component of the Jakarta Commons Subproject
- $Id: test.xml,v 1.1 2001/12/28 18:08:37 hammant Exp $
+ $Id: test.xml,v 1.2 2001/12/30 00:42:10 hammant Exp $
-->
@@ -40,14 +40,29 @@
</path>
<!-- For running of tests -->
- <path id="test2.classpath">
+ <path id="testA.classpath">
<pathelement location="${build.home}/classes"/>
<pathelement location="${build.home}/classes2"/>
</path>
+
+ <path id="testB1.classpath">
+ <pathelement location="${build.home}/classes"/>
+ <pathelement location="${build.home}/classes3"/>
+ </path>
+
+ <path id="testB2.classpath">
+ <pathelement location="${build.home}/classes"/>
+ </path>
+
+
- <taskdef name="armi" classname="org.apache.commons.armi.generator.ant.ArmiTask">
+ <taskdef name="armiinterfaces" classname="org.apache.commons.armi.generator.ant.ArmiInterfaceTask">
<classpath refid="compile.classpath" />
- </taskdef>
+ </taskdef>
+
+ <taskdef name="armiclassintern" classname="org.apache.commons.armi.generator.ant.ArmiClassInternTask">
+ <classpath refid="compile.classpath" />
+ </taskdef>
<!-- ========== Executable Targets ======================================== -->
@@ -58,16 +73,24 @@
<mkdir dir="${build.home}/classes2"/>
<delete>
<fileset dir="${build.home}/classes2" includes="*" defaultexcludes="no"/>
- </delete>
+ </delete>
<mkdir dir="${build.home}/genjava"/>
<delete>
<fileset dir="${build.home}/genjava" includes="*" defaultexcludes="no"/>
- </delete>
+ </delete>
+ <mkdir dir="${build.home}/genjava2"/>
+ <delete>
+ <fileset dir="${build.home}/genjava2" includes="*" defaultexcludes="no"/>
+ </delete>
+ <mkdir dir="${build.home}/classes3"/>
+ <delete>
+ <fileset dir="${build.home}/classes3" includes="*" defaultexcludes="no"/>
+ </delete>
</target>
<target name="generate" depends="prepare">
- <armi genname="Hello" gendir="${build.home}/genjava"
+ <armiinterfaces genname="Hello" gendir="${build.home}/genjava"
interfaces="org.apache.commons.armi.test.TestInterface" />
<javac srcdir="${build.home}/genjava"
@@ -78,42 +101,95 @@
<classpath refid="compile.classpath"/>
</javac>
+ <armiclassintern genname="Hello" gendir="${build.home}/genjava2"
+ encapsulated="${build.home}/classes2/ArmiGeneratedHello.class" />
+
+ <javac srcdir="${build.home}/genjava2"
+ destdir="${build.home}/classes3"
+ debug="${compile.debug}"
+ deprecation="${compile.deprecation}"
+ optimize="${compile.optimize}">
+ <classpath refid="compile.classpath"/>
+ </javac>
+
+
+ </target>
+
+ <target name="test1a-serve">
+ <java classname="org.apache.commons.armi.test.SocketServerTest" fork="true">
+ <classpath refid="testA.classpath"/>
+ </java>
+ </target>
+
+ <target name="test1a-client" depends="generate">
+ <java classname="org.apache.commons.armi.test.SocketClientTest" fork="true">
+ <classpath refid="testA.classpath"/>
+ </java>
</target>
- <target name="test1-serve">
+ <target name="test2a" depends="generate">
+ <java classname="org.apache.commons.armi.test.PipeTest" fork="true">
+ <classpath refid="testA.classpath"/>
+ </java>
+ </target>
+
+ <target name="test3a-serve">
+ <java classname="org.apache.commons.armi.test.RmiServerTest" fork="true">
+ <classpath refid="testA.classpath"/>
+ </java>
+ </target>
+
+ <target name="test3a-client" depends="generate">
+ <java classname="org.apache.commons.armi.test.RmiClientTest" fork="true">
+ <classpath refid="testA.classpath"/>
+ </java>
+ </target>
+
+ <target name="test4a" depends="generate">
+ <java classname="org.apache.commons.armi.test.DirectTest" fork="true">
+ <classpath refid="testA.classpath"/>
+ </java>
+ </target>
+
+ <target name="test1b-serve">
<java classname="org.apache.commons.armi.test.SocketServerTest" fork="true">
- <classpath refid="test2.classpath"/>
+ <classpath refid="testB1.classpath"/>
</java>
</target>
- <target name="test1-client" depends="generate">
+ <target name="test1b-client" depends="generate">
<java classname="org.apache.commons.armi.test.SocketClientTest" fork="true">
- <classpath refid="test2.classpath"/>
+ <classpath refid="testB2.classpath"/>
+ <arg value="S"/>
</java>
</target>
- <target name="test2" depends="generate">
+ <target name="test2b" depends="generate">
<java classname="org.apache.commons.armi.test.PipeTest" fork="true">
- <classpath refid="test2.classpath"/>
+ <classpath refid="testB1.classpath"/>
+ <arg value="S"/>
</java>
</target>
- <target name="test3-serve">
+ <target name="test3b-serve">
<java classname="org.apache.commons.armi.test.RmiServerTest" fork="true">
- <classpath refid="test2.classpath"/>
+ <classpath refid="testB1.classpath"/>
</java>
</target>
- <target name="test3-client" depends="generate">
+ <target name="test3b-client" depends="generate">
<java classname="org.apache.commons.armi.test.RmiClientTest" fork="true">
- <classpath refid="test2.classpath"/>
+ <classpath refid="testB2.classpath"/>
+ <arg value="S"/>
</java>
</target>
- <target name="test4" depends="generate">
+ <target name="test4b" depends="generate">
<java classname="org.apache.commons.armi.test.DirectTest" fork="true">
- <classpath refid="test2.classpath"/>
+ <classpath refid="testB1.classpath"/>
+ <arg value="S"/>
</java>
</target>
+
</project>
1.2 +14 -7 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/ArmiFactory.java
Index: ArmiFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/ArmiFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ArmiFactory.java 28 Dec 2001 18:08:37 -0000 1.1
+++ ArmiFactory.java 30 Dec 2001 00:42:10 -0000 1.2
@@ -1,8 +1,8 @@
/*
- * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/ArmiFactory.java,v 1.1 2001/12/28 18:08:37 hammant Exp $
- * $Revision: 1.1 $
- * $Date: 2001/12/28 18:08:37 $
+ * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/ArmiFactory.java,v 1.2 2001/12/30 00:42:10 hammant Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
@@ -63,7 +63,7 @@
-import org.apache.commons.armi.client.impl.DefaultArmiFactory;
+import org.apache.commons.armi.client.impl.ClientClassArmiFactory;
import org.apache.commons.armi.common.ArmiConnectionException;
@@ -72,11 +72,18 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public abstract class ArmiFactory {
- private static ArmiFactory mDefaultArmiFactory;
+ private static transient ArmiFactory mDefaultArmiFactory;
+
+ public static synchronized void setDefaultArmiFactory(ArmiFactory armiFactory) {
+ // set once.
+ if (mDefaultArmiFactory == null) {
+ mDefaultArmiFactory = armiFactory;
+ }
+ }
/**
* Method getDefaultArmiFactory
@@ -88,7 +95,7 @@
public static synchronized ArmiFactory getDefaultArmiFactory() {
if (mDefaultArmiFactory == null) {
- mDefaultArmiFactory = new DefaultArmiFactory();
+ mDefaultArmiFactory = new ClientClassArmiFactory();
}
return mDefaultArmiFactory;
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/ClientClassArmiFactory.java
Index: ClientClassArmiFactory.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/ClientClassArmiFactory.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.client.impl;
import org.apache.commons.armi.client.ArmiFactory;
import org.apache.commons.armi.client.ArmiHostContext;
import org.apache.commons.armi.common.ArmiConnectionException;
/**
* Class ClientClassArmiFactory
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class ClientClassArmiFactory extends ArmiFactory {
/**
* Method lookup
*
*
* @param hostContext
* @param publishedServiceName
*
* @return
*
* @throws ArmiConnectionException
*
*/
public Object lookup(ArmiHostContext hostContext, String publishedServiceName)
throws ArmiConnectionException {
try {
Class clazz = Class.forName("ArmiGenerated" + publishedServiceName);
BaseServedObject bo = (BaseServedObject) clazz.newInstance();
bo.armiSetInvocationHandler(hostContext.getInvocationHandler());
bo.armiSetPublishedObjectName(publishedServiceName);
return bo;
} catch (ClassNotFoundException cnfe) {
throw new ArmiConnectionException("Generated class not found during lookup : "
+ cnfe.getMessage());
} catch (InstantiationException ie) {
throw new ArmiConnectionException("Generated class not instantiable during lookup : "
+ ie.getMessage());
} catch (IllegalAccessException iae) {
throw new ArmiConnectionException("Illegal access to generated class during lookup : "
+ iae.getMessage());
}
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/DefaultBlockingArmiFactory.java
Index: DefaultBlockingArmiFactory.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/DefaultBlockingArmiFactory.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.client.impl;
import org.apache.commons.armi.client.ArmiFactory;
import org.apache.commons.armi.client.ArmiHostContext;
import org.apache.commons.armi.common.ArmiConnectionException;
/**
* Class DefaultBlockingArmiFactory
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class DefaultBlockingArmiFactory extends ArmiFactory {
/**
* Method lookup
*
*
* @param hostContext
* @param publishedServiceName
*
* @return
*
* @throws ArmiConnectionException
*
*/
public Object lookup(ArmiHostContext hostContext, String publishedServiceName)
throws ArmiConnectionException {
throw new ArmiConnectionException("The default ArmiFactory is disabled");
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/ServerClassArmiFactory.java
Index: ServerClassArmiFactory.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/ServerClassArmiFactory.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.client.impl;
import org.apache.commons.armi.client.ArmiFactory;
import org.apache.commons.armi.client.ArmiHostContext;
import org.apache.commons.armi.common.ClassReply;
import org.apache.commons.armi.common.ArmiConnectionException;
import org.apache.commons.armi.common.ClassRequest;
import java.util.HashMap;
/**
* Class ServerClassArmiFactory
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class ServerClassArmiFactory extends ArmiFactory {
private HashMap mPublishedServiceClassLoaders = new HashMap();
/**
* Method lookup
*
*
* @param hostContext
* @param publishedServiceName
*
* @return
*
* @throws ArmiConnectionException
*
*/
public Object lookup(ArmiHostContext hostContext, String publishedServiceName)
throws ArmiConnectionException {
try {
TransportedClassLoader tcl = null;
if (mPublishedServiceClassLoaders.containsKey(publishedServiceName)) {
tcl = (TransportedClassLoader) mPublishedServiceClassLoaders.get(publishedServiceName);
} else {
ClassReply cr = (ClassReply) hostContext.getInvocationHandler().handleInvocation(new ClassRequest(publishedServiceName));
tcl = new TransportedClassLoader("ArmiGenerated" + publishedServiceName, cr.getClassBytes());
tcl.initialize();
mPublishedServiceClassLoaders.put(publishedServiceName, tcl);
}
BaseServedObject bo = (BaseServedObject) tcl.loadClass("ArmiGenerated" + publishedServiceName).newInstance();
System.out.println("CL=" + bo.getClass().getClassLoader().getClass().getName());
bo.armiSetInvocationHandler(hostContext.getInvocationHandler());
bo.armiSetPublishedObjectName(publishedServiceName);
return bo;
} catch (ClassNotFoundException cnfe) {
throw new ArmiConnectionException("Generated class not found during lookup : "
+ cnfe.getMessage());
} catch (InstantiationException ie) {
throw new ArmiConnectionException("Generated class not instantiable during lookup : "
+ ie.getMessage());
} catch (IllegalAccessException iae) {
throw new ArmiConnectionException("Illegal access to generated class during lookup : "
+ iae.getMessage());
}
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/TransportedClassLoader.java
Index: TransportedClassLoader.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/client/impl/TransportedClassLoader.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.client.impl;
public final class TransportedClassLoader extends ClassLoader {
private final transient byte[] mClassBytes;
private final transient String mClassName;
public TransportedClassLoader(String className, byte[] classBytes) {
mClassBytes = classBytes;
mClassName = className;
}
public void initialize() {
this.defineClass(mClassName, mClassBytes, 0, mClassBytes.length);
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/common/ClassReply.java
Index: ClassReply.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/common/ClassReply.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.common;
/**
* Class ClassReply
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class ClassReply extends ArmiReply {
private final byte[] mClassBytes;
/**
* Constructor ClassReply
*
*
* @param classBytes
*
*/
public ClassReply(byte[] classBytes) {
this.mClassBytes = classBytes;
}
/**
* Method getClassBytes
*
*
* @return
*
*/
public byte[] getClassBytes() {
return mClassBytes;
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/common/ClassRequest.java
Index: ClassRequest.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/common/ClassRequest.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.common;
/**
* Class ClassRequest
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class ClassRequest extends ArmiRequest {
private final String mPublishedObjectName;
/**
* Constructor ClassRequest
*
*
* @param publishedObjectName
*
*/
public ClassRequest(String publishedObjectName) {
mPublishedObjectName = publishedObjectName;
}
/**
* Method getPublishedObjectName
*
*
* @return
*
*/
public String getPublishedObjectName() {
return mPublishedObjectName;
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/common/RequestFailedReply.java
Index: RequestFailedReply.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/common/RequestFailedReply.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.common;
/**
* Class RequestFailedReply
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class RequestFailedReply extends ArmiReply {
private final String mFailureReason;
/**
* Constructor RequestFailedReply
*
*
* @param failureReason
*
*/
public RequestFailedReply(String failureReason) {
this.mFailureReason = failureReason;
}
/**
* Method getFailureReason
*
*
* @return
*
*/
public String getFailureReason() {
return mFailureReason;
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/generator/PrimarySourceGenerator.java
Index: PrimarySourceGenerator.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/generator/PrimarySourceGenerator.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.generator;
import org.apache.commons.armi.common.AbstractMethodHandler;
import org.apache.commons.armi.test.TestInterface;
import java.lang.reflect.Method;
import java.util.Vector;
import java.io.PrintWriter;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
/**
* Class PrimarySourceGenerator
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class PrimarySourceGenerator extends AbstractMethodHandler {
private String[] mInterfacesToExpose;
private String mGenDir;
private String mGenName;
private PrintWriter mClassSource;
/**
* Method setInterfacesToExpose
*
*
* @param interfacesToExpose
*
*/
public void setInterfacesToExpose(String[] interfacesToExpose) {
mInterfacesToExpose = interfacesToExpose;
}
/**
* Method setGenDir
*
*
* @param genDir
*
*/
public void setGenDir(String genDir) {
mGenDir = genDir;
}
/**
* Method setGenName
*
*
* @param genName
*
*/
public void setGenName(String genName) {
this.mGenName = genName;
}
/**
* Method generate
*
*
*/
public void generate() {
// methdos could be in more than one interface.
Vector methodsDone = new Vector();
try {
mClassSource = new PrintWriter(new FileOutputStream(mGenDir + "\\ArmiGenerated"
+ mGenName + ".java"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
mClassSource
.print("public final class ArmiGenerated" + mGenName
+ " extends org.apache.commons.armi.client.impl.BaseServedObject implements ");
generateInterfaceList();
mClassSource.println(" { ");
mClassSource.println(" public ArmiGenerated" + mGenName + "() {");
mClassSource.print(" super(new Class[] {");
generateInterfaceList2();
mClassSource.println("});");
mClassSource.println(" }");
for (int x = 0; x < mInterfacesToExpose.length; x++) {
Class clazz = null;
try {
clazz = Class.forName(mInterfacesToExpose[x]);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Method[] methods = clazz.getMethods();
for (int y = 0; y < methods.length; y++) {
Method method = methods[y];
String methodSignature = getMethodSignature(method);
if (!methodsDone.contains(methodSignature)) {
methodsDone.add(methodSignature);
String rClass = method.getReturnType().getName();
String mName = method.getName();
mClassSource.print(" public " + rClass + " " + mName + " (");
Class[] argTypes = method.getParameterTypes();
for (int i = 0; i < argTypes.length; i++) {
String cn = argTypes[i].getName();
generateParameter(cn, argTypes, i);
}
mClassSource.print(") ");
Class[] throwsTypes = method.getExceptionTypes();
for (int i = 0; i < throwsTypes.length; i++) {
generateThrows(i, throwsTypes);
}
mClassSource.println("{");
mClassSource.println(" Object[] args = new Object[" + argTypes.length
+ "];");
for (int i = 0; i < argTypes.length; i++) {
String cn = argTypes[i].getName();
generateAssignLine(cn, i);
}
mClassSource.println(" try {");
if (rClass.equals("void")) {
mClassSource.println(" armiProcessVoidRequest(\""
+ methodSignature.toString() + "\",args);");
} else {
mClassSource.println(" Object retVal = armiProcessObjectRequest(\""
+ methodSignature.toString() + "\",args);");
generateReturnLine(rClass);
}
mClassSource.println(" } catch (Throwable t) {");
throwsTypes = method.getExceptionTypes();
for (int i = 0; i < throwsTypes.length; i++) {
generateThrowHandler(i, throwsTypes);
}
mClassSource.println(" if (t instanceof RuntimeException) { ");
mClassSource.println(" throw (RuntimeException) t;");
mClassSource.println(" } else if (t instanceof Error) { ");
mClassSource.println(" throw (Error) t;");
mClassSource.println(" } else { ");
mClassSource.println(
" throw new org.apache.commons.armi.common.ArmiInvocationException(\"Should never get here\" + t.getMessage()); ");
mClassSource.println(" }");
mClassSource.println(" }");
mClassSource.println(" }");
}
}
}
mClassSource.print("}");
mClassSource.close();
}
private void generateThrowHandler(int i, Class[] throwsTypes) {
if (i == 0) {
mClassSource.println(" if (t instanceof " + throwsTypes[i].getName() + ") { ");
} else {
mClassSource.println(" } else if (t instanceof " + throwsTypes[i].getName()
+ ") { ");
}
mClassSource.println(" throw (" + throwsTypes[i].getName() + ") t;");
if (i + 1 == throwsTypes.length) {
mClassSource.print(" } else");
}
}
private void generateThrows(int i, Class[] throwsTypes) {
if (i == 0) {
mClassSource.print("throws ");
}
mClassSource.print(throwsTypes[i].getName());
if (i + 1 < throwsTypes.length) {
mClassSource.print(", ");
}
}
private void generateInterfaceList2() {
for (int x = 0; x < mInterfacesToExpose.length; x++) {
mClassSource.print(mInterfacesToExpose[x] + ".class");
if (x + 1 < mInterfacesToExpose.length) {
mClassSource.print(", ");
}
}
}
private void generateInterfaceList() {
for (int x = 0; x < mInterfacesToExpose.length; x++) {
mClassSource.print(mInterfacesToExpose[x]);
if (x + 1 < mInterfacesToExpose.length) {
mClassSource.print(", ");
}
}
}
private void generateParameter(String cn, Class[] argTypes, int i) {
if (cn.startsWith("L")) {
mClassSource.print(argTypes[i].getName());
} else if (cn.startsWith("[L")) {
mClassSource.print(argTypes[i].getName() + "[]");
} else if (cn.equals("[B")) {
mClassSource.print("byte[]");
} else if (cn.equals("[C")) {
mClassSource.print("char[]");
} else if (cn.equals("[D")) {
mClassSource.print("double[]");
} else if (cn.equals("[F")) {
mClassSource.print("float[]");
} else if (cn.equals("[I")) {
mClassSource.print("int[]");
} else if (cn.equals("[J")) {
mClassSource.print("long[]");
} else if (cn.equals("[S")) {
mClassSource.print("short[]");
} else if (cn.equals("[Z")) {
mClassSource.print("boolean[]");
} else {
mClassSource.print(cn);
}
mClassSource.print(" v" + i);
if (i + 1 < argTypes.length) {
mClassSource.print(", ");
}
}
private void generateAssignLine(String cn, int i) {
if (cn.equals("int")) {
mClassSource.println(" args[" + i + "] = new Integer(v" + i + ");");
} else if (cn.equals("short")) {
mClassSource.println(" args[" + i + "] = new Short(v" + i + ");");
} else if (cn.equals("float")) {
mClassSource.println(" args[" + i + "] = new Float(v" + i + ");");
} else if (cn.equals("double")) {
mClassSource.println(" args[" + i + "] = new Double(v" + i + ");");
} else if (cn.equals("long")) {
mClassSource.println(" args[" + i + "] = new Long(v" + i + ");");
} else if (cn.equals("char")) {
mClassSource.println(" args[" + i + "] = new Character(v" + i + ");");
} else if (cn.equals("boolean")) {
mClassSource.println(" args[" + i + "] = new Boolean(v" + i + ");");
} else if (cn.equals("byte")) {
mClassSource.println(" args[" + i + "] = new Byte(v" + i + ");");
} else {
mClassSource.println(" args[" + i + "] = v" + i + ";");
}
}
private void generateReturnLine(String rClass) {
if (rClass.equals("boolean")) {
mClassSource.println(" return ((Boolean) retVal).booleanValue();");
} else if (rClass.equals("integer")) {
mClassSource.println(" return ((Integer) retVal).intValue();");
} else if (rClass.equals("short")) {
mClassSource.println(" return ((Short) retVal).shortValue();");
} else if (rClass.equals("float")) {
mClassSource.println(" return ((Float) retVal).floatValue();");
} else if (rClass.equals("double")) {
mClassSource.println(" return ((Double) retVal).doubleValue();");
} else if (rClass.equals("long")) {
mClassSource.println(" return ((Long) retVal).longValue();");
} else if (rClass.equals("char")) {
mClassSource.println(" return ((Character) retVal).charValue();");
} else if (rClass.equals("byte")) {
mClassSource.println(" return ((Byte) retVal).byteValue();");
} else {
mClassSource.println(" return (" + rClass + ") retVal;");
}
}
/**
* Method main
*
*
* @param args
*
*/
public static void main(String[] args) {
PrimarySourceGenerator gen = new PrimarySourceGenerator();
gen.setGenName("Hello");
gen.setGenDir("C:\\Apache-CVS\\jakarta-commons\\armi\\build\\genjava");
gen.setInterfacesToExpose(new String[]{ TestInterface.class.getName() });
gen.generate();
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/generator/SecondarySourceGenerator.java
Index: SecondarySourceGenerator.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/generator/SecondarySourceGenerator.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.generator;
import org.apache.commons.armi.common.AbstractMethodHandler;
import java.io.File;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* Class SecondarySourceGenerator
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
* @version $Revision: 1.1 $
*/
public class SecondarySourceGenerator extends AbstractMethodHandler {
private File mFile;
private String mGenDir;
private String mGenName;
private PrintWriter mClassSource;
/**
* Method setEncapsulated
*
*
* @param file
*
*/
public void setEncapsulated(File file) {
mFile = file;
}
/**
* Method setGenDir
*
*
* @param genDir
*
*/
public void setGenDir(String genDir) {
mGenDir = genDir;
}
/**
* Method setGenName
*
*
* @param genName
*
*/
public void setGenName(String genName) {
this.mGenName = genName;
}
/**
* Method generate
*
*
*/
public void generate() {
byte[] clazzbytes = null;
try {
mClassSource = new PrintWriter(new FileOutputStream(mGenDir + "\\ArmiGenerated"
+ mGenName + ".java"));
FileInputStream fis = new FileInputStream(mFile);
int size = fis.available();
System.out.println("Size=" + size);
clazzbytes = new byte[size];
fis.read(clazzbytes);
fis.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
mClassSource
.println("public final class ArmiGenerated" + mGenName
+ " extends org.apache.commons.armi.server.impl.BaseMobileClass { ");
mClassSource.println(" public byte[] getClassBytes() { ");
mClassSource.println(" return new byte[] { ");
mClassSource.print(" ");
for (int x = 0; x < clazzbytes.length; x++) {
mClassSource.print("(byte) "+byteToHexString(clazzbytes[x]));
if (x+1 < clazzbytes.length) {
mClassSource.print(",");
}
if (x % 5 == 1) {
mClassSource.print("\n ");
}
}
mClassSource.println("");
mClassSource.println(" };");
mClassSource.println(" }");
mClassSource.print("}");
mClassSource.close();
}
public String byteToHexString(byte b) {
int i = (int) b;
String st = Integer.toHexString( i < 0 ? i + 256 : i ).toUpperCase();
if(st.length() == 1) {
return "0x0" + st;
} else {
return "0x" + st;
}
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/generator/ant/ArmiClassInternTask.java
Index: ArmiClassInternTask.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/generator/ant/ArmiClassInternTask.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.generator.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
import org.apache.commons.armi.generator.SecondarySourceGenerator;
import java.io.File;
public class ArmiClassInternTask extends Task {
private File mGeneratedClass;
private String mGenDir;
private String mGenName;
public ArmiClassInternTask() {
}
public void setEncapsulated(File generatedClass) {
mGeneratedClass = generatedClass;
}
public void setGendir(String genDir) {
mGenDir = genDir;
}
public void setGenname(String genName) {
this.mGenName = genName;
}
public void execute() throws BuildException {
if (mGeneratedClass == null) {
throw new BuildException("Specify at the class that we are interning");
}
if (mGenDir == null) {
throw new BuildException("Specify the directory to generate Java source in");
}
if (mGenName == null) {
throw new BuildException("Specify the name to use for lookup");
}
SecondarySourceGenerator sg = new SecondarySourceGenerator();
sg.setGenDir(mGenDir);
sg.setGenName(mGenName);
sg.setEncapsulated(mGeneratedClass);
sg.generate();
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/generator/ant/ArmiInterfaceTask.java
Index: ArmiInterfaceTask.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/generator/ant/ArmiInterfaceTask.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.generator.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.util.FileUtils;
import org.apache.commons.armi.generator.PrimarySourceGenerator;
import java.util.StringTokenizer;
import java.util.Vector;
public class ArmiInterfaceTask extends Task {
private String[] mInterfacesToExpose;
private String mGenDir;
private String mGenName;
public ArmiInterfaceTask() {
}
public void setInterfaces(String interfacesToExpose) {
StringTokenizer st = new StringTokenizer(interfacesToExpose, ",");
Vector strings = new Vector();
while (st.hasMoreTokens()) {
strings.add(st.nextToken().trim());
}
mInterfacesToExpose = new String[strings.size()];
strings.copyInto(mInterfacesToExpose);
}
public void setGendir(String genDir) {
mGenDir = genDir;
}
public void setGenname(String genName) {
this.mGenName = genName;
}
public void execute() throws BuildException {
if (mInterfacesToExpose == null) {
throw new BuildException("Specify at least one interface to expose");
}
if (mGenDir == null) {
throw new BuildException("Specify the directory to generate Java source in");
}
if (mGenName == null) {
throw new BuildException("Specify the name to use for lookup");
}
PrimarySourceGenerator sg = new PrimarySourceGenerator();
sg.setGenDir(mGenDir);
sg.setGenName(mGenName);
sg.setInterfacesToExpose(mInterfacesToExpose);
sg.generate();
}
}
1.2 +28 -7 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/AbstractServer.java
Index: AbstractServer.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/AbstractServer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractServer.java 28 Dec 2001 18:08:38 -0000 1.1
+++ AbstractServer.java 30 Dec 2001 00:42:10 -0000 1.2
@@ -1,8 +1,8 @@
/*
- * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/AbstractServer.java,v 1.1 2001/12/28 18:08:38 hammant Exp $
- * $Revision: 1.1 $
- * $Date: 2001/12/28 18:08:38 $
+ * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/AbstractServer.java,v 1.2 2001/12/30 00:42:10 hammant Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
@@ -70,6 +70,11 @@
import org.apache.commons.armi.common.AbstractMethodHandler;
import org.apache.commons.armi.common.MethodRequest;
import org.apache.commons.armi.common.ExceptionReply;
+import org.apache.commons.armi.common.ClassRequest;
+import org.apache.commons.armi.common.ArmiConnectionException;
+import org.apache.commons.armi.common.ClassReply;
+import org.apache.commons.armi.common.RequestFailedReply;
+import org.apache.commons.armi.client.impl.BaseServedObject;
import java.lang.reflect.Method;
@@ -82,7 +87,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class AbstractServer extends AbstractMethodHandler implements ArmiServer {
@@ -152,10 +157,26 @@
MethodRequest mr = (MethodRequest) request;
String as = mr.getPublishedObjectName();
ArmiInvocationHandler ih = (ArmiInvocationHandler) publishedObjects.get(as);
-
return ih.handleInvocation(mr);
+ } else if (request instanceof ClassRequest) {
+ try {
+ ClassRequest cr = (ClassRequest) request;
+ String publishedServiceName = cr.getPublishedObjectName();
+ Class clazz = Class.forName("ArmiGenerated" + publishedServiceName);
+ BaseMobileClass bmc = (BaseMobileClass) clazz.newInstance();
+ return new ClassReply(bmc.getClassBytes());
+ } catch (ClassNotFoundException cnfe) {
+ return new RequestFailedReply("Generated class not found during lookup : "
+ + cnfe.getMessage());
+ } catch (InstantiationException ie) {
+ return new RequestFailedReply("Generated class not instantiable during lookup : "
+ + ie.getMessage());
+ } catch (IllegalAccessException iae) {
+ return new RequestFailedReply("Illegal access to generated class during lookup : "
+ + iae.getMessage());
+ }
+ } else {
+ return new RequestFailedReply("Unknown request :" + request.getClass().getName());
}
-
- return null;
}
}
1.1 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/BaseMobileClass.java
Index: BaseMobileClass.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/server/impl/BaseMobileClass.java,v 1.1 2001/12/30 00:42:10 hammant Exp $
* $Revision: 1.1 $
* $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.armi.server.impl;
public abstract class BaseMobileClass {
public abstract byte[] getClassBytes();
}
1.2 +10 -5 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/DirectTest.java
Index: DirectTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/DirectTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DirectTest.java 28 Dec 2001 18:08:39 -0000 1.1
+++ DirectTest.java 30 Dec 2001 00:42:10 -0000 1.2
@@ -1,8 +1,8 @@
/*
- * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/DirectTest.java,v 1.1 2001/12/28 18:08:39 hammant Exp $
- * $Revision: 1.1 $
- * $Date: 2001/12/28 18:08:39 $
+ * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/DirectTest.java,v 1.2 2001/12/30 00:42:10 hammant Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
@@ -70,6 +70,7 @@
import org.apache.commons.armi.client.ArmiHostContext;
import org.apache.commons.armi.client.ArmiFactory;
import org.apache.commons.armi.client.impl.direct.DirectArmiHostContext;
+import org.apache.commons.armi.client.impl.ServerClassArmiFactory;
/**
@@ -77,7 +78,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class DirectTest {
@@ -92,6 +93,10 @@
*/
public static void main(String[] args) throws Exception {
+ if (args[0].equals("S")) {
+ ArmiFactory.setDefaultArmiFactory(new ServerClassArmiFactory());
+ }
+
DirectServer ds = new DirectServer();
TestInterfaceImpl ti = new TestInterfaceImpl();
@@ -108,7 +113,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
static class DirectTestClient implements Runnable {
1.2 +10 -5 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/PipeTest.java
Index: PipeTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/PipeTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PipeTest.java 28 Dec 2001 18:08:39 -0000 1.1
+++ PipeTest.java 30 Dec 2001 00:42:10 -0000 1.2
@@ -1,8 +1,8 @@
/*
- * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/PipeTest.java,v 1.1 2001/12/28 18:08:39 hammant Exp $
- * $Revision: 1.1 $
- * $Date: 2001/12/28 18:08:39 $
+ * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/PipeTest.java,v 1.2 2001/12/30 00:42:10 hammant Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
@@ -69,6 +69,7 @@
import org.apache.commons.armi.client.ArmiFactory;
import org.apache.commons.armi.common.ArmiConnectionException;
import org.apache.commons.armi.client.impl.piped.PipedArmiHostContext;
+import org.apache.commons.armi.client.impl.ServerClassArmiFactory;
import java.io.IOException;
@@ -78,7 +79,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class PipeTest {
@@ -93,6 +94,10 @@
*/
public static void main(String[] args) throws Exception {
+ if (args[0].equals("S")) {
+ ArmiFactory.setDefaultArmiFactory(new ServerClassArmiFactory());
+ }
+
PipedServer ps = new PipedServer();
TestInterfaceImpl ti = new TestInterfaceImpl();
@@ -109,7 +114,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
static class PipedTestClient implements Runnable {
1.2 +9 -4 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/RmiClientTest.java
Index: RmiClientTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/RmiClientTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RmiClientTest.java 28 Dec 2001 18:08:39 -0000 1.1
+++ RmiClientTest.java 30 Dec 2001 00:42:10 -0000 1.2
@@ -1,8 +1,8 @@
/*
- * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/RmiClientTest.java,v 1.1 2001/12/28 18:08:39 hammant Exp $
- * $Revision: 1.1 $
- * $Date: 2001/12/28 18:08:39 $
+ * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/RmiClientTest.java,v 1.2 2001/12/30 00:42:10 hammant Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
@@ -66,6 +66,7 @@
import org.apache.commons.armi.client.ArmiHostContext;
import org.apache.commons.armi.client.ArmiFactory;
import org.apache.commons.armi.client.impl.rmi.RmiArmiHostContext;
+import org.apache.commons.armi.client.impl.ServerClassArmiFactory;
/**
@@ -73,7 +74,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class RmiClientTest {
@@ -87,6 +88,10 @@
*
*/
public static void main(String[] args) throws Exception {
+
+ if (args[0].equals("S")) {
+ ArmiFactory.setDefaultArmiFactory(new ServerClassArmiFactory());
+ }
ArmiHostContext arhc = new RmiArmiHostContext("127.0.0.1", 4321);
TestInterface ti = (TestInterface) ArmiFactory.getDefaultArmiFactory().lookup(arhc,
1.2 +9 -4 jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/SocketClientTest.java
Index: SocketClientTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/SocketClientTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SocketClientTest.java 28 Dec 2001 18:08:39 -0000 1.1
+++ SocketClientTest.java 30 Dec 2001 00:42:10 -0000 1.2
@@ -1,8 +1,8 @@
/*
- * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/SocketClientTest.java,v 1.1 2001/12/28 18:08:39 hammant Exp $
- * $Revision: 1.1 $
- * $Date: 2001/12/28 18:08:39 $
+ * $Header: /home/cvs/jakarta-commons-sandbox/armi/src/java/org/apache/commons/armi/test/SocketClientTest.java,v 1.2 2001/12/30 00:42:10 hammant Exp $
+ * $Revision: 1.2 $
+ * $Date: 2001/12/30 00:42:10 $
*
* ====================================================================
*
@@ -67,6 +67,7 @@
import org.apache.commons.armi.client.ArmiFactory;
import org.apache.commons.armi.common.ArmiConnectionException;
import org.apache.commons.armi.client.impl.socket.PlainSocketArmiHostContext;
+import org.apache.commons.armi.client.impl.ServerClassArmiFactory;
import java.io.IOException;
@@ -76,7 +77,7 @@
*
*
* @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class SocketClientTest {
@@ -90,6 +91,10 @@
*
*/
public static void main(String[] args) throws Exception {
+
+ if (args[0].equals("S")) {
+ ArmiFactory.setDefaultArmiFactory(new ServerClassArmiFactory());
+ }
ArmiHostContext arhc = new PlainSocketArmiHostContext("127.0.0.1", 1234);
TestInterface ti = (TestInterface) ArmiFactory.getDefaultArmiFactory().lookup(arhc,
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>