aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2004-10-20 08:45:33 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2004-10-20 08:45:33 +0000
commit659d8f1a4aef5508a2bc8a03690dce13bb930182 (patch)
treedc333a430852d8414354f877072b60a623db1b37 /libjava/gnu
parentf4a8f2791cdea5aa417884db3e7da0310babc848 (diff)
downloadgcc-659d8f1a4aef5508a2bc8a03690dce13bb930182.zip
gcc-659d8f1a4aef5508a2bc8a03690dce13bb930182.tar.gz
gcc-659d8f1a4aef5508a2bc8a03690dce13bb930182.tar.bz2
RMIC.java: Reformatted.
2004-10-20 Michael Koch <konqueror@gmx.de> * gnu/java/rmi/rmic/RMIC.java: Reformatted. From-SVN: r89327
Diffstat (limited to 'libjava/gnu')
-rw-r--r--libjava/gnu/java/rmi/rmic/RMIC.java1909
1 files changed, 951 insertions, 958 deletions
diff --git a/libjava/gnu/java/rmi/rmic/RMIC.java b/libjava/gnu/java/rmi/rmic/RMIC.java
index d34a84c..e81c0fb 100644
--- a/libjava/gnu/java/rmi/rmic/RMIC.java
+++ b/libjava/gnu/java/rmi/rmic/RMIC.java
@@ -52,1034 +52,1027 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
-public class RMIC {
-
-private String[] args;
-private int next;
-private Exception exception;
-
-private boolean keep = false;
-private boolean need11Stubs = true;
-private boolean need12Stubs = true;
-private boolean compile = true;
-private boolean verbose;
-private String destination;
-
-private PrintWriter out;
-private TabbedWriter ctrl;
-
-private Class clazz;
-private String classname;
-private String fullclassname;
-private MethodRef[] remotemethods;
-private String stubname;
-private String skelname;
-private int errorCount = 0;
-
-private Class mRemoteInterface;
-public RMIC(String[] a) {
- args = a;
-}
-
-public static void main(String args[]) {
- RMIC r = new RMIC(args);
- if (r.run() == false) {
- Exception exception = r.getException();
- if (exception != null) {
- exception.printStackTrace();
- }
- else {
- System.exit(1);
- }
- }
-}
-public boolean run() {
- parseOptions();
- if (next >= args.length) {
- error("no class names found");
- }
- for (int i = next; i < args.length; i++) {
- try {
- if (verbose) {
- System.out.println("[Processing class " + args[i] + ".class]");
- }
- processClass(args[i].replace(File.separatorChar, '.'));
- }
- catch (Exception e) {
- exception = e;
- return (false);
- }
- }
- return (true);
-}
+public class RMIC
+{
+ private String[] args;
+ private int next;
+ private Exception exception;
+ private boolean keep = false;
+ private boolean need11Stubs = true;
+ private boolean need12Stubs = true;
+ private boolean compile = true;
+ private boolean verbose;
+ private String destination;
+ private PrintWriter out;
+ private TabbedWriter ctrl;
+ private Class clazz;
+ private String classname;
+ private String fullclassname;
+ private MethodRef[] remotemethods;
+ private String stubname;
+ private String skelname;
+ private int errorCount = 0;
+ private Class mRemoteInterface;
+
+ public RMIC(String[] a)
+ {
+ args = a;
+ }
+
+ public static void main(String[] args)
+ {
+ RMIC r = new RMIC(args);
+ if (r.run() == false)
+ {
+ Exception e = r.getException();
+ if (e != null)
+ e.printStackTrace();
+ else
+ System.exit(1);
+ }
+ }
+
+ public boolean run()
+ {
+ parseOptions();
+ if (next >= args.length)
+ error("no class names found");
+ for (int i = next; i < args.length; i++)
+ {
+ try
+ {
+ if (verbose)
+ System.out.println("[Processing class " + args[i] + ".class]");
+ processClass(args[i].replace(File.separatorChar, '.'));
+ }
+ catch (Exception e)
+ {
+ exception = e;
+ return (false);
+ }
+ }
+ return (true);
+ }
+
+ private boolean processClass(String classname) throws Exception
+ {
+ errorCount = 0;
+ analyzeClass(classname);
+ if (errorCount > 0)
+ System.exit(1);
+ generateStub();
+ if (need11Stubs)
+ generateSkel();
+ if (compile)
+ {
+ compile(stubname.replace('.', File.separatorChar) + ".java");
+ if (need11Stubs)
+ compile(skelname.replace('.', File.separatorChar) + ".java");
+ }
+ if (! keep)
+ {
+ (new File(stubname.replace('.', File.separatorChar) + ".java")).delete();
+ if (need11Stubs)
+ (new File(skelname.replace('.', File.separatorChar) + ".java"))
+ .delete();
+ }
+ return (true);
+ }
+
+ private void analyzeClass(String cname) throws Exception
+ {
+ if (verbose)
+ System.out.println("[analyze class " + cname + "]");
+ int p = cname.lastIndexOf('.');
+ if (p != -1)
+ classname = cname.substring(p + 1);
+ else
+ classname = cname;
+ fullclassname = cname;
+
+ HashSet rmeths = new HashSet();
+ findClass();
+
+ // get the remote interface
+ mRemoteInterface = getRemoteInterface(clazz);
+ if (mRemoteInterface == null)
+ return;
+ if (verbose)
+ System.out.println("[implements " + mRemoteInterface.getName() + "]");
+
+ // check if the methods of the remote interface declare RemoteExceptions
+ Method[] meths = mRemoteInterface.getDeclaredMethods();
+ for (int i = 0; i < meths.length; i++)
+ {
+ Class[] exceptions = meths[i].getExceptionTypes();
+ int index = 0;
+ for (; index < exceptions.length; index++)
+ {
+ if (exceptions[index].equals(RemoteException.class))
+ break;
+ }
+ if (index < exceptions.length)
+ rmeths.add(meths[i]);
+ else
+ logError("Method " + meths[i]
+ + " does not throw a java.rmi.RemoteException");
+ }
+
+ // Convert into a MethodRef array and sort them
+ remotemethods = new MethodRef[rmeths.size()];
+ int c = 0;
+ for (Iterator i = rmeths.iterator(); i.hasNext();)
+ remotemethods[c++] = new MethodRef((Method) i.next());
+ Arrays.sort(remotemethods);
+ }
+
+ public Exception getException()
+ {
+ return (exception);
+ }
+
+ private void findClass() throws ClassNotFoundException
+ {
+ clazz =
+ Class.forName(fullclassname, true, ClassLoader.getSystemClassLoader());
+ }
+
+ private void generateStub() throws IOException
+ {
+ stubname = fullclassname + "_Stub";
+ String stubclassname = classname + "_Stub";
+ ctrl =
+ new TabbedWriter(new FileWriter((destination == null ? ""
+ : destination
+ + File.separator)
+ + stubname.replace('.',
+ File.separatorChar)
+ + ".java"));
+ out = new PrintWriter(ctrl);
+
+ if (verbose)
+ System.out.println("[Generating class " + stubname + ".java]");
+
+ out.println("// Stub class generated by rmic - DO NOT EDIT!");
+ out.println();
+ if (fullclassname != classname)
+ {
+ String pname =
+ fullclassname.substring(0, fullclassname.lastIndexOf('.'));
+ out.println("package " + pname + ";");
+ out.println();
+ }
+
+ out.print("public final class " + stubclassname);
+ ctrl.indent();
+ out.println("extends java.rmi.server.RemoteStub");
+
+ // Output interfaces we implement
+ out.print("implements ");
+ /* Scan implemented interfaces, and only print remote interfaces. */
+ Class[] ifaces = clazz.getInterfaces();
+ Set remoteIfaces = new HashSet();
+ for (int i = 0; i < ifaces.length; i++)
+ {
+ Class iface = ifaces[i];
+ if (java.rmi.Remote.class.isAssignableFrom(iface))
+ remoteIfaces.add(iface);
+ }
+ Iterator iter = remoteIfaces.iterator();
+ while (iter.hasNext())
+ {
+ /* Print remote interface. */
+ Class iface = (Class) iter.next();
+ out.print(iface.getName());
+
+ /* Print ", " if more remote interfaces follow. */
+ if (iter.hasNext())
+ out.print(", ");
+ }
+ ctrl.unindent();
+ out.print("{");
+ ctrl.indent();
+
+ // UID
+ if (need12Stubs)
+ {
+ out.println("private static final long serialVersionUID = 2L;");
+ out.println();
+ }
-private boolean processClass(String classname) throws Exception {
- errorCount = 0;
- analyzeClass(classname);
- if(errorCount > 0) {
- System.exit(1);
- }
- generateStub();
- if (need11Stubs) {
- generateSkel();
- }
- if (compile) {
- compile(stubname.replace('.', File.separatorChar) + ".java");
- if (need11Stubs) {
- compile(skelname.replace('.', File.separatorChar) + ".java");
- }
- }
- if (!keep) {
- (new File(stubname.replace('.', File.separatorChar) + ".java")).delete();
- if (need11Stubs) {
- (new File(skelname.replace('.', File.separatorChar) + ".java")).delete();
- }
- }
- return (true);
-}
+ // InterfaceHash - don't know how to calculate this - XXX
+ if (need11Stubs)
+ {
+ out.println("private static final long interfaceHash = "
+ + RMIHashes.getInterfaceHash(clazz) + "L;");
+ out.println();
+ if (need12Stubs)
+ {
+ out.println("private static boolean useNewInvoke;");
+ out.println();
+ }
-private void analyzeClass(String cname) throws Exception {
- if(verbose){
- System.out.println("[analyze class "+cname+"]");
- }
- int p = cname.lastIndexOf('.');
- if (p != -1) {
- classname = cname.substring(p+1);
- }
- else {
- classname = cname;
- }
- fullclassname = cname;
-
-
- HashSet rmeths = new HashSet();
- findClass();
-
- // get the remote interface
- mRemoteInterface = getRemoteInterface(clazz);
- if(mRemoteInterface == null)
- return;
- if(verbose){
- System.out.println("[implements "+mRemoteInterface.getName()+"]");
- }
-
- // check if the methods of the remote interface declare RemoteExceptions
- Method[] meths = mRemoteInterface.getDeclaredMethods();
- for (int i = 0; i < meths.length; i++) {
- Class[] exceptions = meths[i].getExceptionTypes();
- int index = 0;
- for(;index < exceptions.length; index++){
- if(exceptions[index].equals(RemoteException.class)){
- break;
- }
- }
- if (index < exceptions.length) {
- rmeths.add(meths[i]);
- } else {
- logError("Method "+meths[i]+" does not throw a java.rmi.RemoteException");
- }
- }
-
-
- // Convert into a MethodRef array and sort them
- remotemethods = new MethodRef[rmeths.size()];
- int c = 0;
- for (Iterator i = rmeths.iterator(); i.hasNext(); ) {
- remotemethods[c++] = new MethodRef((Method)i.next());
- }
- Arrays.sort(remotemethods);
-}
+ // Operation table
+ out.print("private static final java.rmi.server.Operation[] operations = {");
-public Exception getException() {
- return (exception);
-}
+ ctrl.indent();
+ for (int i = 0; i < remotemethods.length; i++)
+ {
+ Method m = remotemethods[i].meth;
+ out.print("new java.rmi.server.Operation(\"");
+ out.print(getPrettyName(m.getReturnType()) + " ");
+ out.print(m.getName() + "(");
+ // Output signature
+ Class[] sig = m.getParameterTypes();
+ for (int j = 0; j < sig.length; j++)
+ {
+ out.print(getPrettyName(sig[j]));
+ if (j + 1 < sig.length)
+ out.print(", ");
+ }
+ out.print(")\")");
+ if (i + 1 < remotemethods.length)
+ out.println(",");
+ }
+ ctrl.unindent();
+ out.println("};");
+ out.println();
+ }
+
+ // Set of method references.
+ if (need12Stubs)
+ {
+ for (int i = 0; i < remotemethods.length; i++)
+ {
+ Method m = remotemethods[i].meth;
+ out.println("private static java.lang.reflect.Method $method_"
+ + m.getName() + "_" + i + ";");
+ }
+
+ // Initialize the methods references.
+ out.println();
+ out.print("static {");
+ ctrl.indent();
-private void findClass() throws ClassNotFoundException {
- clazz = Class.forName(fullclassname, true, ClassLoader.getSystemClassLoader());
-}
+ out.print("try {");
+ ctrl.indent();
-private void generateStub() throws IOException {
- stubname = fullclassname + "_Stub";
- String stubclassname = classname + "_Stub";
- ctrl = new TabbedWriter(new FileWriter((destination == null ? "" : destination + File.separator)
- + stubname.replace('.', File.separatorChar)
- + ".java"));
- out = new PrintWriter(ctrl);
+ if (need11Stubs)
+ {
+ out.println("java.rmi.server.RemoteRef.class.getMethod(\"invoke\", new java.lang.Class[] { java.rmi.Remote.class, java.lang.reflect.Method.class, java.lang.Object[].class, long.class });");
+ out.println("useNewInvoke = true;");
+ }
+
+ for (int i = 0; i < remotemethods.length; i++)
+ {
+ Method m = remotemethods[i].meth;
+ out.print("$method_" + m.getName() + "_" + i + " = ");
+ out.print(mRemoteInterface.getName() + ".class.getMethod(\""
+ + m.getName() + "\"");
+ out.print(", new java.lang.Class[] {");
+ // Output signature
+ Class[] sig = m.getParameterTypes();
+ for (int j = 0; j < sig.length; j++)
+ {
+ out.print(getPrettyName(sig[j]) + ".class");
+ if (j + 1 < sig.length)
+ out.print(", ");
+ }
+ out.println("});");
+ }
+ ctrl.unindent();
+ out.println("}");
+ out.print("catch (java.lang.NoSuchMethodException e) {");
+ ctrl.indent();
+ if (need11Stubs)
+ out.print("useNewInvoke = false;");
+ else
+ out.print("throw new java.lang.NoSuchMethodError(\"stub class initialization failed\");");
- if (verbose) {
- System.out.println("[Generating class " + stubname + ".java]");
- }
+ ctrl.unindent();
+ out.print("}");
- out.println("// Stub class generated by rmic - DO NOT EDIT!");
+ ctrl.unindent();
+ out.println("}");
out.println();
- if (fullclassname != classname) {
- String pname = fullclassname.substring(0, fullclassname.lastIndexOf('.'));
- out.println("package " + pname + ";");
- out.println();
- }
+ }
- out.print("public final class " + stubclassname);
+ // Constructors
+ if (need11Stubs)
+ {
+ out.print("public " + stubclassname + "() {");
ctrl.indent();
- out.println("extends java.rmi.server.RemoteStub");
-
- // Output interfaces we implement
- out.print("implements ");
- /* Scan implemented interfaces, and only print remote interfaces. */
- Class[] ifaces = clazz.getInterfaces();
- Set remoteIfaces = new HashSet();
- for (int i = 0; i < ifaces.length; i++) {
- Class iface = ifaces[i];
- if (java.rmi.Remote.class.isAssignableFrom(iface)) {
- remoteIfaces.add(iface);
- }
- }
- Iterator iter = remoteIfaces.iterator();
- while (iter.hasNext()) {
- /* Print remote interface. */
- Class iface = (Class) iter.next();
- out.print(iface.getName());
-
- /* Print ", " if more remote interfaces follow. */
- if (iter.hasNext()) {
- out.print(", ");
- }
- }
+ out.print("super();");
ctrl.unindent();
- out.print("{");
+ out.println("}");
+ }
+
+ if (need12Stubs)
+ {
+ out.print("public " + stubclassname
+ + "(java.rmi.server.RemoteRef ref) {");
ctrl.indent();
+ out.print("super(ref);");
+ ctrl.unindent();
+ out.println("}");
+ }
- // UID
- if (need12Stubs) {
- out.println("private static final long serialVersionUID = 2L;");
- out.println();
- }
+ // Method implementations
+ for (int i = 0; i < remotemethods.length; i++)
+ {
+ Method m = remotemethods[i].meth;
+ Class[] sig = m.getParameterTypes();
+ Class returntype = m.getReturnType();
+ Class[] except = sortExceptions(m.getExceptionTypes());
- // InterfaceHash - don't know how to calculate this - XXX
- if (need11Stubs) {
- out.println("private static final long interfaceHash = " + RMIHashes.getInterfaceHash(clazz) + "L;");
- out.println();
- if (need12Stubs) {
- out.println("private static boolean useNewInvoke;");
- out.println();
- }
+ out.println();
+ out.print("public " + getPrettyName(returntype) + " " + m.getName()
+ + "(");
+ for (int j = 0; j < sig.length; j++)
+ {
+ out.print(getPrettyName(sig[j]));
+ out.print(" $param_" + j);
+ if (j + 1 < sig.length)
+ out.print(", ");
+ }
+ out.print(") ");
+ out.print("throws ");
+ for (int j = 0; j < except.length; j++)
+ {
+ out.print(getPrettyName(except[j]));
+ if (j + 1 < except.length)
+ out.print(", ");
+ }
+ out.print(" {");
+ ctrl.indent();
- // Operation table
- out.print("private static final java.rmi.server.Operation[] operations = {");
+ out.print("try {");
+ ctrl.indent();
+ if (need12Stubs)
+ {
+ if (need11Stubs)
+ {
+ out.print("if (useNewInvoke) {");
ctrl.indent();
- for (int i = 0; i < remotemethods.length; i++) {
- Method m = remotemethods[i].meth;
- out.print("new java.rmi.server.Operation(\"");
- out.print(getPrettyName(m.getReturnType()) + " ");
- out.print(m.getName() + "(");
- // Output signature
- Class[] sig = m.getParameterTypes();
- for (int j = 0; j < sig.length; j++) {
- out.print(getPrettyName(sig[j]));
- if (j+1 < sig.length) {
- out.print(", ");
- }
- }
- out.print(")\")");
- if (i + 1 < remotemethods.length) {
- out.println(",");
- }
- }
- ctrl.unindent();
- out.println("};");
- out.println();
- }
-
- // Set of method references.
- if (need12Stubs) {
- for (int i = 0; i < remotemethods.length; i++) {
- Method m = remotemethods[i].meth;
- out.println("private static java.lang.reflect.Method $method_" + m.getName() + "_" + i + ";");
- }
-
- // Initialize the methods references.
+ }
+ if (returntype != Void.TYPE)
+ out.print("java.lang.Object $result = ");
+ out.print("ref.invoke(this, $method_" + m.getName() + "_" + i
+ + ", ");
+ if (sig.length == 0)
+ out.print("null, ");
+ else
+ {
+ out.print("new java.lang.Object[] {");
+ for (int j = 0; j < sig.length; j++)
+ {
+ if (sig[j] == Boolean.TYPE)
+ out.print("new java.lang.Boolean($param_" + j + ")");
+ else if (sig[j] == Byte.TYPE)
+ out.print("new java.lang.Byte($param_" + j + ")");
+ else if (sig[j] == Character.TYPE)
+ out.print("new java.lang.Character($param_" + j + ")");
+ else if (sig[j] == Short.TYPE)
+ out.print("new java.lang.Short($param_" + j + ")");
+ else if (sig[j] == Integer.TYPE)
+ out.print("new java.lang.Integer($param_" + j + ")");
+ else if (sig[j] == Long.TYPE)
+ out.print("new java.lang.Long($param_" + j + ")");
+ else if (sig[j] == Float.TYPE)
+ out.print("new java.lang.Float($param_" + j + ")");
+ else if (sig[j] == Double.TYPE)
+ out.print("new java.lang.Double($param_" + j + ")");
+ else
+ out.print("$param_" + j);
+ if (j + 1 < sig.length)
+ out.print(", ");
+ }
+ out.print("}, ");
+ }
+ out.print(Long.toString(remotemethods[i].hash) + "L");
+ out.print(");");
+
+ if (returntype != Void.TYPE)
+ {
out.println();
- out.print("static {");
- ctrl.indent();
-
- out.print("try {");
- ctrl.indent();
-
- if (need11Stubs) {
- out.println("java.rmi.server.RemoteRef.class.getMethod(\"invoke\", new java.lang.Class[] { java.rmi.Remote.class, java.lang.reflect.Method.class, java.lang.Object[].class, long.class });");
- out.println("useNewInvoke = true;");
- }
-
- for (int i = 0; i < remotemethods.length; i++) {
- Method m = remotemethods[i].meth;
- out.print("$method_" + m.getName() + "_" + i + " = ");
- out.print(mRemoteInterface.getName() + ".class.getMethod(\"" + m.getName() + "\"");
- out.print(", new java.lang.Class[] {");
- // Output signature
- Class[] sig = m.getParameterTypes();
- for (int j = 0; j < sig.length; j++) {
- out.print(getPrettyName(sig[j]) + ".class");
- if (j+1 < sig.length) {
- out.print(", ");
- }
- }
- out.println("});");
- }
+ out.print("return (");
+ if (returntype == Boolean.TYPE)
+ out.print("((java.lang.Boolean)$result).booleanValue()");
+ else if (returntype == Byte.TYPE)
+ out.print("((java.lang.Byte)$result).byteValue()");
+ else if (returntype == Character.TYPE)
+ out.print("((java.lang.Character)$result).charValue()");
+ else if (returntype == Short.TYPE)
+ out.print("((java.lang.Short)$result).shortValue()");
+ else if (returntype == Integer.TYPE)
+ out.print("((java.lang.Integer)$result).intValue()");
+ else if (returntype == Long.TYPE)
+ out.print("((java.lang.Long)$result).longValue()");
+ else if (returntype == Float.TYPE)
+ out.print("((java.lang.Float)$result).floatValue()");
+ else if (returntype == Double.TYPE)
+ out.print("((java.lang.Double)$result).doubleValue()");
+ else
+ out.print("(" + getPrettyName(returntype) + ")$result");
+ out.print(");");
+ }
+
+ if (need11Stubs)
+ {
ctrl.unindent();
out.println("}");
- out.print("catch (java.lang.NoSuchMethodException e) {");
+ out.print("else {");
ctrl.indent();
- if (need11Stubs) {
- out.print("useNewInvoke = false;");
- }
- else {
- out.print("throw new java.lang.NoSuchMethodError(\"stub class initialization failed\");");
- }
-
- ctrl.unindent();
- out.print("}");
-
- ctrl.unindent();
- out.println("}");
+ }
+ }
+
+ if (need11Stubs)
+ {
+ out.println("java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject)this, operations, "
+ + i + ", interfaceHash);");
+ out.print("try {");
+ ctrl.indent();
+ out.print("java.io.ObjectOutput out = call.getOutputStream();");
+ for (int j = 0; j < sig.length; j++)
+ {
out.println();
- }
-
- // Constructors
- if (need11Stubs) {
- out.print("public " + stubclassname + "() {");
- ctrl.indent();
- out.print("super();");
- ctrl.unindent();
- out.println("}");
- }
-
- if (need12Stubs) {
- out.print("public " + stubclassname + "(java.rmi.server.RemoteRef ref) {");
- ctrl.indent();
- out.print("super(ref);");
- ctrl.unindent();
- out.println("}");
- }
-
- // Method implementations
- for (int i = 0; i < remotemethods.length; i++) {
- Method m = remotemethods[i].meth;
- Class[] sig = m.getParameterTypes();
- Class returntype = m.getReturnType();
- Class[] except = sortExceptions(m.getExceptionTypes());
-
+ if (sig[j] == Boolean.TYPE)
+ out.print("out.writeBoolean(");
+ else if (sig[j] == Byte.TYPE)
+ out.print("out.writeByte(");
+ else if (sig[j] == Character.TYPE)
+ out.print("out.writeChar(");
+ else if (sig[j] == Short.TYPE)
+ out.print("out.writeShort(");
+ else if (sig[j] == Integer.TYPE)
+ out.print("out.writeInt(");
+ else if (sig[j] == Long.TYPE)
+ out.print("out.writeLong(");
+ else if (sig[j] == Float.TYPE)
+ out.print("out.writeFloat(");
+ else if (sig[j] == Double.TYPE)
+ out.print("out.writeDouble(");
+ else
+ out.print("out.writeObject(");
+ out.print("$param_" + j + ");");
+ }
+ ctrl.unindent();
+ out.println("}");
+ out.print("catch (java.io.IOException e) {");
+ ctrl.indent();
+ out.print("throw new java.rmi.MarshalException(\"error marshalling arguments\", e);");
+ ctrl.unindent();
+ out.println("}");
+ out.println("ref.invoke(call);");
+ if (returntype != Void.TYPE)
+ out.println(getPrettyName(returntype) + " $result;");
+ out.print("try {");
+ ctrl.indent();
+ out.print("java.io.ObjectInput in = call.getInputStream();");
+ boolean needcastcheck = false;
+ if (returntype != Void.TYPE)
+ {
out.println();
- out.print("public " + getPrettyName(returntype) + " " + m.getName() + "(");
- for (int j = 0; j < sig.length; j++) {
- out.print(getPrettyName(sig[j]));
- out.print(" $param_" + j);
- if (j+1 < sig.length) {
- out.print(", ");
- }
- }
- out.print(") ");
- out.print("throws ");
- for (int j = 0; j < except.length; j++) {
- out.print(getPrettyName(except[j]));
- if (j+1 < except.length) {
- out.print(", ");
- }
- }
- out.print(" {");
- ctrl.indent();
-
- out.print("try {");
+ out.print("$result = ");
+ if (returntype == Boolean.TYPE)
+ out.print("in.readBoolean();");
+ else if (returntype == Byte.TYPE)
+ out.print("in.readByte();");
+ else if (returntype == Character.TYPE)
+ out.print("in.readChar();");
+ else if (returntype == Short.TYPE)
+ out.print("in.readShort();");
+ else if (returntype == Integer.TYPE)
+ out.print("in.readInt();");
+ else if (returntype == Long.TYPE)
+ out.print("in.readLong();");
+ else if (returntype == Float.TYPE)
+ out.print("in.readFloat();");
+ else if (returntype == Double.TYPE)
+ out.print("in.readDouble();");
+ else
+ {
+ if (returntype != Object.class)
+ out.print("(" + getPrettyName(returntype) + ")");
+ else
+ needcastcheck = true;
+ out.print("in.readObject();");
+ }
+ out.println();
+ out.print("return ($result);");
+ }
+ ctrl.unindent();
+ out.println("}");
+ out.print("catch (java.io.IOException e) {");
+ ctrl.indent();
+ out.print("throw new java.rmi.UnmarshalException(\"error unmarshalling return\", e);");
+ ctrl.unindent();
+ out.println("}");
+ if (needcastcheck)
+ {
+ out.print("catch (java.lang.ClassNotFoundException e) {");
ctrl.indent();
-
- if (need12Stubs) {
- if (need11Stubs) {
- out.print("if (useNewInvoke) {");
- ctrl.indent();
- }
- if (returntype != Void.TYPE) {
- out.print("java.lang.Object $result = ");
- }
- out.print("ref.invoke(this, $method_" + m.getName() + "_" + i + ", ");
- if (sig.length == 0) {
- out.print("null, ");
- }
- else {
- out.print("new java.lang.Object[] {");
- for (int j = 0; j < sig.length; j++) {
- if (sig[j] == Boolean.TYPE) {
- out.print("new java.lang.Boolean($param_" + j + ")");
- }
- else if (sig[j] == Byte.TYPE) {
- out.print("new java.lang.Byte($param_" + j + ")");
- }
- else if (sig[j] == Character.TYPE) {
- out.print("new java.lang.Character($param_" + j + ")");
- }
- else if (sig[j] == Short.TYPE) {
- out.print("new java.lang.Short($param_" + j + ")");
- }
- else if (sig[j] == Integer.TYPE) {
- out.print("new java.lang.Integer($param_" + j + ")");
- }
- else if (sig[j] == Long.TYPE) {
- out.print("new java.lang.Long($param_" + j + ")");
- }
- else if (sig[j] == Float.TYPE) {
- out.print("new java.lang.Float($param_" + j + ")");
- }
- else if (sig[j] == Double.TYPE) {
- out.print("new java.lang.Double($param_" + j + ")");
- }
- else {
- out.print("$param_" + j);
- }
- if (j+1 < sig.length) {
- out.print(", ");
- }
- }
- out.print("}, ");
- }
- out.print(Long.toString(remotemethods[i].hash) + "L");
- out.print(");");
-
- if (returntype != Void.TYPE) {
- out.println();
- out.print("return (");
- if (returntype == Boolean.TYPE) {
- out.print("((java.lang.Boolean)$result).booleanValue()");
- }
- else if (returntype == Byte.TYPE) {
- out.print("((java.lang.Byte)$result).byteValue()");
- }
- else if (returntype == Character.TYPE) {
- out.print("((java.lang.Character)$result).charValue()");
- }
- else if (returntype == Short.TYPE) {
- out.print("((java.lang.Short)$result).shortValue()");
- }
- else if (returntype == Integer.TYPE) {
- out.print("((java.lang.Integer)$result).intValue()");
- }
- else if (returntype == Long.TYPE) {
- out.print("((java.lang.Long)$result).longValue()");
- }
- else if (returntype == Float.TYPE) {
- out.print("((java.lang.Float)$result).floatValue()");
- }
- else if (returntype == Double.TYPE) {
- out.print("((java.lang.Double)$result).doubleValue()");
- }
- else {
- out.print("(" + getPrettyName(returntype) + ")$result");
- }
- out.print(");");
- }
-
- if (need11Stubs) {
- ctrl.unindent();
- out.println("}");
- out.print("else {");
- ctrl.indent();
- }
- }
-
- if (need11Stubs) {
- out.println("java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject)this, operations, " + i + ", interfaceHash);");
- out.print("try {");
- ctrl.indent();
- out.print("java.io.ObjectOutput out = call.getOutputStream();");
- for (int j = 0; j < sig.length; j++) {
- out.println();
- if (sig[j] == Boolean.TYPE) {
- out.print("out.writeBoolean(");
- }
- else if (sig[j] == Byte.TYPE) {
- out.print("out.writeByte(");
- }
- else if (sig[j] == Character.TYPE) {
- out.print("out.writeChar(");
- }
- else if (sig[j] == Short.TYPE) {
- out.print("out.writeShort(");
- }
- else if (sig[j] == Integer.TYPE) {
- out.print("out.writeInt(");
- }
- else if (sig[j] == Long.TYPE) {
- out.print("out.writeLong(");
- }
- else if (sig[j] == Float.TYPE) {
- out.print("out.writeFloat(");
- }
- else if (sig[j] == Double.TYPE) {
- out.print("out.writeDouble(");
- }
- else {
- out.print("out.writeObject(");
- }
- out.print("$param_" + j + ");");
- }
- ctrl.unindent();
- out.println("}");
- out.print("catch (java.io.IOException e) {");
- ctrl.indent();
- out.print("throw new java.rmi.MarshalException(\"error marshalling arguments\", e);");
- ctrl.unindent();
- out.println("}");
- out.println("ref.invoke(call);");
- if (returntype != Void.TYPE) {
- out.println(getPrettyName(returntype) + " $result;");
- }
- out.print("try {");
- ctrl.indent();
- out.print("java.io.ObjectInput in = call.getInputStream();");
- boolean needcastcheck = false;
- if (returntype != Void.TYPE) {
- out.println();
- out.print("$result = ");
- if (returntype == Boolean.TYPE) {
- out.print("in.readBoolean();");
- }
- else if (returntype == Byte.TYPE) {
- out.print("in.readByte();");
- }
- else if (returntype == Character.TYPE) {
- out.print("in.readChar();");
- }
- else if (returntype == Short.TYPE) {
- out.print("in.readShort();");
- }
- else if (returntype == Integer.TYPE) {
- out.print("in.readInt();");
- }
- else if (returntype == Long.TYPE) {
- out.print("in.readLong();");
- }
- else if (returntype == Float.TYPE) {
- out.print("in.readFloat();");
- }
- else if (returntype == Double.TYPE) {
- out.print("in.readDouble();");
- }
- else {
- if (returntype != Object.class) {
- out.print("(" + getPrettyName(returntype) + ")");
- }
- else {
- needcastcheck = true;
- }
- out.print("in.readObject();");
- }
- out.println();
- out.print("return ($result);");
- }
- ctrl.unindent();
- out.println("}");
- out.print("catch (java.io.IOException e) {");
- ctrl.indent();
- out.print("throw new java.rmi.UnmarshalException(\"error unmarshalling return\", e);");
- ctrl.unindent();
- out.println("}");
- if (needcastcheck) {
- out.print("catch (java.lang.ClassNotFoundException e) {");
- ctrl.indent();
- out.print("throw new java.rmi.UnmarshalException(\"error unmarshalling return\", e);");
- ctrl.unindent();
- out.println("}");
- }
- out.print("finally {");
- ctrl.indent();
- out.print("ref.done(call);");
- ctrl.unindent();
- out.print("}");
-
- if (need12Stubs && need11Stubs) {
- ctrl.unindent();
- out.print("}");
- }
- }
-
+ out.print("throw new java.rmi.UnmarshalException(\"error unmarshalling return\", e);");
ctrl.unindent();
- out.print("}");
-
- boolean needgeneral = true;
- for (int j = 0; j < except.length; j++) {
- out.println();
- out.print("catch (" + getPrettyName(except[j]) + " e) {");
- ctrl.indent();
- out.print("throw e;");
- ctrl.unindent();
- out.print("}");
- if (except[j] == Exception.class) {
- needgeneral = false;
- }
- }
- if (needgeneral) {
- out.println();
- out.print("catch (java.lang.Exception e) {");
- ctrl.indent();
- out.print("throw new java.rmi.UnexpectedException(\"undeclared checked exception\", e);");
- ctrl.unindent();
- out.print("}");
- }
-
+ out.println("}");
+ }
+ out.print("finally {");
+ ctrl.indent();
+ out.print("ref.done(call);");
+ ctrl.unindent();
+ out.print("}");
+
+ if (need12Stubs && need11Stubs)
+ {
ctrl.unindent();
out.print("}");
- out.println();
- }
+ }
+ }
ctrl.unindent();
- out.println("}");
-
- out.close();
-}
-
-private void generateSkel() throws IOException {
- skelname = fullclassname + "_Skel";
- String skelclassname = classname + "_Skel";
- ctrl = new TabbedWriter(new FileWriter((destination == null ? "" : destination + File.separator)
- + skelname.replace('.', File.separatorChar)
- + ".java"));
- out = new PrintWriter(ctrl);
-
- if (verbose) {
- System.out.println("[Generating class " + skelname + ".java]");
- }
-
- out.println("// Skel class generated by rmic - DO NOT EDIT!");
- out.println();
- if (fullclassname != classname) {
- String pname = fullclassname.substring(0, fullclassname.lastIndexOf('.'));
- out.println("package " + pname + ";");
- out.println();
- }
+ out.print("}");
- out.print("public final class " + skelclassname);
- ctrl.indent();
-
- // Output interfaces we implement
- out.print("implements java.rmi.server.Skeleton");
+ boolean needgeneral = true;
+ for (int j = 0; j < except.length; j++)
+ {
+ out.println();
+ out.print("catch (" + getPrettyName(except[j]) + " e) {");
+ ctrl.indent();
+ out.print("throw e;");
+ ctrl.unindent();
+ out.print("}");
+ if (except[j] == Exception.class)
+ needgeneral = false;
+ }
+ if (needgeneral)
+ {
+ out.println();
+ out.print("catch (java.lang.Exception e) {");
+ ctrl.indent();
+ out.print("throw new java.rmi.UnexpectedException(\"undeclared checked exception\", e);");
+ ctrl.unindent();
+ out.print("}");
+ }
ctrl.unindent();
- out.print("{");
- ctrl.indent();
-
- // Interface hash - don't know how to calculate this - XXX
- out.println("private static final long interfaceHash = " + RMIHashes.getInterfaceHash(clazz) + "L;");
+ out.print("}");
out.println();
-
- // Operation table
- out.print("private static final java.rmi.server.Operation[] operations = {");
-
- ctrl.indent();
- for (int i = 0; i < remotemethods.length; i++) {
- Method m = remotemethods[i].meth;
- out.print("new java.rmi.server.Operation(\"");
- out.print(getPrettyName(m.getReturnType()) + " ");
- out.print(m.getName() + "(");
- // Output signature
- Class[] sig = m.getParameterTypes();
- for (int j = 0; j < sig.length; j++) {
- out.print(getPrettyName(sig[j]));
- if (j+1 < sig.length) {
- out.print(", ");
- }
- }
- out.print("\")");
- if (i + 1 < remotemethods.length) {
- out.println(",");
- }
- }
- ctrl.unindent();
- out.println("};");
-
+ }
+
+ ctrl.unindent();
+ out.println("}");
+
+ out.close();
+ }
+
+ private void generateSkel() throws IOException
+ {
+ skelname = fullclassname + "_Skel";
+ String skelclassname = classname + "_Skel";
+ ctrl =
+ new TabbedWriter(new FileWriter((destination == null ? ""
+ : destination
+ + File.separator)
+ + skelname.replace('.',
+ File.separatorChar)
+ + ".java"));
+ out = new PrintWriter(ctrl);
+
+ if (verbose)
+ System.out.println("[Generating class " + skelname + ".java]");
+
+ out.println("// Skel class generated by rmic - DO NOT EDIT!");
+ out.println();
+ if (fullclassname != classname)
+ {
+ String pname =
+ fullclassname.substring(0, fullclassname.lastIndexOf('.'));
+ out.println("package " + pname + ";");
out.println();
-
- // getOperations method
- out.print("public java.rmi.server.Operation[] getOperations() {");
+ }
+
+ out.print("public final class " + skelclassname);
+ ctrl.indent();
+
+ // Output interfaces we implement
+ out.print("implements java.rmi.server.Skeleton");
+
+ ctrl.unindent();
+ out.print("{");
+ ctrl.indent();
+
+ // Interface hash - don't know how to calculate this - XXX
+ out.println("private static final long interfaceHash = "
+ + RMIHashes.getInterfaceHash(clazz) + "L;");
+ out.println();
+
+ // Operation table
+ out.print("private static final java.rmi.server.Operation[] operations = {");
+
+ ctrl.indent();
+ for (int i = 0; i < remotemethods.length; i++)
+ {
+ Method m = remotemethods[i].meth;
+ out.print("new java.rmi.server.Operation(\"");
+ out.print(getPrettyName(m.getReturnType()) + " ");
+ out.print(m.getName() + "(");
+ // Output signature
+ Class[] sig = m.getParameterTypes();
+ for (int j = 0; j < sig.length; j++)
+ {
+ out.print(getPrettyName(sig[j]));
+ if (j + 1 < sig.length)
+ out.print(", ");
+ }
+ out.print("\")");
+ if (i + 1 < remotemethods.length)
+ out.println(",");
+ }
+ ctrl.unindent();
+ out.println("};");
+
+ out.println();
+
+ // getOperations method
+ out.print("public java.rmi.server.Operation[] getOperations() {");
+ ctrl.indent();
+ out.print("return ((java.rmi.server.Operation[]) operations.clone());");
+ ctrl.unindent();
+ out.println("}");
+
+ out.println();
+
+ // Dispatch method
+ out.print("public void dispatch(java.rmi.Remote obj, java.rmi.server.RemoteCall call, int opnum, long hash) throws java.lang.Exception {");
+ ctrl.indent();
+
+ out.print("if (opnum < 0) {");
+ ctrl.indent();
+
+ for (int i = 0; i < remotemethods.length; i++)
+ {
+ out.print("if (hash == " + Long.toString(remotemethods[i].hash)
+ + "L) {");
ctrl.indent();
- out.print("return ((java.rmi.server.Operation[]) operations.clone());");
+ out.print("opnum = " + i + ";");
ctrl.unindent();
out.println("}");
-
- out.println();
-
- // Dispatch method
- out.print("public void dispatch(java.rmi.Remote obj, java.rmi.server.RemoteCall call, int opnum, long hash) throws java.lang.Exception {");
+ out.print("else ");
+ }
+ out.print("{");
+ ctrl.indent();
+ out.print("throw new java.rmi.server.SkeletonMismatchException(\"interface hash mismatch\");");
+ ctrl.unindent();
+ out.print("}");
+
+ ctrl.unindent();
+ out.println("}");
+ out.print("else if (hash != interfaceHash) {");
+ ctrl.indent();
+ out.print("throw new java.rmi.server.SkeletonMismatchException(\"interface hash mismatch\");");
+ ctrl.unindent();
+ out.println("}");
+
+ out.println();
+
+ out.println(fullclassname + " server = (" + fullclassname + ")obj;");
+ out.println("switch (opnum) {");
+
+ // Method dispatch
+ for (int i = 0; i < remotemethods.length; i++)
+ {
+ Method m = remotemethods[i].meth;
+ out.println("case " + i + ":");
+ out.print("{");
ctrl.indent();
- out.print("if (opnum < 0) {");
- ctrl.indent();
+ Class[] sig = m.getParameterTypes();
+ for (int j = 0; j < sig.length; j++)
+ {
+ out.print(getPrettyName(sig[j]));
+ out.println(" $param_" + j + ";");
+ }
- for (int i = 0; i < remotemethods.length; i++) {
- out.print("if (hash == " + Long.toString(remotemethods[i].hash) + "L) {");
- ctrl.indent();
- out.print("opnum = " + i + ";");
- ctrl.unindent();
- out.println("}");
- out.print("else ");
- }
- out.print("{");
+ out.print("try {");
+ boolean needcastcheck = false;
ctrl.indent();
- out.print("throw new java.rmi.server.SkeletonMismatchException(\"interface hash mismatch\");");
+ out.println("java.io.ObjectInput in = call.getInputStream();");
+ for (int j = 0; j < sig.length; j++)
+ {
+ out.print("$param_" + j + " = ");
+ if (sig[j] == Boolean.TYPE)
+ out.print("in.readBoolean();");
+ else if (sig[j] == Byte.TYPE)
+ out.print("in.readByte();");
+ else if (sig[j] == Character.TYPE)
+ out.print("in.readChar();");
+ else if (sig[j] == Short.TYPE)
+ out.print("in.readShort();");
+ else if (sig[j] == Integer.TYPE)
+ out.print("in.readInt();");
+ else if (sig[j] == Long.TYPE)
+ out.print("in.readLong();");
+ else if (sig[j] == Float.TYPE)
+ out.print("in.readFloat();");
+ else if (sig[j] == Double.TYPE)
+ out.print("in.readDouble();");
+ else
+ {
+ if (sig[j] != Object.class)
+ {
+ out.print("(" + getPrettyName(sig[j]) + ")");
+ needcastcheck = true;
+ }
+ out.print("in.readObject();");
+ }
+ out.println();
+ }
ctrl.unindent();
- out.print("}");
-
+ out.println("}");
+ out.print("catch (java.io.IOException e) {");
+ ctrl.indent();
+ out.print("throw new java.rmi.UnmarshalException(\"error unmarshalling arguments\", e);");
ctrl.unindent();
out.println("}");
- out.print("else if (hash != interfaceHash) {");
+ if (needcastcheck)
+ {
+ out.print("catch (java.lang.ClassCastException e) {");
+ ctrl.indent();
+ out.print("throw new java.rmi.UnmarshalException(\"error unmarshalling arguments\", e);");
+ ctrl.unindent();
+ out.println("}");
+ }
+ out.print("finally {");
ctrl.indent();
- out.print("throw new java.rmi.server.SkeletonMismatchException(\"interface hash mismatch\");");
+ out.print("call.releaseInputStream();");
ctrl.unindent();
out.println("}");
- out.println();
-
- out.println(fullclassname + " server = (" + fullclassname + ")obj;");
- out.println("switch (opnum) {");
-
- // Method dispatch
- for (int i = 0; i < remotemethods.length; i++) {
- Method m = remotemethods[i].meth;
- out.println("case " + i + ":");
- out.print("{");
- ctrl.indent();
-
- Class[] sig = m.getParameterTypes();
- for (int j = 0; j < sig.length; j++) {
- out.print(getPrettyName(sig[j]));
- out.println(" $param_" + j + ";");
- }
-
- out.print("try {");
- boolean needcastcheck = false;
- ctrl.indent();
- out.println("java.io.ObjectInput in = call.getInputStream();");
- for (int j = 0; j < sig.length; j++) {
- out.print("$param_" + j + " = ");
- if (sig[j] == Boolean.TYPE) {
- out.print("in.readBoolean();");
- }
- else if (sig[j] == Byte.TYPE) {
- out.print("in.readByte();");
- }
- else if (sig[j] == Character.TYPE) {
- out.print("in.readChar();");
- }
- else if (sig[j] == Short.TYPE) {
- out.print("in.readShort();");
- }
- else if (sig[j] == Integer.TYPE) {
- out.print("in.readInt();");
- }
- else if (sig[j] == Long.TYPE) {
- out.print("in.readLong();");
- }
- else if (sig[j] == Float.TYPE) {
- out.print("in.readFloat();");
- }
- else if (sig[j] == Double.TYPE) {
- out.print("in.readDouble();");
- }
- else {
- if (sig[j] != Object.class) {
- out.print("(" + getPrettyName(sig[j]) + ")");
- needcastcheck = true;
- }
- out.print("in.readObject();");
- }
- out.println();
- }
- ctrl.unindent();
- out.println("}");
- out.print("catch (java.io.IOException e) {");
- ctrl.indent();
- out.print("throw new java.rmi.UnmarshalException(\"error unmarshalling arguments\", e);");
- ctrl.unindent();
- out.println("}");
- if (needcastcheck) {
- out.print("catch (java.lang.ClassCastException e) {");
- ctrl.indent();
- out.print("throw new java.rmi.UnmarshalException(\"error unmarshalling arguments\", e);");
- ctrl.unindent();
- out.println("}");
- }
- out.print("finally {");
- ctrl.indent();
- out.print("call.releaseInputStream();");
- ctrl.unindent();
- out.println("}");
-
- Class returntype = m.getReturnType();
- if (returntype != Void.TYPE) {
- out.print(getPrettyName(returntype) + " $result = ");
- }
- out.print("server." + m.getName() + "(");
- for (int j = 0; j < sig.length; j++) {
- out.print("$param_" + j);
- if (j + 1 < sig.length) {
- out.print(", ");
- }
- }
- out.println(");");
-
- out.print("try {");
- ctrl.indent();
- out.print("java.io.ObjectOutput out = call.getResultStream(true);");
- if (returntype != Void.TYPE) {
- out.println();
- if (returntype == Boolean.TYPE) {
- out.print("out.writeBoolean($result);");
- }
- else if (returntype == Byte.TYPE) {
- out.print("out.writeByte($result);");
- }
- else if (returntype == Character.TYPE) {
- out.print("out.writeChar($result);");
- }
- else if (returntype == Short.TYPE) {
- out.print("out.writeShort($result);");
- }
- else if (returntype == Integer.TYPE) {
- out.print("out.writeInt($result);");
- }
- else if (returntype == Long.TYPE) {
- out.print("out.writeLong($result);");
- }
- else if (returntype == Float.TYPE) {
- out.print("out.writeFloat($result);");
- }
- else if (returntype == Double.TYPE) {
- out.print("out.writeDouble($result);");
- }
- else {
- out.print("out.writeObject($result);");
- }
- }
- ctrl.unindent();
- out.println("}");
- out.print("catch (java.io.IOException e) {");
- ctrl.indent();
- out.print("throw new java.rmi.MarshalException(\"error marshalling return\", e);");
- ctrl.unindent();
- out.println("}");
- out.print("break;");
-
- ctrl.unindent();
- out.println("}");
- out.println();
- }
-
- out.print("default:");
+ Class returntype = m.getReturnType();
+ if (returntype != Void.TYPE)
+ out.print(getPrettyName(returntype) + " $result = ");
+ out.print("server." + m.getName() + "(");
+ for (int j = 0; j < sig.length; j++)
+ {
+ out.print("$param_" + j);
+ if (j + 1 < sig.length)
+ out.print(", ");
+ }
+ out.println(");");
+
+ out.print("try {");
ctrl.indent();
- out.print("throw new java.rmi.UnmarshalException(\"invalid method number\");");
+ out.print("java.io.ObjectOutput out = call.getResultStream(true);");
+ if (returntype != Void.TYPE)
+ {
+ out.println();
+ if (returntype == Boolean.TYPE)
+ out.print("out.writeBoolean($result);");
+ else if (returntype == Byte.TYPE)
+ out.print("out.writeByte($result);");
+ else if (returntype == Character.TYPE)
+ out.print("out.writeChar($result);");
+ else if (returntype == Short.TYPE)
+ out.print("out.writeShort($result);");
+ else if (returntype == Integer.TYPE)
+ out.print("out.writeInt($result);");
+ else if (returntype == Long.TYPE)
+ out.print("out.writeLong($result);");
+ else if (returntype == Float.TYPE)
+ out.print("out.writeFloat($result);");
+ else if (returntype == Double.TYPE)
+ out.print("out.writeDouble($result);");
+ else
+ out.print("out.writeObject($result);");
+ }
ctrl.unindent();
- out.print("}");
-
+ out.println("}");
+ out.print("catch (java.io.IOException e) {");
+ ctrl.indent();
+ out.print("throw new java.rmi.MarshalException(\"error marshalling return\", e);");
ctrl.unindent();
- out.print("}");
+ out.println("}");
+ out.print("break;");
ctrl.unindent();
out.println("}");
-
- out.close();
-}
-
-private void compile(String name) throws Exception {
- Compiler comp = Compiler.getInstance();
- if (verbose) {
- System.out.println("[Compiling class " + name + "]");
- }
- comp.setDestination(destination);
- comp.compile(name);
-}
-
-private static String getPrettyName(Class cls) {
- StringBuffer str = new StringBuffer();
- for (int count = 0;; count++) {
- if (!cls.isArray()) {
- str.append(cls.getName());
- for (; count > 0; count--) {
- str.append("[]");
- }
- return (str.toString());
- }
- cls = cls.getComponentType();
- }
-}
+ out.println();
+ }
+
+ out.print("default:");
+ ctrl.indent();
+ out.print("throw new java.rmi.UnmarshalException(\"invalid method number\");");
+ ctrl.unindent();
+ out.print("}");
+
+ ctrl.unindent();
+ out.print("}");
+
+ ctrl.unindent();
+ out.println("}");
+
+ out.close();
+ }
+
+ private void compile(String name) throws Exception
+ {
+ Compiler comp = Compiler.getInstance();
+ if (verbose)
+ System.out.println("[Compiling class " + name + "]");
+ comp.setDestination(destination);
+ comp.compile(name);
+ }
+
+ private static String getPrettyName(Class cls)
+ {
+ StringBuffer str = new StringBuffer();
+ for (int count = 0;; count++)
+ {
+ if (! cls.isArray())
+ {
+ str.append(cls.getName());
+ for (; count > 0; count--)
+ str.append("[]");
+ return (str.toString());
+ }
+ cls = cls.getComponentType();
+ }
+ }
/**
* Sort exceptions so the most general go last.
*/
-private Class[] sortExceptions(Class[] except) {
- for (int i = 0; i < except.length; i++) {
- for (int j = i+1; j < except.length; j++) {
- if (except[i].isAssignableFrom(except[j])) {
- Class tmp = except[i];
- except[i] = except[j];
- except[j] = tmp;
- }
- }
- }
- return (except);
-}
+ private Class[] sortExceptions(Class[] except)
+ {
+ for (int i = 0; i < except.length; i++)
+ {
+ for (int j = i + 1; j < except.length; j++)
+ {
+ if (except[i].isAssignableFrom(except[j]))
+ {
+ Class tmp = except[i];
+ except[i] = except[j];
+ except[j] = tmp;
+ }
+ }
+ }
+ return (except);
+ }
/**
* Process the options until we find the first argument.
*/
-private void parseOptions() {
- for (;;) {
- if (next >= args.length || args[next].charAt(0) != '-') {
- break;
- }
- String arg = args[next];
- next++;
-
- // Accept `--' options if they look long enough.
- if (arg.length() > 3 && arg.charAt(0) == '-'
- && arg.charAt(1) == '-')
- arg = arg.substring(1);
-
- if (arg.equals("-keep")) {
- keep = true;
- }
- else if (arg.equals("-keepgenerated")) {
- keep = true;
- }
- else if (arg.equals("-v1.1")) {
- need11Stubs = true;
- need12Stubs = false;
- }
- else if (arg.equals("-vcompat")) {
- need11Stubs = true;
- need12Stubs = true;
- }
- else if (arg.equals("-v1.2")) {
- need11Stubs = false;
- need12Stubs = true;
- }
- else if (arg.equals("-g")) {
- }
- else if (arg.equals("-depend")) {
- }
- else if (arg.equals("-nowarn")) {
- }
- else if (arg.equals("-verbose")) {
- verbose = true;
- }
- else if (arg.equals("-nocompile")) {
- compile = false;
- }
- else if (arg.equals("-classpath")) {
- next++;
- }
- else if (arg.equals("-help")) {
- usage();
- }
- else if (arg.equals("-version")) {
- System.out.println("rmic ("
- + System.getProperty("java.vm.name")
- + ") "
- + System.getProperty("java.vm.version"));
- System.out.println();
- System.out.println("Copyright 2002 Free Software Foundation, Inc.");
- System.out.println("This is free software; see the source for copying conditions. There is NO");
- System.out.println("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.");
- System.exit(0);
- }
- else if (arg.equals("-d")) {
- destination = args[next];
- next++;
- }
- else if (arg.charAt(1) == 'J') {
- }
- else {
- error("unrecognized option `" + arg + "'");
- }
- }
-}
+ private void parseOptions()
+ {
+ for (;;)
+ {
+ if (next >= args.length || args[next].charAt(0) != '-')
+ break;
+ String arg = args[next];
+ next++;
+
+ // Accept `--' options if they look long enough.
+ if (arg.length() > 3 && arg.charAt(0) == '-' && arg.charAt(1) == '-')
+ arg = arg.substring(1);
+
+ if (arg.equals("-keep"))
+ keep = true;
+ else if (arg.equals("-keepgenerated"))
+ keep = true;
+ else if (arg.equals("-v1.1"))
+ {
+ need11Stubs = true;
+ need12Stubs = false;
+ }
+ else if (arg.equals("-vcompat"))
+ {
+ need11Stubs = true;
+ need12Stubs = true;
+ }
+ else if (arg.equals("-v1.2"))
+ {
+ need11Stubs = false;
+ need12Stubs = true;
+ }
+ else if (arg.equals("-g"))
+ {
+ }
+ else if (arg.equals("-depend"))
+ {
+ }
+ else if (arg.equals("-nowarn"))
+ {
+ }
+ else if (arg.equals("-verbose"))
+ verbose = true;
+ else if (arg.equals("-nocompile"))
+ compile = false;
+ else if (arg.equals("-classpath"))
+ next++;
+ else if (arg.equals("-help"))
+ usage();
+ else if (arg.equals("-version"))
+ {
+ System.out.println("rmic (" + System.getProperty("java.vm.name")
+ + ") " + System.getProperty("java.vm.version"));
+ System.out.println();
+ System.out.println("Copyright 2002 Free Software Foundation, Inc.");
+ System.out.println("This is free software; see the source for copying conditions. There is NO");
+ System.out.println("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.");
+ System.exit(0);
+ }
+ else if (arg.equals("-d"))
+ {
+ destination = args[next];
+ next++;
+ }
+ else if (arg.charAt(1) == 'J')
+ {
+ }
+ else
+ error("unrecognized option `" + arg + "'");
+ }
+ }
/**
* Looks for the java.rmi.Remote interface that that is implemented by theClazz.
- * @param theClazz the class to look in
+ * @param theClazz the class to look in
* @return the Remote interface of theClazz or null if theClazz does not implement a Remote interface
*/
-private Class getRemoteInterface(Class theClazz)
-{
- Class[] interfaces = theClazz.getInterfaces();
- for (int i = 0; i < interfaces.length; i++)
- {
- if (java.rmi.Remote.class.isAssignableFrom(interfaces[i]))
- {
- return interfaces[i];
- }
- }
- logError("Class "+ theClazz.getName()
- + " is not a remote object. It does not implement an interface that is a java.rmi.Remote-interface.");
- return null;
-}
-
+ private Class getRemoteInterface(Class theClazz)
+ {
+ Class[] interfaces = theClazz.getInterfaces();
+ for (int i = 0; i < interfaces.length; i++)
+ {
+ if (java.rmi.Remote.class.isAssignableFrom(interfaces[i]))
+ return interfaces[i];
+ }
+ logError("Class " + theClazz.getName()
+ + " is not a remote object. It does not implement an interface that is a java.rmi.Remote-interface.");
+ return null;
+ }
+
/**
* Prints an error to System.err and increases the error count.
* @param theError
*/
-private void logError(String theError){
- errorCount++;
- System.err.println("error:"+theError);
-}
-
-private static void error(String message) {
- System.err.println("rmic: " + message);
- System.err.println("Try `rmic --help' for more information.");
- System.exit(1);
-}
-
-private static void usage() {
- System.out.println(
-"Usage: rmic [OPTION]... CLASS...\n" +
-"\n" +
-" -keep Don't delete any intermediate files\n" +
-" -keepgenerated Same as -keep\n" +
-" -v1.1 Java 1.1 style stubs only\n" +
-" -vcompat Java 1.1 & Java 1.2 stubs\n" +
-" -v1.2 Java 1.2 style stubs only\n" +
-" -g * Generated debugging information\n" +
-" -depend * Recompile out-of-date files\n" +
-" -nowarn * Suppress warning messages\n" +
-" -nocompile Don't compile the generated files\n" +
-" -verbose Output what's going on\n" +
-" -classpath <path> * Use given path as classpath\n" +
-" -d <directory> Specify where to place generated classes\n" +
-" -J<flag> * Pass flag to Java\n" +
-" -help Print this help, then exit\n" +
-" -version Print version number, then exit\n" +
-"\n" +
-" * Option currently ignored\n" +
-"Long options can be used with `--option' form as well."
- );
- System.exit(0);
-}
-
-static class MethodRef
- implements Comparable {
-
-Method meth;
-String sig;
-long hash;
-
-MethodRef(Method m) {
- meth = m;
- // We match on the name - but what about overloading? - XXX
- sig = m.getName();
- hash = RMIHashes.getMethodHash(m);
-}
-
-public int compareTo(Object obj) {
- MethodRef that = (MethodRef)obj;
- return (this.sig.compareTo(that.sig));
-}
-
-}
-
+ private void logError(String theError)
+ {
+ errorCount++;
+ System.err.println("error:" + theError);
+ }
+
+ private static void error(String message)
+ {
+ System.err.println("rmic: " + message);
+ System.err.println("Try `rmic --help' for more information.");
+ System.exit(1);
+ }
+
+ private static void usage()
+ {
+ System.out.println("Usage: rmic [OPTION]... CLASS...\n" + "\n"
+ + " -keep Don't delete any intermediate files\n"
+ + " -keepgenerated Same as -keep\n"
+ + " -v1.1 Java 1.1 style stubs only\n"
+ + " -vcompat Java 1.1 & Java 1.2 stubs\n"
+ + " -v1.2 Java 1.2 style stubs only\n"
+ + " -g * Generated debugging information\n"
+ + " -depend * Recompile out-of-date files\n"
+ + " -nowarn * Suppress warning messages\n"
+ + " -nocompile Don't compile the generated files\n"
+ + " -verbose Output what's going on\n"
+ + " -classpath <path> * Use given path as classpath\n"
+ + " -d <directory> Specify where to place generated classes\n"
+ + " -J<flag> * Pass flag to Java\n"
+ + " -help Print this help, then exit\n"
+ + " -version Print version number, then exit\n" + "\n"
+ + " * Option currently ignored\n"
+ + "Long options can be used with `--option' form as well.");
+ System.exit(0);
+ }
+
+ static class MethodRef
+ implements Comparable
+ {
+ Method meth;
+ String sig;
+ long hash;
+
+ MethodRef(Method m)
+ {
+ meth = m;
+ // We match on the name - but what about overloading? - XXX
+ sig = m.getName();
+ hash = RMIHashes.getMethodHash(m);
+ }
+
+ public int compareTo(Object obj)
+ {
+ MethodRef that = (MethodRef) obj;
+ return (this.sig.compareTo(that.sig));
+ }
+ }
}