hammant 02/01/25 08:40:14
Modified: altrmi PROPOSAL build.xml tests.xml
altrmi/src/java/org/apache/commons/altrmi/common
AbstractMethodHandler.java
altrmi/src/java/org/apache/commons/altrmi/generator
PrimarySourceGenerator.java
altrmi/src/java/org/apache/commons/altrmi/generator/ant
AltrmiInterfaceTask.java
altrmi/src/java/org/apache/commons/altrmi/server
AltrmiPublisher.java AltrmiServer.java
altrmi/src/java/org/apache/commons/altrmi/server/impl
AbstractServer.java
altrmi/src/java/org/apache/commons/altrmi/test
DirectTest.java PipeTest.java RmiServerTest.java
SocketServerTest.java
Added: altrmi/src/java/org/apache/commons/altrmi/javacompiler
JavaCompiler.java SunJavaCompiler.java
altrmi/src/java/org/apache/commons/altrmi/server
AltrmiProxyGenerator.java
Removed: altrmi/src/java/org/apache/commons/altrmi/generator
SecondarySourceGenerator.java
altrmi/src/java/org/apache/commons/altrmi/generator/ant
AltrmiClassInternTask.java
altrmi/src/java/org/apache/commons/altrmi/server/impl/classretrievers
BaseMobileClass.java BaseMobileClassRetriever.java
Log:
inline compilation of proxys now possible
Revision Changes Path
1.11 +8 -6 jakarta-commons-sandbox/altrmi/PROPOSAL
Index: PROPOSAL
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/PROPOSAL,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- PROPOSAL 21 Jan 2002 21:19:49 -0000 1.10
+++ PROPOSAL 25 Jan 2002 16:40:13 -0000 1.11
@@ -9,13 +9,15 @@
1) Any interface publishing
- - no forcing of extension of java.rmi.Remote
- - no forced declarations of "throws RemoteException"
+ - Any object via the interfaces it publishes can be published remotely.
+ - No transport lock-in :
+ - No forcing of extension of java.rmi.Remote
+ - No forced declarations of "throws java.rmi.RemoteException"
- * These two features are part of the reason why Graham Glass's 'Glue'
- product is so successful. His API goes several stages futher in that
- it pubishes APIs via SOAP so that any language in any location can
- use Glue published Java services.
+ * These two features are part of the reason why Graham Glass's 'Glue'
+ product is so successful. His API goes several stages futher in that
+ it pubishes APIs via SOAP so that any language in any location can
+ use Glue published Java services.
2) Multiple transports
1.3 +10 -5 jakarta-commons-sandbox/altrmi/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/build.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- build.xml 13 Jan 2002 19:25:20 -0000 1.2
+++ build.xml 25 Jan 2002 16:40:13 -0000 1.3
@@ -3,7 +3,7 @@
<!--
"Alternative (to) RMI" component of the Jakarta Commons Subproject
- $Id: build.xml,v 1.2 2002/01/13 19:25:20 hammant Exp $
+ $Id: build.xml,v 1.3 2002/01/25 16:40:13 hammant Exp $
-->
@@ -140,10 +140,14 @@
<classpath refid="compile.classpath"/>
</javac>
+ <!--
includes="org/apache/commons/altrmi/server/impl/rmi/RmiAltrmiInovcationAdapter.class">
-->
+
+ <echo>rmic?</echo>
<rmic base="${build.home}/classes"
-
includes="org/apache/commons/altrmi/server/impl/rmi/RmiAltrmiInovcationAdapter.class">
+
includes="org/apache/commons/altrmi/common/RmiAltrmiInovcationHandler.class">
<classpath refid="compile.classpath" />
- </rmic>
+ </rmic>
+ <echo>rmic!</echo>
</target>
@@ -216,8 +220,9 @@
basedir="${build.home}/classes"
manifest="src/conf/MANIFEST-generator.MF">
<include name="org/apache/commons/altrmi/generator/**"/>
- </jar>
-
+ <include name="org/apache/commons/altrmi/compiler/**"/>
+ </jar>
+
</target>
</project>
1.2 +16 -9 jakarta-commons-sandbox/altrmi/tests.xml
Index: tests.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/altrmi/tests.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- tests.xml 21 Jan 2002 15:38:20 -0000 1.1
+++ tests.xml 25 Jan 2002 16:40:13 -0000 1.2
@@ -3,7 +3,7 @@
<!--
"Alt (to) RMI" component of the Jakarta Commons Subproject
- $Id: tests.xml,v 1.1 2002/01/21 15:38:20 hammant Exp $
+ $Id: tests.xml,v 1.2 2002/01/25 16:40:13 hammant Exp $
-->
@@ -61,10 +61,6 @@
<classpath refid="compile.classpath" />
</taskdef>
- <taskdef name="altrmiclassintern"
classname="org.apache.commons.altrmi.generator.ant.AltrmiClassInternTask">
- <classpath refid="compile.classpath" />
- </taskdef>
-
<!-- ========== Executable Targets ======================================== -->
@@ -91,10 +87,16 @@
<target name="generate" depends="prepare">
- <altrmiinterfaces genname="Hello" gendir="${build.home}/genjava"
+ <altrmiinterfaces genname="Hello" srcgendir="${build.home}/genjava"
+ classgendir="${build.home}/classes2"
classesorinterfaces="org.apache.commons.altrmi.test.TestInterface"
- additionalfacades="org.apache.commons.altrmi.test.TestInterface2"/>
+ additionalfacades="org.apache.commons.altrmi.test.TestInterface2">
+ <classpath>
+ <pathelement location="${build.home}/classes"/>
+ </classpath>
+ </altrmiinterfaces>
+ <!--
<javac srcdir="${build.home}/genjava"
destdir="${build.home}/classes2"
debug="${compile.debug}"
@@ -102,6 +104,8 @@
optimize="${compile.optimize}">
<classpath refid="compile.classpath"/>
</javac>
+
+
<altrmiclassintern gendir="${build.home}/genjava2"
sourceclassdir="${build.home}/classes2/"
@@ -114,7 +118,8 @@
optimize="${compile.optimize}">
<classpath refid="compile.classpath"/>
</javac>
-
+
+ -->
</target>
@@ -217,13 +222,15 @@
<java classname="org.apache.commons.altrmi.test.SocketServerTest" fork="true">
<classpath refid="testB1.classpath"/>
<arg value="S"/>
+ <arg value="ObjectStream"/>
</java>
</target>
- <target name="clientb-client" depends="generate">
+ <target name="socketb-client" depends="generate">
<java classname="org.apache.commons.altrmi.test.SocketClientTest" fork="true">
<classpath refid="testB2.classpath"/>
<arg value="S"/>
+ <arg value="ObjectStream"/>
</java>
</target>
1.3 +2 -11
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/AbstractMethodHandler.java
Index: AbstractMethodHandler.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/common/AbstractMethodHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractMethodHandler.java 18 Jan 2002 11:03:20 -0000 1.2
+++ AbstractMethodHandler.java 25 Jan 2002 16:40:13 -0000 1.3
@@ -20,7 +20,7 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class AbstractMethodHandler {
@@ -47,16 +47,7 @@
protected String encodeClassName(String className) {
- StringBuffer sb = new StringBuffer();
+ return className.replace('.','$');
- for (int i = 0; i < className.length(); i++) {
- char ch = className.charAt(i);
-
- if (Character.isLetter(ch) | Character.isDigit(ch)) {
- sb.append(ch);
- }
- }
-
- return sb.toString();
}
}
1.7 +53 -14
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/generator/PrimarySourceGenerator.java
Index: PrimarySourceGenerator.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/generator/PrimarySourceGenerator.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- PrimarySourceGenerator.java 16 Jan 2002 11:32:20 -0000 1.6
+++ PrimarySourceGenerator.java 25 Jan 2002 16:40:13 -0000 1.7
@@ -12,6 +12,7 @@
import org.apache.commons.altrmi.common.AbstractMethodHandler;
import org.apache.commons.altrmi.test.TestInterface;
+import org.apache.commons.altrmi.javacompiler.JavaCompiler;
import java.lang.reflect.Method;
@@ -29,13 +30,15 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
*/
public class PrimarySourceGenerator extends AbstractMethodHandler {
private String[] mClassesOrInterfacesToExpose;
private String[] mAdditionalFacades;
- private String mGenDir;
+ protected String mSrcGenDir;
+ protected String mClassGenDir;
+ protected String mClasspath;
private String mGenName;
private PrintWriter mClassSource;
@@ -49,6 +52,13 @@
public void setClassOrInterfacesToExpose(String[] classesOrInterfacesToExpose) {
mClassesOrInterfacesToExpose = classesOrInterfacesToExpose;
}
+ public void setClassOrInterfacesToExpose(Class[] classesOrInterfacesToExpose) {
+ mClassesOrInterfacesToExpose = new
String[classesOrInterfacesToExpose.length];
+ for (int i = 0; i < classesOrInterfacesToExpose.length; i++) {
+ Class facade = classesOrInterfacesToExpose[i];
+ mClassesOrInterfacesToExpose[i] = facade.getName();
+ }
+ }
/**
* Method setClassOrInterfacesToExpose
@@ -61,16 +71,24 @@
public void setAdditionalfacades(String[] additionalFacades) {
mAdditionalFacades = additionalFacades;
}
+ public void setAdditionalfacades(Class[] additionalFacades) {
+ mAdditionalFacades = new String[additionalFacades.length];
+ for (int i = 0; i < additionalFacades.length; i++) {
+ Class facade = additionalFacades[i];
+ mAdditionalFacades[i] = facade.getName();
+ }
+ }
- /**
- * Method setGenDir
- *
- *
- * @param genDir
- *
- */
- public void setGenDir(String genDir) {
- mGenDir = genDir;
+ public void setSrcGenDir(String srcGenDir) {
+ mSrcGenDir = srcGenDir;
+ }
+
+ public void setClasspath(String classpath) {
+ mClasspath = classpath;
+ }
+
+ public void setClassGenDir(String classGenDir) {
+ mClassGenDir = classGenDir;
}
/**
@@ -91,7 +109,7 @@
* @param cL
*
*/
- public void generate(ClassLoader cL) throws SourceGenerationException {
+ public void generateSrc(ClassLoader cL) throws SourceGenerationException {
// The lookupable service class source.
makeSource(cL, "Main", mClassesOrInterfacesToExpose);
@@ -107,6 +125,27 @@
}
}
+ public void generateClass(ClassLoader cL) {
+ JavaCompiler jc = JavaCompiler.getDefaultCompiler();
+ jc.setOutputDir(mClassGenDir);
+ //jc.setCompilerPath();
+ jc.addClassPath(mClassGenDir);
+ jc.addClassPath(mClasspath);
+ jc.addDefaultClassPath();
+ jc.doCompile(mSrcGenDir + File.separator + "AltrmiGenerated" + mGenName +
"_Main.java");
+ jc.doCompile(mSrcGenDir + File.separator + "AltrmiGenerated2" + mGenName +
"_Main.java");
+ System.out.println(jc.getCompilerMessage());
+
+ if (mAdditionalFacades != null) {
+ for (int i = 0; i < mAdditionalFacades.length; i++) {
+ String classname = encodeClassName(mAdditionalFacades[i]);
+ jc.doCompile(mSrcGenDir + File.separator + "AltrmiGenerated" +
mGenName + "_" + classname + ".java");
+ jc.doCompile(mSrcGenDir + File.separator + "AltrmiGenerated2" +
mGenName + "_" + classname + ".java");
+ }
+ }
+
+ }
+
/**
* Method makeSource
*
@@ -124,7 +163,7 @@
// methdos could be in more than one interface.
Vector methodsDone = new Vector();
- String filename = mGenDir + File.separator + "AltrmiGenerated" + mGenName +
"_" + name + ".java";
+ String filename = mSrcGenDir + File.separator + "AltrmiGenerated" +
mGenName + "_" + name + ".java";
try {
mClassSource = new PrintWriter(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
@@ -264,7 +303,7 @@
public void makeSource2(ClassLoader cL, String name, String[]
classOrInterfacesToExpose)
throws SourceGenerationException {
- String filename = mGenDir + File.separator + "AltrmiGenerated2" + mGenName
+ "_" + name + ".java";
+ String filename = mSrcGenDir + File.separator + "AltrmiGenerated2" +
mGenName + "_" + name + ".java";
try {
PrintWriter class2Source = new PrintWriter(new
FileOutputStream(filename));
1.4 +24 -9
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/generator/ant/AltrmiInterfaceTask.java
Index: AltrmiInterfaceTask.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/generator/ant/AltrmiInterfaceTask.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AltrmiInterfaceTask.java 13 Jan 2002 00:13:53 -0000 1.3
+++ AltrmiInterfaceTask.java 25 Jan 2002 16:40:13 -0000 1.4
@@ -18,12 +18,14 @@
import java.util.StringTokenizer;
import java.util.Vector;
+import java.io.File;
public class AltrmiInterfaceTask extends Task {
protected String[] mClassOrInterfacesToExpose;
protected String[] mAdditionalFacades;
- protected String mGenDir;
+ protected String mSrcGenDir;
+ protected String mClassGenDir;
protected String mGenName;
protected Path classpath;
@@ -50,8 +52,15 @@
strings.copyInto(mAdditionalFacades);
}
- public void setGendir(String genDir) {
- mGenDir = genDir;
+ public void setSrcgendir(String srcGenDir) {
+ mSrcGenDir = srcGenDir.replace('/',File.separatorChar);
+ mSrcGenDir = mSrcGenDir.replace('\\',File.separatorChar);
+
+ }
+
+ public void setClassgendir(String classGenDir) {
+ mClassGenDir = classGenDir.replace('/',File.separatorChar);
+ mClassGenDir = mClassGenDir.replace('\\',File.separatorChar);
}
public void setGenname(String genName) {
@@ -81,18 +90,23 @@
if (mClassOrInterfacesToExpose == null) {
throw new BuildException("Specify at least one interface to expose");
}
- if (mGenDir == null) {
+ if (mSrcGenDir == null) {
throw new BuildException("Specify the directory to generate Java source
in");
}
+ if (mClassGenDir == null) {
+ throw new BuildException("Specify the directory to generate Java
classes 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.setClassOrInterfacesToExpose(mClassOrInterfacesToExpose);
- sg.setAdditionalfacades(mAdditionalFacades);
try {
+ sg.setSrcGenDir(new File(mSrcGenDir).getAbsolutePath());
+ sg.setClassGenDir(new File(mClassGenDir).getAbsolutePath());
+ sg.setGenName(mGenName);
+ sg.setClasspath(classpath.toString());
+ sg.setClassOrInterfacesToExpose(mClassOrInterfacesToExpose);
+ sg.setAdditionalfacades(mAdditionalFacades);
ClassLoader cL = null;
if (classpath != null) {
cL = new AntClassLoader(project, classpath);
@@ -100,7 +114,8 @@
cL = this.getClass().getClassLoader();
}
- sg.generate(cL);
+ sg.generateSrc(cL);
+ sg.generateClass(cL);
} catch (SourceGenerationException sge) {
throw new BuildException(sge.getMessage());
}
1.1
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/javacompiler/JavaCompiler.java
Index: JavaCompiler.java
===================================================================
/*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 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", "Tomcat", 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 [EMAIL PROTECTED]
*
* 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.altrmi.javacompiler;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.File;
import java.net.URL;
/**
* If you want to plugin your own Java compiler, you probably want to
* write a class that implements this interface.
*
* @author Anil K. Vijendran
* @author Sam Ruby
* @author Costin Manolache
*/
public abstract class JavaCompiler {
static String CPSEP = System.getProperty("path.separator");
protected String classpath;
protected String compilerPath = "jikes";
protected String outdir;
protected ByteArrayOutputStream out;
protected boolean classDebugInfo = false;
protected JavaCompiler() {
reset();
}
/**
* Specify where the compiler can be found
*/
public void setCompilerPath(String compilerPath) {
if (compilerPath != null) {
this.compilerPath = compilerPath;
}
}
/**
* Set the class path for the compiler
*/
public void setClasspath(String classpath) {
this.classpath = classpath;
}
/**
* Method addClassPath
*
*
* @param path
*
*/
public void addClassPath(String path) {
// XXX use StringBuffer
classpath = classpath + CPSEP + path;
}
/**
* Method addDefaultClassPath
*
*
*/
public void addDefaultClassPath() {
addClassPath(System.getProperty("java.class.path"));
}
/**
* Set the output directory
*/
public void setOutputDir(String outdir) {
this.outdir = outdir;
}
// Removed - we manage ourself the buffer and return it as string.
// It can be added later if someone really need that.
// /**
// * Set where you want the compiler output (messages) to go
// */
// public void setMsgOutput(OutputStream out) {
// this.out = out;
// }
/**
* Method getCompilerMessage
*
*
* @return
*
*/
public String getCompilerMessage() {
return out.toString();
}
/**
* Set if you want debugging information in the class file
*/
public void setClassDebugInfo(boolean classDebugInfo) {
this.classDebugInfo = classDebugInfo;
}
/**
* Method recycle
*
*
*/
public void recycle() {}
/** Reset all compilation state, but keep the settings.
* The compiler can be used again.
*/
public void reset() {
out = new ByteArrayOutputStream(256);
}
// -------------------- Compile method --------------------
/** The main method - compile the source, using the previous settings.
*/
public boolean compile(String source) {
try {
File f = new File(source);
source = f.getCanonicalPath();
} catch (IOException ex) {
ex.printStackTrace();
}
return doCompile(source);
}
/**
* Execute the compiler
* @param source - file name of the source to be compiled
*/
public abstract boolean doCompile(String source);
// -------------------- Utils --------------------
/**
* Method getCompilerPluginClass
*
*
* @param s
*
* @return
*
*/
public static Class getCompilerPluginClass(String s) {
try {
Class c = Class.forName(s);
return c;
} catch (Exception ex) {
return null;
}
}
/**
* Method getDefaultCompiler
*
*
* @return
*
*/
public static JavaCompiler getDefaultCompiler() {
return new SunJavaCompiler();
}
//-------------------- Class path utils --------------------
/** Create a classpath string from a URL[] ( used in URLClassLoader )
*/
public static String extractClassPath(URL urls[]) {
String separator = System.getProperty("path.separator", ":");
String cpath = "";
for (int i = 0; i < urls.length; i++) {
URL cp = urls[i];
if (cp == null) {
continue;
}
File f = new File(cp.getFile());
if (cpath.length() > 0) {
cpath += separator;
}
cpath += f;
}
return cpath;
}
}
1.1
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/javacompiler/SunJavaCompiler.java
Index: SunJavaCompiler.java
===================================================================
/*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999 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", "Tomcat", 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 [EMAIL PROTECTED]
*
* 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.altrmi.javacompiler;
import java.io.OutputStream;
import sun.tools.javac.Main;
/**
* The default compiler. This is the javac present in JDK 1.1.x and
* JDK 1.2.
*
* At some point we need to make sure there is a class like this for
* JDK 1.3, and other javac-like animals that people want to use.
*
* @author Anil K. Vijendran
*/
public class SunJavaCompiler extends JavaCompiler {
/**
* Method doCompile
*
*
* @param source
*
* @return
*
*/
public boolean doCompile(String source) {
Main compiler = new Main(out, "jsp->javac");
String[] args;
if (classDebugInfo) {
args = new String[] {
"-g", "-classpath", classpath, "-d", outdir, source
};
} else {
args = new String[] {
"-classpath", classpath, "-d", outdir, source
};
}
return compiler.compile(args);
}
}
1.3 +1 -6
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/AltrmiPublisher.java
Index: AltrmiPublisher.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/AltrmiPublisher.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AltrmiPublisher.java 21 Jan 2002 15:38:21 -0000 1.2
+++ AltrmiPublisher.java 25 Jan 2002 16:40:13 -0000 1.3
@@ -8,17 +8,12 @@
package org.apache.commons.altrmi.server;
-
-import org.apache.commons.altrmi.common.AltrmiReply;
-import org.apache.commons.altrmi.common.AltrmiRequest;
-
-
/**
* Interface AltrmiServer
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version * $Revision: 1.2 $
+ * @version * $Revision: 1.3 $
*/
public interface AltrmiPublisher {
1.3 +2 -2
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/AltrmiServer.java
Index: AltrmiServer.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/AltrmiServer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AltrmiServer.java 14 Jan 2002 23:03:30 -0000 1.2
+++ AltrmiServer.java 25 Jan 2002 16:40:13 -0000 1.3
@@ -19,9 +19,9 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version * $Revision: 1.2 $
+ * @version * $Revision: 1.3 $
*/
-public interface AltrmiServer extends AltrmiPublisher {
+public interface AltrmiServer extends AltrmiPublisher, AltrmiProxyGenerator {
/**
* Method setClassRetriever
1.1
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/AltrmiProxyGenerator.java
Index: AltrmiProxyGenerator.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.commons.altrmi.server;
/**
* Interface AltrmiProxyGenerator
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
* @version * $Revision: 1.1 $
*/
public interface AltrmiProxyGenerator {
/**
* Method generate
*
*
* @param impl
* @param asName
* @param classOrInterfaceToExpose
*
*/
void generate(Object impl, String asName, Class classOrInterfaceToExpose) throws
PublicationException;
/**
* Method generate
*
*
* @param impl
* @param asName
* @param classOrInterfaceToExpose
* @param additionalFacade
*
*/
void generate(Object impl, String asName, Class classOrInterfaceToExpose, Class
additionalFacade) throws PublicationException;
/**
* Method generate
*
*
* @param impl
* @param asName
* @param classOrInterfaceToExpose
* @param additionalFacades
*
*/
void generate(Object impl, String asName, Class classOrInterfaceToExpose,
Class[] additionalFacades) throws PublicationException;
/**
* Method generate
*
*
* @param impl
* @param asName
* @param classesOrInterfacesToExpose
*
*/
void generate(Object impl, String asName, Class[] classesOrInterfacesToExpose)
throws PublicationException;
/**
* Method generate
*
*
* @param impl
* @param asName
* @param classesOrInterfacesToExpose
* @param additionalFacades
*
*/
void generate(Object impl, String asName, Class[] classesOrInterfacesToExpose,
Class[] additionalFacades) throws PublicationException;
}
1.11 +102 -2
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/AbstractServer.java
Index: AbstractServer.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/server/impl/AbstractServer.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- AbstractServer.java 21 Jan 2002 20:10:34 -0000 1.10
+++ AbstractServer.java 25 Jan 2002 16:40:14 -0000 1.11
@@ -39,14 +39,17 @@
import org.apache.commons.altrmi.server.ClassRetriever;
import org.apache.commons.altrmi.server.ServerInvocationHandler;
import org.apache.commons.altrmi.server.AltrmiAuthenticator;
-import
org.apache.commons.altrmi.server.impl.classretrievers.BaseMobileClassRetriever;
import org.apache.commons.altrmi.server.impl.classretrievers.NoClassRetriever;
+import org.apache.commons.altrmi.generator.PrimarySourceGenerator;
+import org.apache.commons.altrmi.generator.SourceGenerationException;
+import org.apache.tools.ant.AntClassLoader;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Vector;
import java.util.Iterator;
+import java.io.File;
/**
@@ -54,7 +57,7 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version $Revision: 1.10 $
+ * @version $Revision: 1.11 $
*/
public abstract class AbstractServer extends AbstractMethodHandler implements
AltrmiServer {
@@ -72,6 +75,9 @@
protected static final int STOPPED = 33;
protected static final int UNSTARTED = 44;
protected int mState = UNSTARTED;
+ private String mAltrmiClasspath;
+ private String mClassGenDir;
+ private String mSrcGenDir;
/**
* Method publish
@@ -457,4 +463,98 @@
return new Long((long) ((long) SESSION++ << 32) + (long)
Math.round(Math.random()));
}
+ /**
+ * Method generate
+ *
+ *
+ * @param impl
+ * @param asName
+ * @param classOrInterfaceToExpose
+ * @param additionalFacade
+ *
+ */
+ public void generate(Object impl, String asName, Class
classOrInterfaceToExpose, Class additionalFacade) throws PublicationException {
+ generate(impl, asName, classOrInterfaceToExpose, new Class[]
{additionalFacade} );
+ }
+
+ /**
+ * Method generate
+ *
+ *
+ * @param impl
+ * @param asName
+ * @param classOrInterfaceToExpose
+ * @param additionalFacades
+ *
+ */
+ public void generate(Object impl, String asName, Class
classOrInterfaceToExpose, Class[] additionalFacades) throws PublicationException {
+ generate(impl, asName, new Class[] { classOrInterfaceToExpose },
additionalFacades );
+ }
+
+ /**
+ * Method generate
+ *
+ *
+ * @param impl
+ * @param asName
+ * @param classesOrInterfacesToExpose
+ *
+ */
+ public void generate(Object impl, String asName, Class[]
classesOrInterfacesToExpose) throws PublicationException {
+ generate(impl, asName, classesOrInterfacesToExpose, new Class[0] );
+ }
+
+ /**
+ * Method generate
+ *
+ *
+ * @param impl
+ * @param asName
+ * @param classOrInterfaceToExpose
+ *
+ */
+ public void generate(Object impl, String asName, Class
classOrInterfaceToExpose) throws PublicationException {
+ generate(impl, asName, new Class[] { classOrInterfaceToExpose } , new
Class[0] );
+ }
+
+ public void setAltrmiClasspath(String altrmiClasspath) {
+ mAltrmiClasspath = altrmiClasspath;
+ }
+
+ public void setClassGenDir(String classGenDir) {
+ mClassGenDir = classGenDir;
+ }
+
+ public void setSrcGenDir(String srcGenDir) {
+ mSrcGenDir = srcGenDir;
+ }
+
+ /**
+ * Method generate
+ *
+ *
+ * @param impl
+ * @param asName
+ * @param classesOrInterfacesToExpose
+ * @param additionalFacades
+ *
+ */
+ public void generate(Object impl, String asName, Class[]
classesOrInterfacesToExpose, Class[] additionalFacades) throws PublicationException {
+ PrimarySourceGenerator sg = new PrimarySourceGenerator();
+ sg.setSrcGenDir(mSrcGenDir);
+ sg.setClassGenDir(mClassGenDir);
+ sg.setGenName(asName);
+ sg.setClasspath(mAltrmiClasspath);
+ sg.setClassOrInterfacesToExpose(classesOrInterfacesToExpose);
+ sg.setAdditionalfacades(additionalFacades);
+ ClassLoader cL = this.getClass().getClassLoader();
+ try {
+ sg.generateSrc(cL);
+ sg.generateClass(cL);
+ } catch (SourceGenerationException e) {
+ e.printStackTrace();
+ // TODO ?
+ }
+
+ }
}
1.7 +4 -4
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test/DirectTest.java
Index: DirectTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test/DirectTest.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- DirectTest.java 21 Jan 2002 15:38:21 -0000 1.6
+++ DirectTest.java 25 Jan 2002 16:40:14 -0000 1.7
@@ -11,7 +11,7 @@
import org.apache.commons.altrmi.server.impl.direct.DirectServer;
import org.apache.commons.altrmi.server.impl.direct.DirectInovcationAdapter;
-import
org.apache.commons.altrmi.server.impl.classretrievers.BaseMobileClassRetriever;
+import org.apache.commons.altrmi.server.impl.classretrievers.JarFileClassRetriever;
import org.apache.commons.altrmi.common.AltrmiInvocationHandler;
import org.apache.commons.altrmi.common.AltrmiConnectionException;
import org.apache.commons.altrmi.client.AltrmiHostContext;
@@ -28,7 +28,7 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
*/
public class DirectTest {
@@ -51,7 +51,7 @@
DirectServer ds = new DirectServer();
if (mServerOrClientFactory.equals("S")) {
- ds.setClassRetriever(new BaseMobileClassRetriever());
+ ds.setClassRetriever(new JarFileClassRetriever("build/classes2"));
}
TestInterfaceImpl ti = new TestInterfaceImpl();
@@ -69,7 +69,7 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
*/
static class DirectTestClient implements Runnable {
1.7 +4 -4
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test/PipeTest.java
Index: PipeTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test/PipeTest.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- PipeTest.java 19 Jan 2002 13:30:19 -0000 1.6
+++ PipeTest.java 25 Jan 2002 16:40:14 -0000 1.7
@@ -11,7 +11,7 @@
import org.apache.commons.altrmi.server.impl.piped.AbstractPipedServer;
import org.apache.commons.altrmi.server.impl.piped.PipedObjectStreamServer;
-import
org.apache.commons.altrmi.server.impl.classretrievers.BaseMobileClassRetriever;
+import org.apache.commons.altrmi.server.impl.classretrievers.JarFileClassRetriever;
import org.apache.commons.altrmi.client.AltrmiHostContext;
import org.apache.commons.altrmi.client.impl.socket.SocketObjectStreamHostContext;
import org.apache.commons.altrmi.client.AltrmiFactory;
@@ -30,7 +30,7 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
*/
public class PipeTest {
@@ -53,7 +53,7 @@
AbstractPipedServer ps = new PipedObjectStreamServer();
if (mServerOrClientFactory.equals("S")) {
- ps.setClassRetriever(new BaseMobileClassRetriever());
+ ps.setClassRetriever(new JarFileClassRetriever("build/classes2"));
}
TestInterfaceImpl ti = new TestInterfaceImpl();
@@ -71,7 +71,7 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
*/
static class PipedTestClient implements Runnable {
1.3 +3 -3
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test/RmiServerTest.java
Index: RmiServerTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test/RmiServerTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- RmiServerTest.java 14 Jan 2002 16:36:08 -0000 1.2
+++ RmiServerTest.java 25 Jan 2002 16:40:14 -0000 1.3
@@ -10,7 +10,7 @@
import org.apache.commons.altrmi.server.impl.rmi.RmiServer;
-import
org.apache.commons.altrmi.server.impl.classretrievers.BaseMobileClassRetriever;
+import org.apache.commons.altrmi.server.impl.classretrievers.JarFileClassRetriever;
import java.io.IOException;
@@ -20,7 +20,7 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class RmiServerTest {
@@ -39,7 +39,7 @@
RmiServer rs = new RmiServer("127.0.0.1", 4321);
if (args[0].equals("S")) {
- rs.setClassRetriever(new BaseMobileClassRetriever());
+ rs.setClassRetriever(new JarFileClassRetriever("build/classes2"));
}
TestInterfaceImpl ti = new TestInterfaceImpl();
1.7 +3 -3
jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test/SocketServerTest.java
Index: SocketServerTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons-sandbox/altrmi/src/java/org/apache/commons/altrmi/test/SocketServerTest.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SocketServerTest.java 18 Jan 2002 17:33:07 -0000 1.6
+++ SocketServerTest.java 25 Jan 2002 16:40:14 -0000 1.7
@@ -12,7 +12,7 @@
import
org.apache.commons.altrmi.server.impl.socket.CompleteSocketObjectStreamServer;
import
org.apache.commons.altrmi.server.impl.socket.CompleteSocketCustomStreamServer;
-import
org.apache.commons.altrmi.server.impl.classretrievers.BaseMobileClassRetriever;
+import org.apache.commons.altrmi.server.impl.classretrievers.JarFileClassRetriever;
import org.apache.commons.altrmi.server.impl.AbstractServer;
import java.io.IOException;
@@ -23,7 +23,7 @@
*
*
* @author Paul Hammant <a
href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
*/
public class SocketServerTest {
@@ -57,7 +57,7 @@
}
if (args[0].equals("S")) {
- as.setClassRetriever(new BaseMobileClassRetriever());
+ as.setClassRetriever(new JarFileClassRetriever("build/classes2"));
}
TestInterfaceImpl ti = new TestInterfaceImpl();
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>