summaryrefslogtreecommitdiff
path: root/javax/rmi
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2002-10-31 18:35:20 +0000
committerMark Wielaard <mark@klomp.org>2002-10-31 18:35:20 +0000
commitcd7775b47a1f77eb774ff6ecfc6518a4231b636e (patch)
treef12da6efc0976abdd9afcb1a48191c87f7cbd603 /javax/rmi
parent16932d0c5c2cccf533af93f66464b7836b3bb269 (diff)
downloadclasspath-cd7775b47a1f77eb774ff6ecfc6518a4231b636e.tar.gz
Merge Orp RMI patches from Wu Gansha <gansha.wu@intel.com>
* configure.in (AC_OUTPUT): Add javax/rmi/Makefile, * gnu/javax/Makefile, gnu/javax/rmi/Makefile, javax/rmi/CORBA/Makefile and gnu/javax/rmi/CORBA/Makefile. * javax/.cvsignore: New File. * javax/Makefile.am (SUBDIRS): Add rmi. * javax/rmi/.cvsignore: New File. * javax/rmi/Makefile.am: New file. * javax/rmi/CORBA/.cvsignore: New file. * javax/rmi/CORBA/Makefile.am: New file. * gnu/Makefile.am (SUBDIRS): Add javax. * gnu/javax/.cvsignore: New file. * gnu/javax/Makefile.am: New file. * gnu/javax/rmi/.cvsignore: New file. * gnu/javax/rmi/Makefile.am: New file. * gnu/javax/rmi/CORBA/.cvsignore: New file. * gnu/javax/rmi/CORBA/Makefile.am: New file. * java/rmi/MarshalledObject.java (equals): Check hashcode first. * java/rmi/server/RMIClassLoader.java (MyClassLoader): Create/Use annotation. (loadClass): Take String as codebases. (getClassAnnotation): Use MyClassLoader annotations. * java/rmi/server/UnicastRemoteObject.java (UnicastRemoteObject): call exportObject(this). * gnu/java/rmi/RMIMarshalledObjectOutputStream.java (RMIMarshalledObjectOutputStream): set locBytesStream and locStream. (setAnnotation): Don't set locBytesStream and locStream. (replaceObject): Removed. (flush): Don't test locStream. (getLocButes): LikeWise. * gnu/java/rmi/dgc/DGCImpl.java: extends UnicastServerRef. (leaseCache): New field. (dirty): Use leaseCache. (LeaseRecord): New inner class. * gnu/java/rmi/registry/RegistryImpl.java (RegistryImpl): Don't explicitly call exportObject(). * gnu/java/rmi/registry/RegistryImpl_Stub.java: set useNewInvoke to false to communicate with Sun JDK130. * gnu/java/rmi/server/ConnectionRunnerPool.java: Add CPU comment. * gnu/java/rmi/server/RMIObjectInputStream.java (UnicastConnectionManager): Removed field. * gnu/java/rmi/server/RMIObjectOutputStream.java (replaceObject): Use UnicastServer.getExportedRef(). * gnu/java/rmi/server/UnicastConnection.java (reviveTime): New field. (expireTime): Likewise. (CONNECTION_TIMEOUT): Likewise. (disconnect): Call sock.close(). (isExpired): New method. (resetTime): Likewise. (run): Use do while loop and catch Exception for discardConnection(). * gnu/java/rmi/server/UnicastConnectionManager.java: Pool connections. * gnu/java/rmi/server/UnicastRef.java: Lots of changes. * gnu/java/rmi/server/UnicastRemoteCall.java: Lots of changes. * gnu/java/rmi/server/UnicastServer.java (refcache): New field. (exportObject): Use refcache. (unexportObject): Likewise. (getExportedRef): New method. * gnu/java/rmi/server/UnicastServerRef.java (UnicastServerRef): New constructor. (exportObject): Save manager.serverobj. (getStub): New method. * javax/rmi/PortableRemoteObject.java: New file. * gnu/javax/rmi/PortableServer.java: Likewise. * javax/rmi/CORBA/ClassDesc.java: New file. * javax/rmi/CORBA/PortableRemoteObjectDelegate.java: Likewise. * javax/rmi/CORBA/Stub.java: Likewise. * javax/rmi/CORBA/StubDelegate.java: Likewise. * javax/rmi/CORBA/Tie.java: Likewise. * javax/rmi/CORBA/Util.java: Likewise. * javax/rmi/CORBA/UtilDelegate.java: Likewise. * javax/rmi/CORBA/ValueHandler.java: Likewise. * gnu/javax/rmi/CORBA/DelegateFactory.java: Likewise. * gnu/javax/rmi/CORBA/GetDelegateInstanceException.java: Likewise. * gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java: Likewise. * gnu/javax/rmi/CORBA/StubDelegateImpl.java: Likewise. * gnu/javax/rmi/CORBA/UtilDelegateImpl.java: Likewise. * gnu/javax/rmi/CORBA/ValueHandlerImpl.java: Likewise. * javax/rmi/BAD_OPERATION.java: Stub class. * javax/rmi/ORB.java: Likewise * javax/rmi/CORBA/ObjectImpl.java: Likewise * javax/rmi/CORBA/SystemException.java: Likewise.
Diffstat (limited to 'javax/rmi')
-rw-r--r--javax/rmi/.cvsignore2
-rw-r--r--javax/rmi/BAD_OPERATION.java4
-rw-r--r--javax/rmi/CORBA/.cvsignore2
-rw-r--r--javax/rmi/CORBA/ClassDesc.java55
-rw-r--r--javax/rmi/CORBA/Makefile.am13
-rw-r--r--javax/rmi/CORBA/ObjectImpl.java9
-rw-r--r--javax/rmi/CORBA/PortableRemoteObjectDelegate.java63
-rw-r--r--javax/rmi/CORBA/Stub.java120
-rw-r--r--javax/rmi/CORBA/StubDelegate.java65
-rw-r--r--javax/rmi/CORBA/SystemException.java4
-rw-r--r--javax/rmi/CORBA/Tie.java62
-rw-r--r--javax/rmi/CORBA/Util.java187
-rw-r--r--javax/rmi/CORBA/UtilDelegate.java84
-rw-r--r--javax/rmi/CORBA/ValueHandler.java63
-rw-r--r--javax/rmi/Makefile.am8
-rw-r--r--javax/rmi/ORB.java4
-rw-r--r--javax/rmi/PortableRemoteObject.java114
17 files changed, 859 insertions, 0 deletions
diff --git a/javax/rmi/.cvsignore b/javax/rmi/.cvsignore
new file mode 100644
index 000000000..3dda72986
--- /dev/null
+++ b/javax/rmi/.cvsignore
@@ -0,0 +1,2 @@
+Makefile.in
+Makefile
diff --git a/javax/rmi/BAD_OPERATION.java b/javax/rmi/BAD_OPERATION.java
new file mode 100644
index 000000000..36081a47c
--- /dev/null
+++ b/javax/rmi/BAD_OPERATION.java
@@ -0,0 +1,4 @@
+package javax.rmi;
+
+/** XXX - Stub till we have org.omg.CORBA */
+public class BAD_OPERATION extends Exception { }
diff --git a/javax/rmi/CORBA/.cvsignore b/javax/rmi/CORBA/.cvsignore
new file mode 100644
index 000000000..3dda72986
--- /dev/null
+++ b/javax/rmi/CORBA/.cvsignore
@@ -0,0 +1,2 @@
+Makefile.in
+Makefile
diff --git a/javax/rmi/CORBA/ClassDesc.java b/javax/rmi/CORBA/ClassDesc.java
new file mode 100644
index 000000000..052046df9
--- /dev/null
+++ b/javax/rmi/CORBA/ClassDesc.java
@@ -0,0 +1,55 @@
+/* ClassDesc.java --
+ Copyright (C) 2002 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 javax.rmi.CORBA;
+
+import java.io.Serializable;
+
+public class ClassDesc
+ implements Serializable
+{
+ /*
+ * The following is serialized form required by Java API Doc
+ */
+ private String repid;
+ private String codebase;
+
+ public ClassDesc()
+ {
+ }
+}
diff --git a/javax/rmi/CORBA/Makefile.am b/javax/rmi/CORBA/Makefile.am
new file mode 100644
index 000000000..dbae509ec
--- /dev/null
+++ b/javax/rmi/CORBA/Makefile.am
@@ -0,0 +1,13 @@
+## Input file for automake to generate the Makefile.in used by configure
+
+EXTRA_DIST = \
+ClassDesc.java \
+ObjectImpl.java \
+PortableRemoteObjectDelegate.java \
+Stub.java \
+StubDelegate.java \
+SystemException.java \
+Tie.java \
+Util.java \
+UtilDelegate.java \
+ValueHandler.java
diff --git a/javax/rmi/CORBA/ObjectImpl.java b/javax/rmi/CORBA/ObjectImpl.java
new file mode 100644
index 000000000..d76d673ce
--- /dev/null
+++ b/javax/rmi/CORBA/ObjectImpl.java
@@ -0,0 +1,9 @@
+package javax.rmi.CORBA;
+
+/** XXX - Stub till we have org.omg.CORBA */
+public class ObjectImpl
+{
+ public ObjectImpl _orb() { return null; }
+ public String object_to_string(ObjectImpl o)
+ throws javax.rmi.BAD_OPERATION { return null; }
+}
diff --git a/javax/rmi/CORBA/PortableRemoteObjectDelegate.java b/javax/rmi/CORBA/PortableRemoteObjectDelegate.java
new file mode 100644
index 000000000..a073cf470
--- /dev/null
+++ b/javax/rmi/CORBA/PortableRemoteObjectDelegate.java
@@ -0,0 +1,63 @@
+/* PortableRemoteObjectDelegate.java -- Interface supporting PortableRemoteObject
+ Copyright (C) 2002 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 javax.rmi.CORBA;
+
+import java.rmi.*;
+
+/**
+ * A delegate is a singleton class that support delegation for method
+ * implementation in PortableRemoteObject.
+ */
+public interface PortableRemoteObjectDelegate
+{
+ void connect(Remote target, Remote source)
+ throws RemoteException;
+
+ void exportObject(Remote obj)
+ throws RemoteException;
+
+ Object narrow(Object narrowFrom, Class narrowTo)
+ throws ClassCastException;
+
+ Remote toStub(Remote obj)
+ throws NoSuchObjectException;
+
+ void unexportObject(Remote obj)
+ throws NoSuchObjectException;
+}
diff --git a/javax/rmi/CORBA/Stub.java b/javax/rmi/CORBA/Stub.java
new file mode 100644
index 000000000..c79b85cb4
--- /dev/null
+++ b/javax/rmi/CORBA/Stub.java
@@ -0,0 +1,120 @@
+/* Stub.java --
+ Copyright (C) 2002 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 javax.rmi.CORBA;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.rmi.RemoteException;
+//import org.omg.CORBA.ORB;
+//import org.omg.CORBA_2_3.portable.ObjectImpl;
+//import org.omg.CORBA.portable.ObjectImpl;
+import gnu.javax.rmi.CORBA.DelegateFactory;
+import gnu.javax.rmi.CORBA.GetDelegateInstanceException;
+
+public abstract class Stub extends ObjectImpl
+ implements Serializable
+{
+ private transient StubDelegate delegate;
+
+ protected Stub()
+ {
+ try
+ {
+ delegate = (StubDelegate)DelegateFactory.getInstance("Stub");
+ }
+ catch(GetDelegateInstanceException e)
+ {
+ delegate = null;
+ }
+ }
+
+ public int hashCode()
+ {
+ if(delegate != null)
+ return delegate.hashCode(this);
+ else
+ return 0;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if(delegate != null)
+ return delegate.equals(this, obj);
+ else
+ return false;
+ }
+
+ public String toString()
+ {
+ String s = null;
+ if(delegate != null)
+ s = delegate.toString(this);
+ if(s == null)
+ s = super.toString();
+ return s;
+ }
+
+ // XXX javax.rmi.ORB -> org.omg.CORBA.ORB
+ public void connect(javax.rmi.ORB orb)
+ throws RemoteException
+ {
+ if(delegate != null)
+ delegate.connect(this, orb);
+ }
+
+ /**
+ * The following two routines are required by serialized form of Java API doc.
+ */
+ private void readObject(ObjectInputStream stream)
+ throws IOException, ClassNotFoundException
+ {
+ if(delegate != null)
+ delegate.readObject(this, stream);
+ }
+
+ private void writeObject(ObjectOutputStream stream)
+ throws IOException
+ {
+ if(delegate != null)
+ delegate.writeObject(this, stream);
+ }
+
+}
diff --git a/javax/rmi/CORBA/StubDelegate.java b/javax/rmi/CORBA/StubDelegate.java
new file mode 100644
index 000000000..6c7f69fe7
--- /dev/null
+++ b/javax/rmi/CORBA/StubDelegate.java
@@ -0,0 +1,65 @@
+/* StubDelegate.java --
+ Copyright (C) 2002 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 javax.rmi.CORBA;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.rmi.RemoteException;
+//import org.omg.CORBA.ORB;
+
+public interface StubDelegate
+{
+
+ // XXX javax.rmi.ORB -> org.omg.CORBA.ORB
+ void connect(Stub self, javax.rmi.ORB orb)
+ throws RemoteException;
+
+ boolean equals(Stub self, Object obj);
+
+ int hashCode(Stub self);
+
+ void readObject(Stub self, ObjectInputStream s)
+ throws IOException, ClassNotFoundException;
+
+ String toString(Stub self);
+
+ void writeObject(Stub self, ObjectOutputStream s)
+ throws IOException;
+}
diff --git a/javax/rmi/CORBA/SystemException.java b/javax/rmi/CORBA/SystemException.java
new file mode 100644
index 000000000..f8afdc35e
--- /dev/null
+++ b/javax/rmi/CORBA/SystemException.java
@@ -0,0 +1,4 @@
+package javax.rmi.CORBA;
+
+/** XXX - Stub till we have org.omg.CORBA */
+public class SystemException extends Exception { }
diff --git a/javax/rmi/CORBA/Tie.java b/javax/rmi/CORBA/Tie.java
new file mode 100644
index 000000000..ca14e3d42
--- /dev/null
+++ b/javax/rmi/CORBA/Tie.java
@@ -0,0 +1,62 @@
+/* Tie.java --
+ Copyright (C) 2002 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 javax.rmi.CORBA;
+
+import java.rmi.Remote;
+//import org.omg.CORBA.ORB;
+//import org.omg.CORBA.portable.InvokeHandler;
+
+public interface Tie // XXX extends InvokeHandler
+{
+
+ void deactivate();
+
+ Remote getTarget();
+
+ // XXX javax.rmi.ORB -> org.omg.CORBA.ORB
+ javax.rmi.ORB orb();
+
+ // XXX javax.rmi.ORB -> org.omg.CORBA.ORB
+ void orb(javax.rmi.ORB orb);
+
+ void setTarget(Remote target);
+
+ // XXX Object -> org.omg.CORBA.Object
+ Object thisObject();
+}
diff --git a/javax/rmi/CORBA/Util.java b/javax/rmi/CORBA/Util.java
new file mode 100644
index 000000000..45a189d97
--- /dev/null
+++ b/javax/rmi/CORBA/Util.java
@@ -0,0 +1,187 @@
+/* Util.java --
+ Copyright (C) 2002 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 javax.rmi.CORBA;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.lang.Object;
+import java.io.*;
+//import org.omg.CORBA.*;
+//import org.omg.CORBA.portable.InputStream;
+//import org.omg.CORBA.portable.OutputStream;
+import gnu.javax.rmi.CORBA.DelegateFactory;
+import gnu.javax.rmi.CORBA.GetDelegateInstanceException;
+
+public class Util
+{
+
+ private static UtilDelegate delegate;
+ static
+ {
+ try
+ {
+ delegate = (UtilDelegate)DelegateFactory.getInstance("Util");
+ }
+ catch(GetDelegateInstanceException e)
+ {
+ delegate = null;
+ }
+ }
+
+ private Util()
+ {
+ }
+
+ // XXX - javax.rmi.ORB -> org.omg.CORBA.ORB
+ public static Object copyObject(Object obj, javax.rmi.ORB orb)
+ throws RemoteException
+ {
+ if(delegate != null)
+ return delegate.copyObject(obj, orb);
+ else
+ return null;
+ }
+
+ // XXX - javax.rmi.ORB -> org.omg.CORBA.ORB
+ public static Object[] copyObjects(Object obj[], javax.rmi.ORB orb)
+ throws RemoteException
+ {
+ if(delegate != null)
+ return delegate.copyObjects(obj, orb);
+ else
+ return null;
+ }
+
+ public static ValueHandler createValueHandler()
+ {
+ if(delegate != null)
+ return delegate.createValueHandler();
+ else
+ return null;
+ }
+
+ public static String getCodebase(Class clz)
+ {
+ if(delegate != null)
+ return delegate.getCodebase(clz);
+ else
+ return null;
+ }
+
+ public static Tie getTie(Remote target)
+ {
+ if(delegate != null)
+ return delegate.getTie(target);
+ else
+ return null;
+ }
+
+ public static boolean isLocal(Stub stub)
+ throws RemoteException
+ {
+ if(delegate != null)
+ return delegate.isLocal(stub);
+ else
+ return false;
+ }
+
+ public static Class loadClass(String className, String remoteCodebase, ClassLoader loader)
+ throws ClassNotFoundException
+ {
+ if(delegate != null)
+ return delegate.loadClass(className, remoteCodebase, loader);
+ else
+ throw new ClassNotFoundException(className + ": delegate == null");
+ }
+
+ public static RemoteException mapSystemException(SystemException ex)
+ {
+ if(delegate != null)
+ return delegate.mapSystemException(ex);
+ else
+ return null;
+ }
+
+ public static Object readAny(InputStream in)
+ {
+ if(delegate != null)
+ return delegate.readAny(in);
+ else
+ return null;
+ }
+
+ public static void registerTarget(Tie tie, Remote target)
+ {
+ if(delegate != null)
+ delegate.registerTarget(tie, target);
+ }
+
+ public static void unexportObject(Remote target)
+ {
+ if(delegate != null)
+ delegate.unexportObject(target);
+ }
+
+ public static RemoteException wrapException(Throwable orig)
+ {
+ if(delegate != null)
+ return delegate.wrapException(orig);
+ else
+ return null;
+ }
+
+ public static void writeAbstractObject(OutputStream out, Object obj)
+ {
+ if(delegate != null)
+ delegate.writeAbstractObject(out, obj);
+ }
+
+ public static void writeAny(OutputStream out, Object obj)
+ {
+ if(delegate != null)
+ delegate.writeAny(out, obj);
+ }
+
+ public static void writeRemoteObject(OutputStream out, Object obj)
+ {
+ if(delegate != null)
+ delegate.writeRemoteObject(out, obj);
+ }
+
+}
diff --git a/javax/rmi/CORBA/UtilDelegate.java b/javax/rmi/CORBA/UtilDelegate.java
new file mode 100644
index 000000000..4d611bc8b
--- /dev/null
+++ b/javax/rmi/CORBA/UtilDelegate.java
@@ -0,0 +1,84 @@
+/* UtilDelegate.java --
+ Copyright (C) 2002 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 javax.rmi.CORBA;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.io.*;
+//import org.omg.CORBA.ORB;
+//import org.omg.CORBA.SystemException;
+//import org.omg.CORBA.portable.InputStream;
+//import org.omg.CORBA.portable.OutputStream;
+
+public interface UtilDelegate
+{
+
+ // XXX javax.rmi.ORB -> org.omg.CORBA.ORB
+ Object copyObject(Object obj, javax.rmi.ORB orb) throws RemoteException;
+
+ // XXX javax.rmi.ORB -> org.omg.CORBA.ORB
+ Object[] copyObjects(Object obj[], javax.rmi.ORB orb) throws RemoteException;
+
+ ValueHandler createValueHandler();
+
+ String getCodebase(Class clz);
+
+ Tie getTie(Remote target);
+
+ boolean isLocal(Stub stub) throws RemoteException;
+
+ Class loadClass(String className, String remoteCodebase,
+ ClassLoader loader) throws ClassNotFoundException;
+
+ RemoteException mapSystemException(SystemException ex);
+
+ Object readAny(InputStream in);
+
+ void registerTarget(Tie tie, Remote target);
+
+ void unexportObject(Remote target);
+
+ RemoteException wrapException(Throwable orig);
+
+ void writeAbstractObject(OutputStream out, Object obj);
+
+ void writeAny(OutputStream out, Object obj);
+
+ void writeRemoteObject(OutputStream out, Object obj);
+}
diff --git a/javax/rmi/CORBA/ValueHandler.java b/javax/rmi/CORBA/ValueHandler.java
new file mode 100644
index 000000000..3a008f18c
--- /dev/null
+++ b/javax/rmi/CORBA/ValueHandler.java
@@ -0,0 +1,63 @@
+/* ValueHandler.java --
+ Copyright (C) 2002 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 javax.rmi.CORBA;
+
+import java.io.*;
+//import org.omg.CORBA.portable.InputStream;
+//import org.omg.CORBA.portable.OutputStream;
+//import org.omg.SendingContext.RunTime;
+
+public interface ValueHandler
+{
+
+ String getRMIRepositoryID(Class clz);
+
+ // XXX Runtime -> RunTime
+ Runtime getRunTimeCodeBase();
+
+ boolean isCustomMarshaled(Class clz);
+
+ // XXX Runtime -> RunTime
+ Serializable readValue(InputStream in, int offset, Class clz,
+ String repositoryID, Runtime sender);
+
+ Serializable writeReplace(Serializable value);
+
+ void writeValue(OutputStream out, Serializable value);
+}
diff --git a/javax/rmi/Makefile.am b/javax/rmi/Makefile.am
new file mode 100644
index 000000000..509f0e603
--- /dev/null
+++ b/javax/rmi/Makefile.am
@@ -0,0 +1,8 @@
+## Input file for automake to generate the Makefile.in used by configure
+
+SUBDIRS = CORBA
+
+EXTRA_DIST = \
+BAD_OPERATION.java \
+ORB.java \
+PortableRemoteObject.java
diff --git a/javax/rmi/ORB.java b/javax/rmi/ORB.java
new file mode 100644
index 000000000..be7a894e6
--- /dev/null
+++ b/javax/rmi/ORB.java
@@ -0,0 +1,4 @@
+package javax.rmi;
+
+/** XXX - Stub till we have org.omg.CORBA */
+public class ORB { }
diff --git a/javax/rmi/PortableRemoteObject.java b/javax/rmi/PortableRemoteObject.java
new file mode 100644
index 000000000..ee40d9c9e
--- /dev/null
+++ b/javax/rmi/PortableRemoteObject.java
@@ -0,0 +1,114 @@
+/* PortableRemoteObject.java --
+ Copyright (C) 2002 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 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 javax.rmi;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.NoSuchObjectException;
+import gnu.javax.rmi.CORBA.DelegateFactory;
+import gnu.javax.rmi.CORBA.GetDelegateInstanceException;
+import javax.rmi.CORBA.PortableRemoteObjectDelegate;
+import javax.rmi.CORBA.Util;
+
+public class PortableRemoteObject
+ implements Remote /* why doc doesn't say should implement Remote */
+{
+
+ private static PortableRemoteObjectDelegate delegate;
+ static
+ {
+ try
+ {
+ delegate = (PortableRemoteObjectDelegate)DelegateFactory.getInstance
+ ("PortableRemoteObject");
+ }
+ catch(GetDelegateInstanceException e)
+ {
+ e.printStackTrace();
+ delegate = null;
+ }
+ }
+
+ protected PortableRemoteObject()
+ throws RemoteException
+ {
+ if(delegate != null)
+ exportObject((Remote)this);
+ }
+
+ public static void connect(Remote target, Remote source)
+ throws RemoteException
+ {
+ if(delegate != null)
+ delegate.connect(target, source);
+ }
+
+ public static void exportObject(Remote obj)
+ throws RemoteException
+ {
+ if(delegate != null)
+ delegate.exportObject(obj);
+ }
+
+ public static Object narrow(Object narrowFrom, Class narrowTo)
+ throws ClassCastException
+ {
+ if(delegate != null)
+ return delegate.narrow(narrowFrom, narrowTo);
+ else
+ return null;
+ }
+
+ public static Remote toStub(Remote obj)
+ throws NoSuchObjectException
+ {
+ if(delegate != null)
+ return delegate.toStub(obj);
+ else
+ return null;
+ }
+
+ public static void unexportObject(Remote obj)
+ throws NoSuchObjectException
+ {
+ if(delegate != null)
+ delegate.unexportObject(obj);
+ }
+
+}