aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/java/rmi/rmic
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/gnu/java/rmi/rmic')
-rw-r--r--libjava/gnu/java/rmi/rmic/Compile_gcj.java56
-rw-r--r--libjava/gnu/java/rmi/rmic/Compile_jikes.java57
-rw-r--r--libjava/gnu/java/rmi/rmic/Compile_kjc.java57
-rw-r--r--libjava/gnu/java/rmi/rmic/Compiler.java108
-rw-r--r--libjava/gnu/java/rmi/rmic/CompilerProcess.java164
-rw-r--r--libjava/gnu/java/rmi/rmic/RMIC.java1225
-rw-r--r--libjava/gnu/java/rmi/rmic/RMICException.java66
-rw-r--r--libjava/gnu/java/rmi/rmic/TabbedWriter.java100
8 files changed, 0 insertions, 1833 deletions
diff --git a/libjava/gnu/java/rmi/rmic/Compile_gcj.java b/libjava/gnu/java/rmi/rmic/Compile_gcj.java
deleted file mode 100644
index e22611b..0000000
--- a/libjava/gnu/java/rmi/rmic/Compile_gcj.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- Copyright (c) 2001, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.java.rmi.rmic;
-
-/** Subclass of Compiler that can be used to invoke gcj. */
-public class Compile_gcj extends CompilerProcess
-{
- private static final String [] COMPILER_ARGS =
- {
- "gcj",
- "-C"
- };
-
- public String[] computeArguments (String filename)
- {
- return computeTypicalArguments(COMPILER_ARGS,
- getClasspath(),
- getDestination(),
- filename);
- }
-}
diff --git a/libjava/gnu/java/rmi/rmic/Compile_jikes.java b/libjava/gnu/java/rmi/rmic/Compile_jikes.java
deleted file mode 100644
index e70b50c..0000000
--- a/libjava/gnu/java/rmi/rmic/Compile_jikes.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- Copyright (c) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.java.rmi.rmic;
-
-/** Subclass of Compiler that can be used to invoke jikes. */
-public class Compile_jikes extends CompilerProcess
-{
- /** Compiler arguments to invoke jikes */
- private static final String [] COMPILER_ARGS =
- {
- "jikes"
- };
-
- /** Compute the command line for the process. */
- public String[] computeArguments (String filename)
- {
- return computeTypicalArguments(COMPILER_ARGS,
- getClasspath(),
- getDestination(),
- filename);
- }
-}
diff --git a/libjava/gnu/java/rmi/rmic/Compile_kjc.java b/libjava/gnu/java/rmi/rmic/Compile_kjc.java
deleted file mode 100644
index 79f1a84..0000000
--- a/libjava/gnu/java/rmi/rmic/Compile_kjc.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- Copyright (c) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.java.rmi.rmic;
-
-/** Subclass of Compiler that can be used to invoke kjc. */
-public class Compile_kjc extends CompilerProcess
-{
- /** Compiler arguments to invoke kjc */
- private static final String [] COMPILER_ARGS =
- {
- "kjc"
- };
-
- /** Compute the command line for the process. */
- public String[] computeArguments (String filename)
- {
- return computeTypicalArguments(COMPILER_ARGS,
- getClasspath(),
- getDestination(),
- filename);
- }
-}
diff --git a/libjava/gnu/java/rmi/rmic/Compiler.java b/libjava/gnu/java/rmi/rmic/Compiler.java
deleted file mode 100644
index fc1f846..0000000
--- a/libjava/gnu/java/rmi/rmic/Compiler.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- Copyright (c) 2001, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.java.rmi.rmic;
-
-/**
- * A Compiler object can be used to compile a .java file into a
- * .class file. This is an abstract class; the
- * <code>getInstance()</code> method is used to obtain the actual
- * compiler object.
- */
-public abstract class Compiler
-{
- // Can't directly instantiate.
- protected Compiler ()
- {
- }
-
- /** Create a new compiler instance. */
- public static Compiler getInstance ()
- {
- return getInstance (System.getProperty ("classpath.compiler", "gcj"));
- }
-
- /** Create a new compiler instance given the name of the compiler. */
- public static Compiler getInstance (String name)
- {
- try
- {
- Class k = Class.forName (classPrefix + name);
- return (Compiler) k.newInstance ();
- }
- catch (Throwable _)
- {
- }
- return null;
- }
-
- /** Get the directory where output files will be put. */
- public String getDestination ()
- {
- return dest;
- }
-
- /** Set the directory where output files will be put. */
- public void setDestination (String dest)
- {
- this.dest = dest;
- }
-
- /** Get the classpath for compilation. */
- public String getClasspath ()
- {
- return classpath;
- }
-
- /** Set the classpath for compilation. */
- public void setClasspath (String classpath)
- {
- this.classpath = classpath;
- }
-
- /** Compile the given file. Throws exception on error. */
- public abstract void compile (String name) throws Exception;
-
- /** The destination directory, or null if none set. */
- protected String dest;
-
- /** The classpath directory, or null if none set. */
- private String classpath;
-
- /** Class prefix used when trying to find instance. */
- private static final String classPrefix = "gnu.java.rmi.rmic.Compile_";
-}
diff --git a/libjava/gnu/java/rmi/rmic/CompilerProcess.java b/libjava/gnu/java/rmi/rmic/CompilerProcess.java
deleted file mode 100644
index d7b2998..0000000
--- a/libjava/gnu/java/rmi/rmic/CompilerProcess.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- Copyright (c) 2001, 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.java.rmi.rmic;
-
-import java.io.InputStream;
-
-/**
- * Subclass of Compiler that can be subclassed to invoke a process to
- * do its work.
- */
-public abstract class CompilerProcess extends Compiler
-{
- /** This is used to compute the command line for the process. */
- public abstract String[] computeArguments (String filename);
-
- /**
- * This is used to compute the command line for the process.
- * Most compilers typically arrange their arguments as in
- * &lt;compiler name and arguments&gt; &lt;optional destination&gt; &lt;filename&gt;.
- * This method builds an argument array out that. It should be used
- * to define computeArguments for those compilers that follow the
- * argument convention described above.
- */
- public static String[] computeTypicalArguments(String[] compilerArgs,
- String destination, String filename)
- {
- return computeTypicalArguments(compilerArgs, null, destination, filename);
- }
- /**
- * This is used to compute the command line for the process.
- * Most compilers typically arrange their arguments as in
- * &lt;compiler name and arguments&gt; &lt;optional destination&gt; &lt;filename&gt;.
- * This method builds an argument array out that. It should be used
- * to define computeArguments for those compilers that follow the
- * argument convention described above.
- */
- public static String[] computeTypicalArguments(String[] compilerArgs,
- String classpath,
- String destination,
- String filename)
- {
- /* length of compiler specific arguments */
- int len = compilerArgs.length;
-
- /* length of returned array of arguments */
- final int arglen = len + (classpath == null ? 0 : 2) +
- (destination == null ? 0 : 2) + 1;
-
- /* Allocate String array for computed arguments. */
- String [] args = new String[arglen];
-
- /* Fill in compiler arguments. */
- System.arraycopy(compilerArgs, 0, args, 0, len);
-
- /* Fill in classpath argument if necessary. */
- if (classpath != null)
- {
- args[len++] = "-classpath";
- args[len++] = classpath;
- }
-
- /* Fill in destination argument if necessary. */
- if (destination != null)
- {
- args[len++] = "-d";
- args[len++] = destination;
- }
-
- /* Fill in filename */
- args[arglen - 1] = filename;
-
- return args;
- }
-
- public void compile (String name) throws Exception
- {
- String[] args = computeArguments (name);
- Process p = Runtime.getRuntime ().exec (args);
-
- /* Print compiler output to System.out. Do this asynchronously so
- that the compiler never blocks writing to its stdout. */
- {
- final InputStream procin = p.getInputStream();
- final Thread copier = new Thread()
- {
- public void run()
- {
- try
- {
- for (int ch = procin.read(); ch != -1; ch = procin.read())
- System.out.print((char) ch);
- }
- catch (java.io.IOException _)
- {
- }
- }
- };
-
- copier.start();
- }
-
- /* Collect compiler error output in a buffer.
- * If compilation fails, it will be used for an error message.
- */
- StringBuffer stderr = new StringBuffer();
- InputStream procerr = p.getErrorStream();
- for (int ch = procerr.read(); ch != -1; ch = procerr.read())
- stderr.append((char) ch);
-
- int result;
- while (true)
- {
- try
- {
- result = p.waitFor ();
- break;
- }
- catch (InterruptedException _)
- {
- }
- }
- if (result != 0)
- {
- // FIXME: wrong exception class.
- throw new Exception ("compiler exited with status: " + result,
- new RMICException(stderr.toString()));
- }
- }
-}
diff --git a/libjava/gnu/java/rmi/rmic/RMIC.java b/libjava/gnu/java/rmi/rmic/RMIC.java
deleted file mode 100644
index 33ec993..0000000
--- a/libjava/gnu/java/rmi/rmic/RMIC.java
+++ /dev/null
@@ -1,1225 +0,0 @@
-/* RMIC.java --
- Copyright (c) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package gnu.java.rmi.rmic;
-
-import gnu.java.rmi.server.RMIHashes;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.rmi.Remote;
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-
-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 String fullstubname;
- private String fullskelname;
- private MethodRef[] remotemethods;
- private String stubname;
- private String skelname;
- private ClassLoader loader;
- private String classpath;
- private int errorCount = 0;
- private List mRemoteInterfaces;
-
- 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 cls) throws Exception
- {
- // reset class specific vars
- clazz = null;
- classname = null;
- fullclassname = null;
- remotemethods = null;
- stubname = null;
- fullstubname = null;
- skelname = null;
- fullskelname = null;
- mRemoteInterfaces = new ArrayList();
-
- errorCount = 0;
-
- analyzeClass(cls);
-
- if (errorCount > 0)
- System.exit(1);
- generateStub();
- if (need11Stubs)
- generateSkel();
- if (compile)
- {
- compile(fullstubname);
- if (need11Stubs)
- compile(fullskelname);
- }
- if (! keep)
- {
- (new File(fullstubname)).delete();
- if (need11Stubs)
- (new File(fullskelname)).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;
-
- findClass();
- findRemoteMethods();
- }
-
- public Exception getException()
- {
- return (exception);
- }
-
- private void findClass() throws ClassNotFoundException
- {
- try
- {
- ClassLoader cl = (loader == null
- ? ClassLoader.getSystemClassLoader()
- : loader);
- clazz = Class.forName(fullclassname, false, cl);
- }
- catch (ClassNotFoundException cnfe)
- {
- System.err.println(fullclassname + " not found in " + classpath);
- throw new RuntimeException(cnfe);
- }
-
- if (! Remote.class.isAssignableFrom(clazz))
- {
- logError("Class " + clazz.getName() + " is not a remote object. "
- + "It does not implement an interface that is a "
- + "java.rmi.Remote-interface.");
- throw new RuntimeException
- ("Class " + clazz.getName() + " is not a remote object. "
- + "It does not implement an interface that is a "
- + "java.rmi.Remote-interface.");
- }
- }
-
- private void generateStub() throws IOException
- {
- stubname = fullclassname + "_Stub";
- String stubclassname = classname + "_Stub";
- fullstubname = (destination == null ? "" : destination + File.separator)
- + stubname.replace('.', File.separatorChar) + ".java";
- File file = new File(fullstubname);
- if (file.getParentFile() != null)
- file.getParentFile().mkdirs();
- ctrl =
- new TabbedWriter(new FileWriter(file));
- 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 ");
- Iterator iter = mRemoteInterfaces.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();
- }
-
- // 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();
- }
-
- // 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();
- }
-
- // 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();
-
- 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(m.getDeclaringClass().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\");");
-
- ctrl.unindent();
- out.print("}");
-
- ctrl.unindent();
- out.println("}");
- 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());
-
- 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 {");
- 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("}");
- }
- }
-
- 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("}");
- }
-
- ctrl.unindent();
- out.print("}");
- out.println();
- }
-
- ctrl.unindent();
- out.println("}");
-
- out.close();
- }
-
- private void generateSkel() throws IOException
- {
- skelname = fullclassname + "_Skel";
- String skelclassname = classname + "_Skel";
- fullskelname = (destination == null ? "" : destination + File.separator)
- + skelname.replace('.', File.separatorChar) + ".java";
- File file = new File(fullskelname);
- if (file.getParentFile() != null)
- file.getParentFile().mkdirs();
- ctrl =
- new TabbedWriter(new FileWriter(file));
- 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("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("opnum = " + i + ";");
- ctrl.unindent();
- out.println("}");
- 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();
-
- 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:");
- 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);
- if (classpath != null)
- comp.setClasspath(classpath);
- 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);
- }
-
-/**
- * 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"))
- {
- classpath = args[next];
- next++;
- StringTokenizer st =
- new StringTokenizer(classpath, File.pathSeparator);
- URL[] u = new URL[st.countTokens()];
- for (int i = 0; i < u.length; i++)
- {
- String path = st.nextToken();
- File f = new File(path);
- try
- {
- u[i] = f.toURL();
- }
- catch (MalformedURLException mue)
- {
- error("malformed classpath component " + path);
- }
- }
- loader = new URLClassLoader(u);
- }
- 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 2006 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 findRemoteMethods() {
- List rmeths = new ArrayList();
- for (Class cur = clazz; cur != null; cur = cur.getSuperclass())
- {
- Class[] interfaces = cur.getInterfaces();
- for (int i = 0; i < interfaces.length; i++)
- {
- if (java.rmi.Remote.class.isAssignableFrom(interfaces[i]))
- {
- Class remoteInterface = interfaces[i];
- if (verbose)
- System.out.println
- ("[implements " + remoteInterface.getName() + "]");
-
- // check if the methods declare RemoteExceptions
- Method[] meths = remoteInterface.getMethods();
- for (int j = 0; j < meths.length; j++)
- {
- Method m = meths[j];
- Class[] exs = m.getExceptionTypes();
-
- boolean throwsRemote = false;
- for (int k = 0; k < exs.length; k++)
- {
- if (exs[k].isAssignableFrom(RemoteException.class))
- throwsRemote = true;
- }
-
- if (! throwsRemote)
- {
- logError("Method " + m
- + " does not throw a RemoteException");
- continue;
- }
-
- rmeths.add(m);
- }
-
- mRemoteInterfaces.add(remoteInterface);
- }
- }
- }
-
- // intersect exceptions for doubly inherited methods
- boolean[] skip = new boolean[rmeths.size()];
- for (int i = 0; i < skip.length; i++)
- skip[i] = false;
- List methrefs = new ArrayList();
- for (int i = 0; i < rmeths.size(); i++)
- {
- if (skip[i]) continue;
- Method current = (Method) rmeths.get(i);
- MethodRef ref = new MethodRef(current);
- for (int j = i+1; j < rmeths.size(); j++)
- {
- Method other = (Method) rmeths.get(j);
- if (ref.isMatch(other))
- {
- ref.intersectExceptions(other);
- skip[j] = true;
- }
- }
- methrefs.add(ref);
- }
-
- // Convert into a MethodRef array and sort them
- remotemethods = (MethodRef[])
- methrefs.toArray(new MethodRef[methrefs.size()]);
- Arrays.sort(remotemethods);
- }
-
-/**
- * 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);
- }
-
- private static class MethodRef
- implements Comparable
- {
- Method meth;
- long hash;
- List exceptions;
- private String sig;
-
- MethodRef(Method m)
- {
- meth = m;
- sig = m.getName(); // XXX should be full signature used to compute hash
- hash = RMIHashes.getMethodHash(m);
- // add exceptions removing subclasses
- exceptions = removeSubclasses(m.getExceptionTypes());
- }
-
- public int compareTo(Object obj)
- {
- MethodRef that = (MethodRef) obj;
- int name = this.meth.getName().compareTo(that.meth.getName());
- if (name == 0) {
- return this.sig.compareTo(that.sig);
- }
- return name;
- }
-
- public boolean isMatch(Method m)
- {
- if (!meth.getName().equals(m.getName()))
- return false;
-
- Class[] params1 = meth.getParameterTypes();
- Class[] params2 = m.getParameterTypes();
- if (params1.length != params2.length)
- return false;
-
- for (int i = 0; i < params1.length; i++)
- if (!params1[i].equals(params2[i])) return false;
-
- return true;
- }
-
- private static List removeSubclasses(Class[] classes)
- {
- List list = new ArrayList();
- for (int i = 0; i < classes.length; i++)
- {
- Class candidate = classes[i];
- boolean add = true;
- for (int j = 0; j < classes.length; j++)
- {
- if (classes[j].equals(candidate))
- continue;
- else if (classes[j].isAssignableFrom(candidate))
- add = false;
- }
- if (add) list.add(candidate);
- }
-
- return list;
- }
-
- public void intersectExceptions(Method m)
- {
- List incoming = removeSubclasses(m.getExceptionTypes());
-
- List updated = new ArrayList();
-
- for (int i = 0; i < exceptions.size(); i++)
- {
- Class outer = (Class) exceptions.get(i);
- boolean addOuter = false;
- for (int j = 0; j < incoming.size(); j++)
- {
- Class inner = (Class) incoming.get(j);
-
- if (inner.equals(outer) || inner.isAssignableFrom(outer))
- addOuter = true;
- else if (outer.isAssignableFrom(inner))
- updated.add(inner);
- }
-
- if (addOuter)
- updated.add(outer);
- }
-
- exceptions = updated;
- }
- }
-}
diff --git a/libjava/gnu/java/rmi/rmic/RMICException.java b/libjava/gnu/java/rmi/rmic/RMICException.java
deleted file mode 100644
index 8d0387e..0000000
--- a/libjava/gnu/java/rmi/rmic/RMICException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- Copyright (c) 2003 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.java.rmi.rmic;
-
-/**
- * Thrown by the underlying compiler used by RMIC when it fails to compile a file.
- *
- * @author Dalibor Topic <robilad@kaffe.org>
- */
-
-public class RMICException extends Exception {
- /**
- * Create an exception with a message. The cause remains uninitialized.
- *
- * @param s the message string
- * @see #initCause(Throwable)
- */
- public RMICException(String message) {
- super(message);
- }
-
- /**
- * Create an exception with a message and a cause.
- *
- * @param s the message string
- * @param cause the cause of this exception
- */
- public RMICException(String message, Throwable cause) {
- super(message, cause);
- }
-}
diff --git a/libjava/gnu/java/rmi/rmic/TabbedWriter.java b/libjava/gnu/java/rmi/rmic/TabbedWriter.java
deleted file mode 100644
index 31107a5..0000000
--- a/libjava/gnu/java/rmi/rmic/TabbedWriter.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- Copyright (c) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.java.rmi.rmic;
-
-import java.io.FilterWriter;
-import java.io.Writer;
-import java.io.IOException;
-
-public class TabbedWriter
- extends FilterWriter {
-
-private static final String defaultTabstring = " ";
-private char[] tabstring;
-private int tabs;
-
-public TabbedWriter(Writer o) {
- this(o, defaultTabstring);
-}
-
-public TabbedWriter(Writer o, String str) {
- super(o);
- tabs = 0;
- tabstring = str.toCharArray();
-}
-
-public void write(int c) throws IOException {
- out.write(c);
- if (c == '\n') {
- for (int i = 0; i < tabs; i++) {
- out.write(tabstring, 0, tabstring.length);
- }
- }
-}
-
-public void write(char cbuf[], int off, int len) throws IOException {
- for (int i = 0; i < len; i++) {
- write((int)cbuf[i+off]);
- }
-}
-
-public void write(String str, int off, int len) throws IOException {
- write(str.toCharArray(), off, len);
-}
-
-public void unindent() throws IOException {
- unindent(1);
-}
-
-public void unindent(int nr) throws IOException {
- indent(-nr);
-}
-
-public void indent() throws IOException {
- indent(1);
-}
-
-public void indent(int nr) throws IOException {
- tabs += nr;
- if (tabs < 0) {
- tabs = 0;
- }
- write((int)'\n');
-}
-
-}