aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/javax
diff options
context:
space:
mode:
authorNick Clifton <nickc@gcc.gnu.org>2005-02-02 19:06:59 +0000
committerNick Clifton <nickc@gcc.gnu.org>2005-02-02 19:06:59 +0000
commitb919490c9c2c91331dc0edc468f663f300f42f82 (patch)
treeccb658e363775a65e66a363c415bed98140ac0d2 /libjava/gnu/javax
parent55967ba27baba17402c3dcebddd041b38627804c (diff)
downloadgcc-b919490c9c2c91331dc0edc468f663f300f42f82.zip
gcc-b919490c9c2c91331dc0edc468f663f300f42f82.tar.gz
gcc-b919490c9c2c91331dc0edc468f663f300f42f82.tar.bz2
Imported from mainline FSF repositories
From-SVN: r94600
Diffstat (limited to 'libjava/gnu/javax')
-rw-r--r--libjava/gnu/javax/rmi/CORBA/DelegateFactory.java74
-rw-r--r--libjava/gnu/javax/rmi/CORBA/GetDelegateInstanceException.java58
-rw-r--r--libjava/gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java133
-rw-r--r--libjava/gnu/javax/rmi/CORBA/StubDelegateImpl.java113
-rw-r--r--libjava/gnu/javax/rmi/CORBA/UtilDelegateImpl.java152
-rw-r--r--libjava/gnu/javax/rmi/CORBA/ValueHandlerImpl.java82
-rw-r--r--libjava/gnu/javax/rmi/PortableServer.java142
7 files changed, 754 insertions, 0 deletions
diff --git a/libjava/gnu/javax/rmi/CORBA/DelegateFactory.java b/libjava/gnu/javax/rmi/CORBA/DelegateFactory.java
new file mode 100644
index 0000000..c98549b
--- /dev/null
+++ b/libjava/gnu/javax/rmi/CORBA/DelegateFactory.java
@@ -0,0 +1,74 @@
+/* DelegateFactory.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 gnu.javax.rmi.CORBA;
+
+import java.util.HashMap;
+import javax.rmi.CORBA.Util;
+
+public class DelegateFactory
+{
+ private static HashMap cache = new HashMap(4);
+
+ public static synchronized Object getInstance(String type)
+ throws GetDelegateInstanceException
+ {
+ Object r = cache.get(type);
+ if (r != null)
+ return r;
+ String dcname = System.getProperty("javax.rmi.CORBA." + type + "Class");
+ if (dcname == null)
+ {
+ //throw new DelegateException
+ // ("no javax.rmi.CORBA.XXXClass property sepcified.");
+ dcname = "gnu.javax.rmi.CORBA." + type + "DelegateImpl";
+ }
+ try
+ {
+ Class dclass = Class.forName(dcname);
+ r = dclass.newInstance();
+ cache.put(type, r);
+ return r;
+ }
+ catch(Exception e)
+ {
+ throw new GetDelegateInstanceException
+ ("Exception when trying to get delegate instance:" + dcname, e);
+ }
+ }
+}
diff --git a/libjava/gnu/javax/rmi/CORBA/GetDelegateInstanceException.java b/libjava/gnu/javax/rmi/CORBA/GetDelegateInstanceException.java
new file mode 100644
index 0000000..27b84f1
--- /dev/null
+++ b/libjava/gnu/javax/rmi/CORBA/GetDelegateInstanceException.java
@@ -0,0 +1,58 @@
+/* GetDelegateInstanceException.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 gnu.javax.rmi.CORBA;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+public class GetDelegateInstanceException
+ extends Exception
+{
+ private Throwable next;
+
+ public GetDelegateInstanceException(String msg)
+ {
+ super(msg);
+ }
+
+ public GetDelegateInstanceException(String msg, Throwable next)
+ {
+ super(msg, next);
+ }
+}
diff --git a/libjava/gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java b/libjava/gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java
new file mode 100644
index 0000000..973c4c4
--- /dev/null
+++ b/libjava/gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java
@@ -0,0 +1,133 @@
+/* PortableRemoteObjectDelegateImpl.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 gnu.javax.rmi.CORBA;
+
+import java.rmi.*;
+import java.rmi.server.*;
+import gnu.javax.rmi.*;
+import javax.rmi.CORBA.*;
+
+public class PortableRemoteObjectDelegateImpl
+ implements PortableRemoteObjectDelegate
+{
+
+ public PortableRemoteObjectDelegateImpl()
+ {
+ }
+
+ public void connect(Remote remote, Remote remote1)
+ throws RemoteException
+ {
+ throw new Error("Not implemented for PortableRemoteObjectDelegateImpl");
+ }
+
+ public void exportObject(Remote obj)
+ throws RemoteException
+ {
+ PortableServer.exportObject(obj);
+ }
+
+ public Object narrow(Object narrowFrom, Class narrowTo)
+ throws ClassCastException
+ {
+ if (narrowTo == null)
+ throw new ClassCastException("Can't narrow to null class");
+ if (narrowFrom == null)
+ return null;
+
+ Class fromClass = narrowFrom.getClass();
+ Object result = null;
+
+ try
+ {
+ if (narrowTo.isAssignableFrom(fromClass))
+ result = narrowFrom;
+ else
+ {
+ System.out.println("We still haven't implement this case: narrow "
+ + narrowFrom + " of type " + fromClass + " to "
+ + narrowTo);
+ Class[] cs = fromClass.getInterfaces();
+ for (int i = 0; i < cs.length; i++)
+ System.out.println(cs[i]);
+ Exception e1 = new Exception();
+ try
+ {
+ throw e1;
+ }
+ catch(Exception ee)
+ {
+ ee.printStackTrace();
+ }
+ System.exit(2);
+ //throw new Error("We still haven't implement this case: narrow "
+ // + narrowFrom + " of type " + fromClass + " to "
+ // + narrowTo);
+ /*
+ ObjectImpl objimpl = (ObjectImpl)narrowFrom;
+ if(objimpl._is_a(PortableServer.getTypeName(narrowTo)))
+ result = PortableServer.getStubFromObjectImpl(objimpl, narrowTo);
+ */
+ }
+ }
+ catch(Exception e)
+ {
+ result = null;
+ }
+
+ if (result == null)
+ throw new ClassCastException("Can't narrow from "
+ + fromClass + " to " + narrowTo);
+
+ return result;
+ }
+
+ public Remote toStub(Remote obj)
+ throws NoSuchObjectException
+ {
+ return PortableServer.toStub(obj);
+ }
+
+ public void unexportObject(Remote obj)
+ throws NoSuchObjectException
+ {
+ PortableServer.unexportObject(obj);
+ }
+
+}
diff --git a/libjava/gnu/javax/rmi/CORBA/StubDelegateImpl.java b/libjava/gnu/javax/rmi/CORBA/StubDelegateImpl.java
new file mode 100644
index 0000000..894e502
--- /dev/null
+++ b/libjava/gnu/javax/rmi/CORBA/StubDelegateImpl.java
@@ -0,0 +1,113 @@
+/* StubDelegateImpl.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 gnu.javax.rmi.CORBA;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+//import org.omg.CORBA.portable.Delegate;
+//import org.omg.CORBA.portable.InputStream;
+//import org.omg.CORBA.portable.OutputStream;
+//import org.omg.CORBA_2_3.portable.ObjectImpl;
+//import org.omg.CORBA.portable.ObjectImpl;
+//import org.omg.CORBA.BAD_OPERATION;
+//import org.omg.CORBA.ORB;
+import java.rmi.RemoteException;
+import javax.rmi.CORBA.Stub;
+import javax.rmi.CORBA.StubDelegate;
+import javax.rmi.CORBA.Tie;
+import javax.rmi.CORBA.StubDelegate;
+
+public class StubDelegateImpl
+ implements StubDelegate
+{
+
+ private int hashCode;
+
+ public StubDelegateImpl(){
+ hashCode = 0;
+ }
+ // XXX javax.rmi.ORB -> org.omg.CORBA.ORB
+ public void connect(Stub self, javax.rmi.ORB orb)
+ throws RemoteException
+ {
+ throw new Error("Not implemented for StubDelegate");
+ }
+
+ public boolean equals(Stub self, Object obj)
+ {
+ if(self == null || obj == null)
+ return self == obj;
+ if(!(obj instanceof Stub))
+ return false;
+ return self.hashCode() == ((Stub)obj).hashCode();
+ }
+
+ public int hashCode(Stub self)
+ {
+ //FIX ME
+ return hashCode;
+ }
+
+ public String toString(Stub self)
+ {
+ try
+ {
+ return self._orb().object_to_string(self);
+ }
+ // XXX javax.rmi.BAD_OPERATION -> org.omg.CORBA.BAD_OPERATION
+ catch(javax.rmi.BAD_OPERATION bad_operation)
+ {
+ return null;
+ }
+ }
+
+ public void readObject(Stub self, ObjectInputStream s)
+ throws IOException, ClassNotFoundException
+ {
+ throw new Error("Not implemented for StubDelegate");
+ }
+
+ public void writeObject(Stub self, ObjectOutputStream s)
+ throws IOException
+ {
+ throw new Error("Not implemented for StubDelegate");
+ }
+
+}
diff --git a/libjava/gnu/javax/rmi/CORBA/UtilDelegateImpl.java b/libjava/gnu/javax/rmi/CORBA/UtilDelegateImpl.java
new file mode 100644
index 0000000..70b2e60
--- /dev/null
+++ b/libjava/gnu/javax/rmi/CORBA/UtilDelegateImpl.java
@@ -0,0 +1,152 @@
+/* UtilDelegateImpl.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 gnu.javax.rmi.CORBA;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.server.RMIClassLoader;
+import java.net.MalformedURLException;
+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;
+import javax.rmi.CORBA.*;
+
+public class UtilDelegateImpl
+ implements UtilDelegate
+{
+ // XXX javax.rmi.ORB -> org.omg.CORBA.ORB
+ public Object copyObject(Object obj, javax.rmi.ORB orb)
+ throws RemoteException
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ // XXX javax.rmi.ORB -> org.omg.CORBA.ORB
+ public Object[] copyObjects(Object obj[], javax.rmi.ORB orb)
+ throws RemoteException
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public ValueHandler createValueHandler()
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public String getCodebase(Class clz)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public Tie getTie(Remote target)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public boolean isLocal(Stub stub)
+ throws RemoteException
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public Class loadClass(String className, String remoteCodebase,
+ ClassLoader loader)
+ throws ClassNotFoundException
+ {
+ try{
+ if (remoteCodebase == null)
+ return RMIClassLoader.loadClass(className);
+ else
+ return RMIClassLoader.loadClass(remoteCodebase, className);
+ }
+ catch (MalformedURLException e1)
+ {
+ throw new ClassNotFoundException(className, e1);
+ }
+ catch(ClassNotFoundException e2)
+ {
+ if(loader != null)
+ return loader.loadClass(className);
+ else
+ return null;
+ }
+ }
+
+ public RemoteException mapSystemException(SystemException ex)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public Object readAny(InputStream in)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public void registerTarget(Tie tie, Remote target)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public void unexportObject(Remote target)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public RemoteException wrapException(Throwable orig)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public void writeAbstractObject(OutputStream out, Object obj)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public void writeAny(OutputStream out, Object obj)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+
+ public void writeRemoteObject(OutputStream out, Object obj)
+ {
+ throw new Error("Not implemented for UtilDelegate");
+ }
+}
diff --git a/libjava/gnu/javax/rmi/CORBA/ValueHandlerImpl.java b/libjava/gnu/javax/rmi/CORBA/ValueHandlerImpl.java
new file mode 100644
index 0000000..6935aa6
--- /dev/null
+++ b/libjava/gnu/javax/rmi/CORBA/ValueHandlerImpl.java
@@ -0,0 +1,82 @@
+/* ValueHandlerImpl.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 gnu.javax.rmi.CORBA;
+
+import java.io.*;
+//import org.omg.CORBA.portable.InputStream;
+//import org.omg.CORBA.portable.OutputStream;
+//import org.omg.SendingContext.RunTime;
+import javax.rmi.CORBA.ValueHandler;
+
+public class ValueHandlerImpl
+ implements ValueHandler
+{
+
+ public String getRMIRepositoryID(Class clz)
+ {
+ throw new Error("Not implemented for ValueHandler");
+ }
+
+ // XXX - Runtime -> RunTime
+ public Runtime getRunTimeCodeBase()
+ {
+ throw new Error("Not implemented for ValueHandler");
+ }
+
+ public boolean isCustomMarshaled(Class clz)
+ {
+ throw new Error("Not implemented for ValueHandler");
+ }
+
+ // XXX - Runtime -> RunTime
+ public Serializable readValue(InputStream in, int offset, Class clz, String repositoryID, Runtime sender)
+ {
+ throw new Error("Not implemented for ValueHandler");
+ }
+
+ public Serializable writeReplace(Serializable value)
+ {
+ throw new Error("Not implemented for ValueHandler");
+ }
+
+ public void writeValue(OutputStream out, Serializable value)
+ {
+ throw new Error("Not implemented for ValueHandler");
+ }
+}
diff --git a/libjava/gnu/javax/rmi/PortableServer.java b/libjava/gnu/javax/rmi/PortableServer.java
new file mode 100644
index 0000000..b5022ca
--- /dev/null
+++ b/libjava/gnu/javax/rmi/PortableServer.java
@@ -0,0 +1,142 @@
+/* PortableServer.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 gnu.javax.rmi;
+
+import java.util.Hashtable;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.NoSuchObjectException;
+import java.rmi.server.ExportException;
+import java.rmi.server.UnicastRemoteObject;
+import java.rmi.server.RemoteStub;
+import javax.rmi.CORBA.*;
+//import org.omg.CORBA.portable.ObjectImpl;
+
+/**
+ * The relationship of PortableRemoteObjectImpl with PortableServer
+ * is like that of UnicastRemoteObject with UnicastServer
+ */
+public class PortableServer
+{
+ static private Hashtable tieCache = new Hashtable();
+ static private Object NO_TIE = new Object();
+
+ public static final synchronized void exportObject(Remote obj)
+ throws RemoteException
+ {
+ if(Util.getTie(obj) != null)
+ return;
+
+ Tie tie = getTieFromRemote(obj);
+ if (tie != null)
+ Util.registerTarget(tie, obj);
+ else
+ UnicastRemoteObject.exportObject(obj);
+ }
+
+ public static final void unexportObject(Remote obj)
+ {
+ if (Util.getTie(obj) != null)
+ Util.unexportObject(obj);
+ if (tieCache.get(obj) != null) //??
+ tieCache.remove(obj);
+ }
+
+ public static final Remote toStub(Remote obj)
+ throws NoSuchObjectException
+ {
+ if (obj instanceof Stub || obj instanceof RemoteStub)
+ return obj;
+
+ Tie tie = Util.getTie(obj);
+ Remote stub;
+ if (tie != null)
+ stub = getStubFromTie(tie);
+ else
+ throw new NoSuchObjectException("Can't toStub an unexported object");
+ return stub;
+ }
+
+ static synchronized Tie getTieFromRemote(Remote obj)
+ {
+ Object tie = tieCache.get(obj);
+ if (tie == null)
+ {
+ tie = getTieFromClass(obj.getClass());
+ if(tie == null)
+ tieCache.put(obj, NO_TIE);
+ else
+ tieCache.put(obj, tie);
+ }
+ else
+ if(tie != NO_TIE)
+ {
+ try
+ {
+ tie = obj.getClass().newInstance();
+ }
+ catch(Exception _)
+ {
+ tie = null;
+ }
+ }
+ else //NO_TIE
+ tie = null;
+
+ return (Tie)tie;
+ }
+
+ static synchronized Tie getTieFromClass(Class clz)
+ {
+ //FIX ME
+ return null;
+ }
+
+ public static Remote getStubFromTie(Tie tie)
+ {
+ //FIX ME
+ return null;
+ }
+
+ public static Remote getStubFromObjectImpl(ObjectImpl objimpl, Class toClass)
+ {
+ //FIX ME
+ return null;
+ }
+}