aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog93
-rw-r--r--libjava/Makefile.am122
-rw-r--r--libjava/Makefile.in1261
-rw-r--r--libjava/gnu/java/rmi/dgc/DGCImpl.java55
-rw-r--r--libjava/gnu/java/rmi/dgc/DGCImpl_Skel.java106
-rw-r--r--libjava/gnu/java/rmi/dgc/DGCImpl_Stub.java120
-rw-r--r--libjava/gnu/java/rmi/registry/RegistryImpl.java115
-rw-r--r--libjava/gnu/java/rmi/registry/RegistryImpl_Skel.java189
-rw-r--r--libjava/gnu/java/rmi/registry/RegistryImpl_Stub.java255
-rw-r--r--libjava/gnu/java/rmi/rmic/RMIC.java982
-rw-r--r--libjava/gnu/java/rmi/rmic/TabbedWriter.java90
-rw-r--r--libjava/gnu/java/rmi/server/ProtocolConstants.java53
-rw-r--r--libjava/gnu/java/rmi/server/RMIDefaultSocketFactory.java49
-rw-r--r--libjava/gnu/java/rmi/server/RMIHashes.java45
-rw-r--r--libjava/gnu/java/rmi/server/RMIObjectInputStream.java65
-rw-r--r--libjava/gnu/java/rmi/server/RMIObjectOutputStream.java47
-rw-r--r--libjava/gnu/java/rmi/server/UnicastConnection.java162
-rw-r--r--libjava/gnu/java/rmi/server/UnicastConnectionManager.java262
-rw-r--r--libjava/gnu/java/rmi/server/UnicastRef.java219
-rw-r--r--libjava/gnu/java/rmi/server/UnicastRemoteCall.java301
-rw-r--r--libjava/gnu/java/rmi/server/UnicastRemoteStub.java40
-rw-r--r--libjava/gnu/java/rmi/server/UnicastServer.java119
-rw-r--r--libjava/gnu/java/rmi/server/UnicastServerRef.java198
-rw-r--r--libjava/java/rmi/AccessException.java43
-rw-r--r--libjava/java/rmi/AlreadyBoundException.java41
-rw-r--r--libjava/java/rmi/ConnectException.java42
-rw-r--r--libjava/java/rmi/ConnectIOException.java42
-rw-r--r--libjava/java/rmi/MarshalException.java42
-rw-r--r--libjava/java/rmi/MarshalledObject.java51
-rw-r--r--libjava/java/rmi/Naming.java70
-rw-r--r--libjava/java/rmi/NoSuchObjectException.java39
-rw-r--r--libjava/java/rmi/NotBoundException.java43
-rw-r--r--libjava/java/rmi/RMISecurityException.java43
-rw-r--r--libjava/java/rmi/RMISecurityManager.java139
-rw-r--r--libjava/java/rmi/Remote.java31
-rw-r--r--libjava/java/rmi/RemoteException.java85
-rw-r--r--libjava/java/rmi/ServerError.java37
-rw-r--r--libjava/java/rmi/ServerException.java43
-rw-r--r--libjava/java/rmi/ServerRuntimeException.java37
-rw-r--r--libjava/java/rmi/StubNotFoundException.java41
-rw-r--r--libjava/java/rmi/UnexpectedException.java41
-rw-r--r--libjava/java/rmi/UnknownHostException.java41
-rw-r--r--libjava/java/rmi/UnmarshalException.java43
-rw-r--r--libjava/java/rmi/activation/Activatable.java93
-rw-r--r--libjava/java/rmi/activation/ActivateFailedException.java43
-rw-r--r--libjava/java/rmi/activation/ActivationDesc.java102
-rw-r--r--libjava/java/rmi/activation/ActivationException.java78
-rw-r--r--libjava/java/rmi/activation/ActivationGroup.java73
-rw-r--r--libjava/java/rmi/activation/ActivationGroupDesc.java120
-rw-r--r--libjava/java/rmi/activation/ActivationGroupID.java59
-rw-r--r--libjava/java/rmi/activation/ActivationID.java61
-rw-r--r--libjava/java/rmi/activation/ActivationInstantiator.java39
-rw-r--r--libjava/java/rmi/activation/ActivationMonitor.java41
-rw-r--r--libjava/java/rmi/activation/ActivationSystem.java49
-rw-r--r--libjava/java/rmi/activation/Activator.java39
-rw-r--r--libjava/java/rmi/activation/UnknownGroupException.java37
-rw-r--r--libjava/java/rmi/activation/UnknownObjectException.java37
-rw-r--r--libjava/java/rmi/dgc/DGC.java41
-rw-r--r--libjava/java/rmi/dgc/Lease.java58
-rw-r--r--libjava/java/rmi/dgc/VMID.java106
-rw-r--r--libjava/java/rmi/registry/LocateRegistry.java75
-rw-r--r--libjava/java/rmi/registry/Registry.java51
-rw-r--r--libjava/java/rmi/registry/RegistryHandler.java39
-rw-r--r--libjava/java/rmi/server/ExportException.java43
-rw-r--r--libjava/java/rmi/server/LoaderHandler.java44
-rw-r--r--libjava/java/rmi/server/LogStream.java92
-rw-r--r--libjava/java/rmi/server/ObjID.java95
-rw-r--r--libjava/java/rmi/server/Operation.java46
-rw-r--r--libjava/java/rmi/server/RMIClassLoader.java92
-rw-r--r--libjava/java/rmi/server/RMIClientSocketFactory.java37
-rw-r--r--libjava/java/rmi/server/RMIFailureHandler.java34
-rw-r--r--libjava/java/rmi/server/RMIServerSocketFactory.java37
-rw-r--r--libjava/java/rmi/server/RMISocketFactory.java74
-rw-r--r--libjava/java/rmi/server/RemoteCall.java46
-rw-r--r--libjava/java/rmi/server/RemoteObject.java119
-rw-r--r--libjava/java/rmi/server/RemoteRef.java51
-rw-r--r--libjava/java/rmi/server/RemoteServer.java56
-rw-r--r--libjava/java/rmi/server/RemoteStub.java47
-rw-r--r--libjava/java/rmi/server/ServerCloneException.java76
-rw-r--r--libjava/java/rmi/server/ServerNotActiveException.java43
-rw-r--r--libjava/java/rmi/server/ServerRef.java43
-rw-r--r--libjava/java/rmi/server/Skeleton.java39
-rw-r--r--libjava/java/rmi/server/SkeletonMismatchException.java41
-rw-r--r--libjava/java/rmi/server/SkeletonNotFoundException.java43
-rw-r--r--libjava/java/rmi/server/SocketSecurityException.java43
-rw-r--r--libjava/java/rmi/server/UID.java120
-rw-r--r--libjava/java/rmi/server/UnicastRemoteObject.java76
-rw-r--r--libjava/java/rmi/server/Unreferenced.java34
88 files changed, 8594 insertions, 60 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 9dbf8d1..350efc0 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,96 @@
+2001-08-27 Tom Tromey <tromey@redhat.com>
+
+ * java/rmi/activation/Activatable.java,
+ java/rmi/activation/ActivateFailedException.java,
+ java/rmi/activation/ActivationDesc.java,
+ java/rmi/activation/ActivationException.java,
+ java/rmi/activation/ActivationGroup.java,
+ java/rmi/activation/ActivationGroupDesc.java,
+ java/rmi/activation/ActivationGroupID.java,
+ java/rmi/activation/ActivationID.java,
+ java/rmi/activation/ActivationInstantiator.java,
+ java/rmi/activation/ActivationMonitor.java,
+ java/rmi/activation/ActivationSystem.java,
+ java/rmi/activation/Activator.java,
+ java/rmi/activation/UnknownGroupException.java,
+ java/rmi/activation/UnknownObjectException.java,
+ java/rmi/AccessException.java,
+ java/rmi/AlreadyBoundException.java,
+ java/rmi/ConnectException.java, java/rmi/ConnectIOException.java,
+ java/rmi/MarshalException.java, java/rmi/MarshalledObject.java,
+ java/rmi/Naming.java, java/rmi/NoSuchObjectException.java,
+ java/rmi/NotBoundException.java,
+ java/rmi/RMISecurityException.java,
+ java/rmi/RMISecurityManager.java, java/rmi/Remote.java,
+ java/rmi/RemoteException.java, java/rmi/ServerError.java,
+ java/rmi/ServerException.java,
+ java/rmi/ServerRuntimeException.java,
+ java/rmi/StubNotFoundException.java,
+ java/rmi/UnexpectedException.java,
+ java/rmi/UnknownHostException.java,
+ java/rmi/UnmarshalException.java, java/rmi/dgc/DGC.java,
+ java/rmi/dgc/Lease.java, java/rmi/dgc/VMID.java,
+ java/rmi/registry/LocateRegistry.java,
+ java/rmi/registry/Registry.java,
+ java/rmi/registry/RegistryHandler.java,
+ java/rmi/server/ExportException.java,
+ java/rmi/server/LoaderHandler.java,
+ java/rmi/server/LogStream.java, java/rmi/server/ObjID.java,
+ java/rmi/server/Operation.java,
+ java/rmi/server/RMIClassLoader.java,
+ java/rmi/server/RMIClientSocketFactory.java,
+ java/rmi/server/RMIFailureHandler.java,
+ java/rmi/server/RMIServerSocketFactory.java,
+ java/rmi/server/RMISocketFactory.java,
+ java/rmi/server/RemoteCall.java,
+ java/rmi/server/RemoteObject.java, java/rmi/server/RemoteRef.java,
+ java/rmi/server/RemoteServer.java,
+ java/rmi/server/RemoteStub.java,
+ java/rmi/server/ServerCloneException.java,
+ java/rmi/server/ServerNotActiveException.java,
+ java/rmi/server/ServerRef.java, java/rmi/server/Skeleton.java,
+ java/rmi/server/SkeletonMismatchException.java,
+ java/rmi/server/SkeletonNotFoundException.java,
+ java/rmi/server/SocketSecurityException.java,
+ java/rmi/server/UID.java,
+ java/rmi/server/UnicastRemoteObject.java,
+ java/rmi/server/Unreferenced.java, gnu/java/rmi/dgc/DGCImpl.java,
+ gnu/java/rmi/dgc/DGCImpl_Skel.java,
+ gnu/java/rmi/dgc/DGCImpl_Stub.java,
+ gnu/java/rmi/registry/RegistryImpl.java,
+ gnu/java/rmi/registry/RegistryImpl_Skel.java,
+ gnu/java/rmi/registry/RegistryImpl_Stub.java,
+ gnu/java/rmi/rmic/RMIC.java, gnu/java/rmi/rmic/TabbedWriter.java,
+ gnu/java/rmi/server/ProtocolConstants.java,
+ gnu/java/rmi/server/RMIDefaultSocketFactory.java,
+ gnu/java/rmi/server/RMIHashes.java,
+ gnu/java/rmi/server/RMIObjectInputStream.java,
+ gnu/java/rmi/server/RMIObjectOutputStream.java,
+ gnu/java/rmi/server/UnicastConnection.java,
+ gnu/java/rmi/server/UnicastConnectionManager.java,
+ gnu/java/rmi/server/UnicastRef.java,
+ gnu/java/rmi/server/UnicastRemoteCall.java,
+ gnu/java/rmi/server/UnicastRemoteStub.java,
+ gnu/java/rmi/server/UnicastServer.java,
+ gnu/java/rmi/server/UnicastServerRef.java: RMI implementation from
+ Kaffe. Relabelled classes to fit into Classpath tree.
+ * Makefile.in: Rebuilt.
+ * Makefile.am (rmi_java_source_files): New macro.
+ (ordinary_java_source_files): Reference it.
+ (bin_PROGRAMS): Added rmic and rmiregistry.
+ (rmic_SOURCES): New macro.
+ (EXTRA_rmic_SOURCES): Likewise.
+ (rmic_LDFLAGS): Likewise.
+ (rmic_LINK): Likewise.
+ (rmic_LDADD): Likewise.
+ (rmic_DEPENDENCIES): Likewise.
+ (rmiregistry_SOURCES): New macro.
+ (EXTRA_rmiregistry_SOURCES): Likewise.
+ (rmiregistry_LDFLAGS): Likewise.
+ (rmiregistry_LINK): Likewise.
+ (rmiregistry_LDADD): Likewise.
+ (rmiregistry_DEPENDENCIES): Likewise.
+
2001-08-26 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* name-finder.cc (lookup): Ignore a null dli_fname from dladdr.
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index b764803..bcff10a 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -35,7 +35,7 @@ data_DATA = libgcj.jar
## For now, only on native systems. FIXME.
if NATIVE
-bin_PROGRAMS = jv-convert gij
+bin_PROGRAMS = jv-convert gij rmic rmiregistry
endif
bin_SCRIPTS = addr2name.awk
@@ -435,6 +435,38 @@ gij_LDADD = libgcj.la $(GCLIBS) $(THREADLIBS) $(ZLIBS) -L$(here)/.libs
## linking this program.
gij_DEPENDENCIES = $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
+rmic_SOURCES =
+## This is a dummy definition.
+EXTRA_rmic_SOURCES = $(rmi_java_source_files)
+rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \
+ -rpath $(toolexeclibdir) -shared-libgcc
+rmic_LINK = $(GCJLINK)
+## We explicitly link in the libraries we need. This way we don't
+## need -nodefaultlibs, so we can still rely on gcj picking up the
+## system libraries we need (via the specs file).
+## We need the -L so that gcj can find libgcj with `-lgcj'.
+## FIXME: should be _libs on some systems.
+rmic_LDADD = libgcj.la $(GCLIBS) $(THREADLIBS) $(ZLIBS) -L$(here)/.libs
+## Depend on the spec file to make sure it is up to date before
+## linking this program.
+rmic_DEPENDENCIES = $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
+
+rmiregistry_SOURCES =
+## This is a dummy definition.
+EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files)
+rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \
+ -rpath $(toolexeclibdir) -shared-libgcc
+rmiregistry_LINK = $(GCJLINK)
+## We explicitly link in the libraries we need. This way we don't
+## need -nodefaultlibs, so we can still rely on gcj picking up the
+## system libraries we need (via the specs file).
+## We need the -L so that gcj can find libgcj with `-lgcj'.
+## FIXME: should be _libs on some systems.
+rmiregistry_LDADD = libgcj.la $(GCLIBS) $(THREADLIBS) $(ZLIBS) -L$(here)/.libs
+## Depend on the spec file to make sure it is up to date before
+## linking this program.
+rmiregistry_DEPENDENCIES = $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
+
# The Unicode consortium does not permit re-distributing the file JIS0201.TXT.
# You can get it from ftp://ftp.unicode.org/Public/MAPPINGS/EASTASIA/JIS/.
@@ -769,6 +801,93 @@ java/beans/VetoableChangeListener.java \
java/beans/VetoableChangeSupport.java \
java/beans/Visibility.java
+rmi_java_source_files = \
+java/rmi/activation/Activatable.java \
+java/rmi/activation/ActivateFailedException.java \
+java/rmi/activation/ActivationDesc.java \
+java/rmi/activation/ActivationException.java \
+java/rmi/activation/ActivationGroup.java \
+java/rmi/activation/ActivationGroupDesc.java \
+java/rmi/activation/ActivationGroupID.java \
+java/rmi/activation/ActivationID.java \
+java/rmi/activation/ActivationInstantiator.java \
+java/rmi/activation/ActivationMonitor.java \
+java/rmi/activation/ActivationSystem.java \
+java/rmi/activation/Activator.java \
+java/rmi/activation/UnknownGroupException.java \
+java/rmi/activation/UnknownObjectException.java \
+java/rmi/AccessException.java \
+java/rmi/AlreadyBoundException.java \
+java/rmi/ConnectException.java \
+java/rmi/ConnectIOException.java \
+java/rmi/MarshalException.java \
+java/rmi/MarshalledObject.java \
+java/rmi/Naming.java \
+java/rmi/NoSuchObjectException.java \
+java/rmi/NotBoundException.java \
+java/rmi/RMISecurityException.java \
+java/rmi/RMISecurityManager.java \
+java/rmi/Remote.java \
+java/rmi/RemoteException.java \
+java/rmi/ServerError.java \
+java/rmi/ServerException.java \
+java/rmi/ServerRuntimeException.java \
+java/rmi/StubNotFoundException.java \
+java/rmi/UnexpectedException.java \
+java/rmi/UnknownHostException.java \
+java/rmi/UnmarshalException.java \
+java/rmi/dgc/DGC.java \
+java/rmi/dgc/Lease.java \
+java/rmi/dgc/VMID.java \
+java/rmi/registry/LocateRegistry.java \
+java/rmi/registry/Registry.java \
+java/rmi/registry/RegistryHandler.java \
+java/rmi/server/ExportException.java \
+java/rmi/server/LoaderHandler.java \
+java/rmi/server/LogStream.java \
+java/rmi/server/ObjID.java \
+java/rmi/server/Operation.java \
+java/rmi/server/RMIClassLoader.java \
+java/rmi/server/RMIClientSocketFactory.java \
+java/rmi/server/RMIFailureHandler.java \
+java/rmi/server/RMIServerSocketFactory.java \
+java/rmi/server/RMISocketFactory.java \
+java/rmi/server/RemoteCall.java \
+java/rmi/server/RemoteObject.java \
+java/rmi/server/RemoteRef.java \
+java/rmi/server/RemoteServer.java \
+java/rmi/server/RemoteStub.java \
+java/rmi/server/ServerCloneException.java \
+java/rmi/server/ServerNotActiveException.java \
+java/rmi/server/ServerRef.java \
+java/rmi/server/Skeleton.java \
+java/rmi/server/SkeletonMismatchException.java \
+java/rmi/server/SkeletonNotFoundException.java \
+java/rmi/server/SocketSecurityException.java \
+java/rmi/server/UID.java \
+java/rmi/server/UnicastRemoteObject.java \
+java/rmi/server/Unreferenced.java \
+gnu/java/rmi/dgc/DGCImpl.java \
+gnu/java/rmi/dgc/DGCImpl_Skel.java \
+gnu/java/rmi/dgc/DGCImpl_Stub.java \
+gnu/java/rmi/registry/RegistryImpl.java \
+gnu/java/rmi/registry/RegistryImpl_Skel.java \
+gnu/java/rmi/registry/RegistryImpl_Stub.java \
+gnu/java/rmi/rmic/RMIC.java \
+gnu/java/rmi/rmic/TabbedWriter.java \
+gnu/java/rmi/server/ProtocolConstants.java \
+gnu/java/rmi/server/RMIDefaultSocketFactory.java \
+gnu/java/rmi/server/RMIHashes.java \
+gnu/java/rmi/server/RMIObjectInputStream.java \
+gnu/java/rmi/server/RMIObjectOutputStream.java \
+gnu/java/rmi/server/UnicastConnection.java \
+gnu/java/rmi/server/UnicastConnectionManager.java \
+gnu/java/rmi/server/UnicastRef.java \
+gnu/java/rmi/server/UnicastRemoteCall.java \
+gnu/java/rmi/server/UnicastRemoteStub.java \
+gnu/java/rmi/server/UnicastServer.java \
+gnu/java/rmi/server/UnicastServerRef.java
+
## Java files which are created by configure and thus are in the build
## directory.
built_java_source_files = java/lang/ConcreteProcess.java \
@@ -1309,6 +1428,7 @@ org/xml/sax/SAXNotSupportedException.java \
org/xml/sax/SAXParseException.java \
org/xml/sax/XMLFilter.java \
org/xml/sax/XMLReader.java \
+$(rmi_java_source_files) \
$(awt_java_source_files) \
$(convert_source_files)
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index 3e976bf..38aa7f1 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated automatically by automake 1.4-p1 from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@@ -123,26 +123,38 @@ libgcj_basedir = @libgcj_basedir@
mkinstalldirs = @mkinstalldirs@
AUTOMAKE_OPTIONS = foreign
-@TESTSUBDIR_TRUE@SUBDIRS = $(DIRLTDL) testsuite gcj include
-@TESTSUBDIR_FALSE@SUBDIRS = $(DIRLTDL) gcj include
-@USE_LIBDIR_TRUE@toolexeclibdir = $(libdir)$(MULTISUBDIR)
-@USE_LIBDIR_FALSE@toolexeclibdir = $(toolexecdir)/lib$(MULTISUBDIR)
-@USE_LIBDIR_FALSE@toolexecdir = $(exec_prefix)/$(target_alias)
-@XLIB_AWT_TRUE@cond_x_ltlibrary = libgcjx.la
-@XLIB_AWT_FALSE@cond_x_ltlibrary =
+@TESTSUBDIR_TRUE@SUBDIRS = \
+@TESTSUBDIR_TRUE@$(DIRLTDL) testsuite gcj include
+@TESTSUBDIR_FALSE@SUBDIRS = \
+@TESTSUBDIR_FALSE@$(DIRLTDL) gcj include
+@USE_LIBDIR_TRUE@toolexeclibdir = \
+@USE_LIBDIR_TRUE@$(libdir)$(MULTISUBDIR)
+@USE_LIBDIR_FALSE@toolexeclibdir = \
+@USE_LIBDIR_FALSE@$(toolexecdir)/lib$(MULTISUBDIR)
+@USE_LIBDIR_FALSE@toolexecdir = \
+@USE_LIBDIR_FALSE@$(exec_prefix)/$(target_alias)
+@XLIB_AWT_TRUE@cond_x_ltlibrary = \
+@XLIB_AWT_TRUE@libgcjx.la
+@XLIB_AWT_FALSE@cond_x_ltlibrary = \
toolexeclib_LTLIBRARIES = libgcj.la $(cond_x_ltlibrary)
toolexeclib_DATA = libgcj.spec
data_DATA = libgcj.jar
-@NATIVE_TRUE@bin_PROGRAMS = jv-convert gij
+@NATIVE_TRUE@bin_PROGRAMS = \
+@NATIVE_TRUE@jv-convert gij rmic rmiregistry
bin_SCRIPTS = addr2name.awk
-@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = $(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar$(EXEEXT)
-@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = jar
-@CANADIAN_FALSE@ZIP = $(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar$(EXEEXT)
-@CANADIAN_TRUE@GCJH = gcjh
-@CANADIAN_FALSE@GCJH = $(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT)
+@CANADIAN_TRUE@@NULL_TARGET_TRUE@ZIP = \
+@CANADIAN_TRUE@@NULL_TARGET_TRUE@$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar$(EXEEXT)
+@CANADIAN_TRUE@@NULL_TARGET_FALSE@ZIP = \
+@CANADIAN_TRUE@@NULL_TARGET_FALSE@jar
+@CANADIAN_FALSE@ZIP = \
+@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/jar$(EXEEXT)
+@CANADIAN_TRUE@GCJH = \
+@CANADIAN_TRUE@gcjh
+@CANADIAN_FALSE@GCJH = \
+@CANADIAN_FALSE@$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh$(EXEEXT)
GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8
@@ -157,38 +169,52 @@ JAVAC = $(GCJ_WITH_FLAGS) -C
GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@
WARNINGS = -W -Wall
-AM_CXXFLAGS = -fno-rtti -fnon-call-exceptions -fdollars-in-identifiers @LIBGCJ_CXXFLAGS@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE -DPREFIX="\"$(prefix)\""
+AM_CXXFLAGS = -fno-rtti -fnon-call-exceptions \
+ -fdollars-in-identifiers \
+ @LIBGCJ_CXXFLAGS@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE \
+ -DPREFIX="\"$(prefix)\""
-@USING_GCC_TRUE@AM_CFLAGS = @LIBGCJ_CFLAGS@ $(WARNINGS)
-@USING_GCC_FALSE@AM_CFLAGS = @LIBGCJ_CFLAGS@
+@USING_GCC_TRUE@AM_CFLAGS = \
+@USING_GCC_TRUE@@LIBGCJ_CFLAGS@ $(WARNINGS)
+@USING_GCC_FALSE@AM_CFLAGS = \
+@USING_GCC_FALSE@@LIBGCJ_CFLAGS@
JCFLAGS = -g
JC1FLAGS = @LIBGCJ_JAVAFLAGS@ $(GCJFLAGS)
LIBFFIINCS = @LIBFFIINCS@
-INCLUDES = -I$(top_srcdir) -Iinclude -I$(top_srcdir)/include $(GCINCS) $(THREADINCS) $(INCLTDL) $(GCC_UNWIND_INCLUDE) $(ZINCS) $(LIBFFIINCS)
+INCLUDES = -I$(top_srcdir) -Iinclude -I$(top_srcdir)/include \
+ $(GCINCS) $(THREADINCS) $(INCLTDL) \
+ $(GCC_UNWIND_INCLUDE) $(ZINCS) $(LIBFFIINCS)
nat_files = $(nat_source_files:.cc=.lo)
x_nat_files = $(x_nat_source_files:.cc=.lo)
c_files = $(c_source_files:.c=.lo)
-javao_files = $(java_source_files:.java=.lo) $(built_java_source_files:.java=.lo)
+javao_files = $(java_source_files:.java=.lo) \
+ $(built_java_source_files:.java=.lo)
x_javao_files = $(x_java_source_files:.java=.lo)
-libgcj_la_SOURCES = prims.cc posix.cc jni.cc exception.cc resolve.cc defineclass.cc interpret.cc name-finder.cc $(nat_source_files)
+libgcj_la_SOURCES = prims.cc posix.cc jni.cc exception.cc \
+ resolve.cc defineclass.cc interpret.cc name-finder.cc \
+ $(nat_source_files)
-EXTRA_libgcj_la_SOURCES = boehm.cc nogc.cc posix-threads.cc no-threads.cc $(c_source_files) $(java_source_files) $(built_java_source_files)
+EXTRA_libgcj_la_SOURCES = boehm.cc nogc.cc posix-threads.cc no-threads.cc \
+ $(c_source_files) $(java_source_files) $(built_java_source_files)
-libgcj_la_DEPENDENCIES = libgcj.jar $(javao_files) $(c_files) $(GCOBJS) $(THREADOBJS) $(LIBLTDL)
+libgcj_la_DEPENDENCIES = libgcj.jar $(javao_files) \
+ $(c_files) $(GCOBJS) $(THREADOBJS) $(LIBLTDL)
-libgcj_la_LIBADD = $(javao_files) $(c_files) $(GCOBJS) $(THREADOBJS)
+libgcj_la_LIBADD = $(javao_files) $(c_files) $(GCOBJS) \
+ $(THREADOBJS)
# Include THREADLIBS here to ensure that the correct version of
# certain linuxthread functions get linked:
-libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLIBS) $(LIBLTDL) -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLIBS) $(LIBLTDL) \
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version`
libgcj_la_LINK = $(LIBLINK)
@@ -196,7 +222,9 @@ libgcjx_la_SOURCES = $(x_nat_source_files)
EXTRA_libgcjx_la_SOURCES = $(x_java_source_files)
libgcjx_la_DEPENDENCIES = libgcj.jar $(x_javao_files)
libgcjx_la_LIBADD = $(x_javao_files)
-libgcjx_la_LDFLAGS = @X_PRE_LIBS@ @X_LIBS@ -lX11 @X_EXTRA_LIBS@ -rpath $(toolexeclibdir) -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+libgcjx_la_LDFLAGS = @X_PRE_LIBS@ @X_LIBS@ -lX11 @X_EXTRA_LIBS@ \
+ -rpath $(toolexeclibdir) \
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version`
libgcjx_la_LINK = $(LIBLINK)
@@ -205,7 +233,10 @@ CLEANFILES = tmp-list libgcj.jar
SUFFIXES = .class .java .h
-nat_headers = $(ordinary_java_source_files:.java=.h) $(built_java_source_files:.java=.h) java/io/ObjectOutputStream$$PutField.h java/io/ObjectInputStream$$GetField.h
+nat_headers = $(ordinary_java_source_files:.java=.h) \
+ $(built_java_source_files:.java=.h) \
+ java/io/ObjectOutputStream$$PutField.h \
+ java/io/ObjectInputStream$$GetField.h
x_nat_headers = $(x_java_source_files:.java=.h)
@@ -214,18 +245,22 @@ extra_headers = java/lang/Object.h java/lang/Class.h
NM = nm
-@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = gen-from-JIS
+@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = \
+@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS
CONVERT_DIR = gnu/gcj/convert
jv_convert_SOURCES =
EXTRA_jv_convert_SOURCES = $(convert_source_files)
-jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert -rpath $(toolexeclibdir) -shared-libgcc
+jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \
+ -rpath $(toolexeclibdir) -shared-libgcc
jv_convert_LINK = $(GCJLINK)
-jv_convert_LDADD = $(convert_source_files:.java=.lo) libgcj.la $(GCLIBS) $(THREADLIBS) $(ZLIBS) -L$(here)/.libs
+jv_convert_LDADD = $(convert_source_files:.java=.lo) libgcj.la \
+ $(GCLIBS) $(THREADLIBS) $(ZLIBS) -L$(here)/.libs
-jv_convert_DEPENDENCIES = $(convert_source_files:.java=.lo) $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
+jv_convert_DEPENDENCIES = $(convert_source_files:.java=.lo) \
+ $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
gij_SOURCES = gij.cc
@@ -234,50 +269,1078 @@ gij_LINK = $(GCJLINK)
gij_LDADD = libgcj.la $(GCLIBS) $(THREADLIBS) $(ZLIBS) -L$(here)/.libs
gij_DEPENDENCIES = $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
-gen_from_JIS_SOURCES =
-EXTRA_gen_from_JIS_SOURCES = $(srcdir)/$(CONVERT_DIR)/gen-from-JIS.c $(srcdir)/$(CONVERT_DIR)/make-trie.c $(srcdir)/$(CONVERT_DIR)/JIS0201.h $(srcdir)/$(CONVERT_DIR)/JIS0208.h $(srcdir)/$(CONVERT_DIR)/JIS0212.h
-
-gen_from_JIS_LDADD = $(CONVERT_DIR)/gen-from-JIS.o $(CONVERT_DIR)/make-trie.o
-gen_from_JIS_DEPENDENCIES = $(CONVERT_DIR)/gen-from-JIS.o $(CONVERT_DIR)/make-trie.o
-
-
-convert_source_files = gnu/gcj/convert/BytesToUnicode.java gnu/gcj/convert/Convert.java gnu/gcj/convert/Input_8859_1.java gnu/gcj/convert/Input_ASCII.java gnu/gcj/convert/Input_EUCJIS.java gnu/gcj/convert/Input_JavaSrc.java gnu/gcj/convert/Input_SJIS.java gnu/gcj/convert/Input_UTF8.java gnu/gcj/convert/Input_iconv.java gnu/gcj/convert/IOConverter.java gnu/gcj/convert/Output_8859_1.java gnu/gcj/convert/Output_ASCII.java gnu/gcj/convert/Output_EUCJIS.java gnu/gcj/convert/Output_JavaSrc.java gnu/gcj/convert/Output_SJIS.java gnu/gcj/convert/Output_UTF8.java gnu/gcj/convert/Output_iconv.java gnu/gcj/convert/UnicodeToBytes.java
+rmic_SOURCES =
+EXTRA_rmic_SOURCES = $(rmi_java_source_files)
+rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \
+ -rpath $(toolexeclibdir) -shared-libgcc
+rmic_LINK = $(GCJLINK)
+rmic_LDADD = libgcj.la $(GCLIBS) $(THREADLIBS) $(ZLIBS) -L$(here)/.libs
+rmic_DEPENDENCIES = $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
-special_java_source_files = java/lang/Class.java java/lang/Object.java
-
-awt_java_source_files = gnu/awt/LightweightRedirector.java gnu/awt/j2d/AbstractGraphicsState.java gnu/awt/j2d/DirectRasterGraphics.java gnu/awt/j2d/Graphics2DImpl.java gnu/awt/j2d/IntegerGraphicsState.java gnu/awt/j2d/MappedRaster.java gnu/gcj/awt/BitMaskExtent.java gnu/gcj/awt/Buffers.java gnu/gcj/awt/ComponentDataBlitOp.java gnu/gcj/awt/GLightweightPeer.java gnu/java/beans/editors/ColorEditor.java gnu/java/beans/editors/FontEditor.java gnu/java/beans/editors/NativeBooleanEditor.java gnu/java/beans/editors/NativeByteEditor.java gnu/java/beans/editors/NativeDoubleEditor.java gnu/java/beans/editors/NativeFloatEditor.java gnu/java/beans/editors/NativeIntEditor.java gnu/java/beans/editors/NativeLongEditor.java gnu/java/beans/editors/NativeShortEditor.java gnu/java/beans/editors/StringEditor.java gnu/java/beans/info/ComponentBeanInfo.java gnu/java/beans/BeanInfoEmbryo.java gnu/java/beans/EmptyBeanInfo.java gnu/java/beans/ExplicitBeanInfo.java gnu/java/beans/IntrospectionIncubator.java java/applet/Applet.java java/applet/AppletStub.java java/applet/AppletContext.java java/applet/AudioClip.java java/awt/AWTError.java java/awt/AWTEvent.java java/awt/AWTEventMulticaster.java java/awt/AWTException.java java/awt/AWTPermission.java java/awt/ActiveEvent.java java/awt/Adjustable.java java/awt/BorderLayout.java java/awt/Button.java java/awt/Canvas.java java/awt/CardLayout.java java/awt/Checkbox.java java/awt/CheckboxGroup.java java/awt/CheckboxMenuItem.java java/awt/Choice.java java/awt/Color.java java/awt/Component.java java/awt/ComponentOrientation.java java/awt/Container.java java/awt/Cursor.java java/awt/Dialog.java java/awt/Dimension.java java/awt/Event.java java/awt/EventDispatchThread.java java/awt/EventQueue.java java/awt/FileDialog.java java/awt/FlowLayout.java java/awt/Font.java java/awt/FontMetrics.java java/awt/Frame.java java/awt/Graphics.java java/awt/Graphics2D.java java/awt/GraphicsConfiguration.java java/awt/GridBagConstraints.java java/awt/GridLayout.java java/awt/IllegalComponentStateException.java java/awt/Image.java java/awt/Insets.java java/awt/ItemSelectable.java java/awt/Label.java java/awt/LayoutManager.java java/awt/LayoutManager2.java java/awt/List.java java/awt/Menu.java java/awt/MenuBar.java java/awt/MenuComponent.java java/awt/MenuContainer.java java/awt/MenuItem.java java/awt/MenuShortcut.java java/awt/Paint.java java/awt/PaintContext.java java/awt/Panel.java java/awt/Point.java java/awt/Polygon.java java/awt/PopupMenu.java java/awt/Rectangle.java java/awt/RenderingHints.java java/awt/ScrollPane.java java/awt/Scrollbar.java java/awt/Shape.java java/awt/SystemColor.java java/awt/TextArea.java java/awt/TextComponent.java java/awt/TextField.java java/awt/Toolkit.java java/awt/Transparency.java java/awt/Window.java java/awt/color/ColorSpace.java java/awt/color/ICC_ColorSpace.java java/awt/color/ICC_Profile.java java/awt/datatransfer/Clipboard.java java/awt/event/AWTEventListener.java java/awt/event/ActionEvent.java java/awt/event/ActionListener.java java/awt/event/AdjustmentEvent.java java/awt/event/AdjustmentListener.java java/awt/event/ComponentAdapter.java java/awt/event/ComponentEvent.java java/awt/event/ComponentListener.java java/awt/event/ContainerAdapter.java java/awt/event/ContainerEvent.java java/awt/event/ContainerListener.java java/awt/event/FocusAdapter.java java/awt/event/FocusEvent.java java/awt/event/FocusListener.java java/awt/event/HierarchyBoundsAdapter.java java/awt/event/HierarchyBoundsListener.java java/awt/event/HierarchyEvent.java java/awt/event/HierarchyListener.java java/awt/event/InputEvent.java java/awt/event/InputMethodEvent.java java/awt/event/InputMethodListener.java java/awt/event/InvocationEvent.java java/awt/event/ItemEvent.java java/awt/event/ItemListener.java java/awt/event/KeyAdapter.java java/awt/event/KeyEvent.java java/awt/event/KeyListener.java java/awt/event/MouseAdapter.java java/awt/event/MouseEvent.java java/awt/event/MouseListener.java java/awt/event/MouseMotionAdapter.java java/awt/event/MouseMotionListener.java java/awt/event/PaintEvent.java java/awt/event/TextEvent.java java/awt/event/TextListener.java java/awt/event/WindowAdapter.java java/awt/event/WindowEvent.java java/awt/event/WindowListener.java java/awt/geom/AffineTransform.java java/awt/geom/Dimension2D.java java/awt/geom/Ellipse2D.java java/awt/geom/IllegalPathStateException.java java/awt/geom/Line2D.java java/awt/geom/NoninvertibleTransformException.java java/awt/geom/PathIterator.java java/awt/geom/Point2D.java java/awt/geom/Rectangle2D.java java/awt/geom/RectangularShape.java java/awt/geom/RoundRectangle2D.java java/awt/image/BufferedImage.java java/awt/image/ColorModel.java java/awt/image/ComponentColorModel.java java/awt/image/ComponentSampleModel.java java/awt/image/DataBuffer.java java/awt/image/DataBufferByte.java java/awt/image/DataBufferInt.java java/awt/image/DataBufferUShort.java java/awt/image/DirectColorModel.java java/awt/image/ImageConsumer.java java/awt/image/ImageObserver.java java/awt/image/ImageProducer.java java/awt/image/IndexColorModel.java java/awt/image/PackedColorModel.java java/awt/image/Raster.java java/awt/image/RasterOp.java java/awt/image/SampleModel.java java/awt/image/SinglePixelPackedSampleModel.java java/awt/image/WritableRaster.java java/awt/peer/ButtonPeer.java java/awt/peer/CanvasPeer.java java/awt/peer/CheckboxMenuItemPeer.java java/awt/peer/CheckboxPeer.java java/awt/peer/ChoicePeer.java java/awt/peer/ComponentPeer.java java/awt/peer/ContainerPeer.java java/awt/peer/DialogPeer.java java/awt/peer/FileDialogPeer.java java/awt/peer/FontPeer.java java/awt/peer/FramePeer.java java/awt/peer/LabelPeer.java java/awt/peer/LightweightPeer.java java/awt/peer/ListPeer.java java/awt/peer/MenuBarPeer.java java/awt/peer/MenuComponentPeer.java java/awt/peer/MenuItemPeer.java java/awt/peer/MenuPeer.java java/awt/peer/PanelPeer.java java/awt/peer/PopupMenuPeer.java java/awt/peer/ScrollPanePeer.java java/awt/peer/ScrollbarPeer.java java/awt/peer/TextAreaPeer.java java/awt/peer/TextComponentPeer.java java/awt/peer/TextFieldPeer.java java/awt/peer/WindowPeer.java java/beans/beancontext/BeanContext.java java/beans/beancontext/BeanContextChild.java java/beans/beancontext/BeanContextChildComponentProxy.java java/beans/beancontext/BeanContextChildSupport.java java/beans/beancontext/BeanContextContainerProxy.java java/beans/beancontext/BeanContextEvent.java java/beans/beancontext/BeanContextMembershipEvent.java java/beans/beancontext/BeanContextMembershipListener.java java/beans/beancontext/BeanContextProxy.java java/beans/beancontext/BeanContextServiceAvailableEvent.java java/beans/beancontext/BeanContextServiceProvider.java java/beans/beancontext/BeanContextServiceProviderBeanInfo.java java/beans/beancontext/BeanContextServiceRevokedEvent.java java/beans/beancontext/BeanContextServiceRevokedListener.java java/beans/beancontext/BeanContextServices.java java/beans/beancontext/BeanContextServicesListener.java java/beans/BeanDescriptor.java java/beans/BeanInfo.java java/beans/Beans.java java/beans/Customizer.java java/beans/DesignMode.java java/beans/EventSetDescriptor.java java/beans/FeatureDescriptor.java java/beans/IndexedPropertyDescriptor.java java/beans/IntrospectionException.java java/beans/Introspector.java java/beans/MethodDescriptor.java java/beans/ParameterDescriptor.java java/beans/PropertyChangeEvent.java java/beans/PropertyChangeListener.java java/beans/PropertyChangeSupport.java java/beans/PropertyDescriptor.java java/beans/PropertyEditor.java java/beans/PropertyEditorManager.java java/beans/PropertyEditorSupport.java java/beans/PropertyVetoException.java java/beans/SimpleBeanInfo.java java/beans/VetoableChangeListener.java java/beans/VetoableChangeSupport.java java/beans/Visibility.java
+rmiregistry_SOURCES =
+EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files)
+rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \
+ -rpath $(toolexeclibdir) -shared-libgcc
+rmiregistry_LINK = $(GCJLINK)
+rmiregistry_LDADD = libgcj.la $(GCLIBS) $(THREADLIBS) $(ZLIBS) -L$(here)/.libs
+rmiregistry_DEPENDENCIES = $(GCDEPS) $(THREADDEPS) $(ZDEPS) libgcj.la libgcj.spec
-built_java_source_files = java/lang/ConcreteProcess.java gnu/classpath/Configuration.java
+gen_from_JIS_SOURCES =
+EXTRA_gen_from_JIS_SOURCES = $(srcdir)/$(CONVERT_DIR)/gen-from-JIS.c \
+ $(srcdir)/$(CONVERT_DIR)/make-trie.c \
+ $(srcdir)/$(CONVERT_DIR)/JIS0201.h \
+ $(srcdir)/$(CONVERT_DIR)/JIS0208.h \
+ $(srcdir)/$(CONVERT_DIR)/JIS0212.h
+gen_from_JIS_LDADD = $(CONVERT_DIR)/gen-from-JIS.o $(CONVERT_DIR)/make-trie.o
+gen_from_JIS_DEPENDENCIES = $(CONVERT_DIR)/gen-from-JIS.o \
+ $(CONVERT_DIR)/make-trie.o
+
+
+convert_source_files = \
+gnu/gcj/convert/BytesToUnicode.java \
+gnu/gcj/convert/Convert.java \
+gnu/gcj/convert/Input_8859_1.java \
+gnu/gcj/convert/Input_ASCII.java \
+gnu/gcj/convert/Input_EUCJIS.java \
+gnu/gcj/convert/Input_JavaSrc.java \
+gnu/gcj/convert/Input_SJIS.java \
+gnu/gcj/convert/Input_UTF8.java \
+gnu/gcj/convert/Input_iconv.java \
+gnu/gcj/convert/IOConverter.java \
+gnu/gcj/convert/Output_8859_1.java \
+gnu/gcj/convert/Output_ASCII.java \
+gnu/gcj/convert/Output_EUCJIS.java \
+gnu/gcj/convert/Output_JavaSrc.java \
+gnu/gcj/convert/Output_SJIS.java \
+gnu/gcj/convert/Output_UTF8.java \
+gnu/gcj/convert/Output_iconv.java \
+gnu/gcj/convert/UnicodeToBytes.java
-core_java_source_files = java/lang/AbstractMethodError.java java/lang/ArithmeticException.java java/lang/ArrayIndexOutOfBoundsException.java java/lang/ArrayStoreException.java java/lang/Boolean.java java/lang/Byte.java java/lang/Character.java java/lang/ClassCastException.java java/lang/ClassCircularityError.java java/lang/ClassFormatError.java java/lang/ClassLoader.java java/lang/ClassNotFoundException.java java/lang/CloneNotSupportedException.java java/lang/Cloneable.java java/lang/Comparable.java java/lang/Compiler.java java/lang/Double.java java/lang/Error.java java/lang/Exception.java java/lang/ExceptionInInitializerError.java java/lang/Float.java java/lang/IllegalAccessError.java java/lang/IllegalAccessException.java java/lang/IllegalArgumentException.java java/lang/IllegalMonitorStateException.java java/lang/IllegalStateException.java java/lang/IllegalThreadStateException.java java/lang/IncompatibleClassChangeError.java java/lang/IndexOutOfBoundsException.java java/lang/InstantiationError.java java/lang/InstantiationException.java java/lang/Integer.java java/lang/InternalError.java java/lang/InterruptedException.java java/lang/LinkageError.java java/lang/Long.java java/lang/Math.java java/lang/NegativeArraySizeException.java java/lang/NoClassDefFoundError.java java/lang/NoSuchFieldError.java java/lang/NoSuchFieldException.java java/lang/NoSuchMethodError.java java/lang/NoSuchMethodException.java java/lang/NullPointerException.java java/lang/Number.java java/lang/NumberFormatException.java java/lang/OutOfMemoryError.java java/lang/Package.java java/lang/Process.java java/lang/Runnable.java java/lang/Runtime.java java/lang/RuntimeException.java java/lang/RuntimePermission.java java/lang/SecurityException.java java/lang/SecurityManager.java java/lang/Short.java java/lang/StackOverflowError.java java/lang/String.java java/lang/StringBuffer.java java/lang/StringIndexOutOfBoundsException.java java/lang/System.java java/lang/Thread.java java/lang/ThreadDeath.java java/lang/ThreadGroup.java java/lang/ThreadLocal.java java/lang/Throwable.java java/lang/UnknownError.java java/lang/UnsatisfiedLinkError.java java/lang/UnsupportedOperationException.java java/lang/VerifyError.java java/lang/VirtualMachineError.java java/lang/VMClassLoader.java java/lang/Void.java java/io/BufferedInputStream.java java/io/BufferedOutputStream.java java/io/BufferedReader.java java/io/BufferedWriter.java java/io/ByteArrayInputStream.java java/io/ByteArrayOutputStream.java java/io/CharArrayReader.java java/io/CharArrayWriter.java java/io/CharConversionException.java java/io/DataInput.java java/io/DataInputStream.java java/io/DataOutput.java java/io/DataOutputStream.java java/io/EOFException.java java/io/Externalizable.java java/io/File.java java/io/FileDescriptor.java java/io/FileFilter.java java/io/FileInputStream.java java/io/FileNotFoundException.java java/io/FileOutputStream.java java/io/FilePermission.java java/io/FileReader.java java/io/FileWriter.java java/io/FilenameFilter.java java/io/FilterInputStream.java java/io/FilterOutputStream.java java/io/FilterReader.java java/io/FilterWriter.java java/io/IOException.java java/io/InputStream.java java/io/InputStreamReader.java java/io/InterruptedIOException.java java/io/InvalidClassException.java java/io/InvalidObjectException.java java/io/LineNumberInputStream.java java/io/LineNumberReader.java java/io/NotActiveException.java java/io/NotSerializableException.java java/io/ObjectInput.java java/io/ObjectInputStream.java java/io/ObjectInputValidation.java java/io/ObjectOutput.java java/io/ObjectOutputStream.java java/io/ObjectStreamClass.java java/io/ObjectStreamConstants.java java/io/ObjectStreamException.java java/io/ObjectStreamField.java java/io/OptionalDataException.java java/io/OutputStream.java java/io/OutputStreamWriter.java java/io/PipedInputStream.java java/io/PipedOutputStream.java java/io/PipedReader.java java/io/PipedWriter.java java/io/PrintStream.java java/io/PrintWriter.java java/io/PushbackInputStream.java java/io/PushbackReader.java java/io/RandomAccessFile.java java/io/Reader.java java/io/SequenceInputStream.java java/io/Serializable.java java/io/SerializablePermission.java java/io/StreamCorruptedException.java java/io/StreamTokenizer.java java/io/StringBufferInputStream.java java/io/StringReader.java java/io/StringWriter.java java/io/SyncFailedException.java java/io/UTFDataFormatException.java java/io/UnsupportedEncodingException.java java/io/WriteAbortedException.java java/io/Writer.java java/util/AbstractCollection.java java/util/AbstractList.java java/util/AbstractMap.java java/util/AbstractSequentialList.java java/util/AbstractSet.java java/util/ArrayList.java java/util/Arrays.java java/util/BasicMapEntry.java java/util/BitSet.java java/util/Calendar.java java/util/Collection.java java/util/Collections.java java/util/Comparator.java java/util/ConcurrentModificationException.java java/util/Date.java java/util/Dictionary.java java/util/EmptyStackException.java java/util/Enumeration.java java/util/EventListener.java java/util/EventObject.java java/util/GregorianCalendar.java java/util/HashMap.java java/util/HashSet.java java/util/Hashtable.java java/util/IdentityHashMap.java java/util/Iterator.java java/util/LinkedList.java java/util/List.java java/util/ListIterator.java java/util/ListResourceBundle.java java/util/Locale.java java/util/Map.java java/util/MissingResourceException.java java/util/NoSuchElementException.java java/util/Observable.java java/util/Observer.java java/util/Properties.java java/util/PropertyPermission.java java/util/PropertyResourceBundle.java java/util/Random.java java/util/ResourceBundle.java java/util/Set.java java/util/SimpleTimeZone.java java/util/SortedMap.java java/util/SortedSet.java java/util/Stack.java java/util/StringTokenizer.java java/util/TimeZone.java java/util/Timer.java java/util/TimerTask.java java/util/TreeMap.java java/util/TreeSet.java java/util/TooManyListenersException.java java/util/Vector.java java/util/WeakHashMap.java
+special_java_source_files = java/lang/Class.java java/lang/Object.java
-ordinary_java_source_files = $(core_java_source_files) gnu/gcj/RawData.java gnu/gcj/io/DefaultMimeTypes.java gnu/gcj/io/MimeTypes.java gnu/gcj/io/SimpleSHSStream.java gnu/gcj/math/MPN.java gnu/gcj/protocol/file/Connection.java gnu/gcj/protocol/file/Handler.java gnu/gcj/protocol/http/Connection.java gnu/gcj/protocol/http/Handler.java gnu/gcj/protocol/jar/Connection.java gnu/gcj/protocol/jar/Handler.java gnu/gcj/runtime/FileDeleter.java gnu/gcj/runtime/FirstThread.java gnu/gcj/runtime/VMClassLoader.java gnu/gcj/text/BaseBreakIterator.java gnu/gcj/text/CharacterBreakIterator.java gnu/gcj/text/LineBreakIterator.java gnu/gcj/text/LocaleData_en.java gnu/gcj/text/LocaleData_en_US.java gnu/gcj/text/SentenceBreakIterator.java gnu/gcj/text/WordBreakIterator.java gnu/gcj/util/EnumerationChain.java gnu/java/io/ClassLoaderObjectInputStream.java gnu/java/io/NullOutputStream.java gnu/java/io/ObjectIdentityWrapper.java gnu/java/lang/ArrayHelper.java gnu/java/lang/ClassHelper.java gnu/java/lang/reflect/TypeSignature.java gnu/java/locale/Calendar.java gnu/java/locale/Calendar_de.java gnu/java/locale/Calendar_en.java gnu/java/locale/Calendar_nl.java gnu/java/security/provider/DefaultPolicy.java gnu/java/security/provider/Gnu.java gnu/java/security/provider/SHA.java gnu/java/security/provider/SHA1PRNG.java java/lang/ref/PhantomReference.java java/lang/ref/Reference.java java/lang/ref/ReferenceQueue.java java/lang/ref/SoftReference.java java/lang/ref/WeakReference.java java/lang/reflect/AccessibleObject.java java/lang/reflect/Array.java java/lang/reflect/Constructor.java java/lang/reflect/Field.java java/lang/reflect/InvocationTargetException.java java/lang/reflect/Member.java java/lang/reflect/Method.java java/lang/reflect/Modifier.java java/lang/reflect/ReflectPermission.java java/math/BigDecimal.java java/math/BigInteger.java java/net/BindException.java java/net/ConnectException.java java/net/ContentHandler.java java/net/ContentHandlerFactory.java java/net/DatagramPacket.java java/net/DatagramSocket.java java/net/DatagramSocketImpl.java java/net/FileNameMap.java java/net/HttpURLConnection.java java/net/InetAddress.java java/net/JarURLConnection.java java/net/MalformedURLException.java java/net/MulticastSocket.java java/net/NetPermission.java java/net/NoRouteToHostException.java java/net/PlainDatagramSocketImpl.java java/net/PlainSocketImpl.java java/net/ProtocolException.java java/net/ServerSocket.java java/net/Socket.java java/net/SocketException.java java/net/SocketImpl.java java/net/SocketImplFactory.java java/net/SocketOptions.java java/net/SocketPermission.java java/net/URL.java java/net/URLClassLoader.java java/net/URLConnection.java java/net/URLDecoder.java java/net/URLEncoder.java java/net/URLStreamHandler.java java/net/URLStreamHandlerFactory.java java/net/UnknownHostException.java java/net/UnknownServiceException.java java/security/AccessControlContext.java java/security/AccessControlException.java java/security/AccessController.java java/security/AlgorithmParameterGenerator.java java/security/AlgorithmParameters.java java/security/AlgorithmParameterGeneratorSpi.java java/security/AlgorithmParametersSpi.java java/security/AllPermission.java java/security/BasicPermission.java java/security/Certificate.java java/security/CodeSource.java java/security/DigestException.java java/security/DigestOutputStream.java java/security/DummyKeyPairGenerator.java java/security/DummySignature.java java/security/DigestInputStream.java java/security/DomainCombiner.java java/security/DummyMessageDigest.java java/security/GeneralSecurityException.java java/security/Guard.java java/security/GuardedObject.java java/security/Identity.java java/security/IdentityScope.java java/security/InvalidAlgorithmParameterException.java java/security/InvalidKeyException.java java/security/InvalidParameterException.java java/security/Key.java java/security/KeyFactorySpi.java java/security/KeyPairGenerator.java java/security/KeyStoreException.java java/security/KeyException.java java/security/KeyManagementException.java java/security/KeyPairGeneratorSpi.java java/security/KeyStoreSpi.java java/security/KeyFactory.java java/security/KeyPair.java java/security/KeyStore.java java/security/MessageDigest.java java/security/MessageDigestSpi.java java/security/NoSuchAlgorithmException.java java/security/NoSuchProviderException.java java/security/Permission.java java/security/Principal.java java/security/PrivilegedExceptionAction.java java/security/PublicKey.java java/security/PermissionCollection.java java/security/PrivateKey.java java/security/ProtectionDomain.java java/security/Permissions.java java/security/PrivilegedAction.java java/security/Provider.java java/security/Policy.java java/security/PrivilegedActionException.java java/security/ProviderException.java java/security/SecureClassLoader.java java/security/SecureRandomSpi.java java/security/SecurityPermission.java java/security/SignatureException.java java/security/SignedObject.java java/security/SecureRandom.java java/security/Security.java java/security/Signature.java java/security/SignatureSpi.java java/security/Signer.java java/security/UnrecoverableKeyException.java java/security/UnresolvedPermission.java java/security/acl/Acl.java java/security/acl/AclNotFoundException.java java/security/acl/LastOwnerException.java java/security/acl/Owner.java java/security/acl/AclEntry.java java/security/acl/Group.java java/security/acl/NotOwnerException.java java/security/acl/Permission.java java/security/cert/CRL.java java/security/cert/CRLException.java java/security/cert/Certificate.java java/security/cert/CertificateEncodingException.java java/security/cert/CertificateException.java java/security/cert/CertificateExpiredException.java java/security/cert/CertificateFactory.java java/security/cert/CertificateFactorySpi.java java/security/cert/CertificateNotYetValidException.java java/security/cert/CertificateParsingException.java java/security/cert/X509CRL.java java/security/cert/X509CRLEntry.java java/security/cert/X509Certificate.java java/security/cert/X509Extension.java java/security/interfaces/DSAKey.java java/security/interfaces/DSAKeyPairGenerator.java java/security/interfaces/DSAParams.java java/security/interfaces/DSAPrivateKey.java java/security/interfaces/DSAPublicKey.java java/security/interfaces/RSAKey.java java/security/interfaces/RSAPrivateCrtKey.java java/security/interfaces/RSAPrivateKey.java java/security/interfaces/RSAPublicKey.java java/security/spec/AlgorithmParameterSpec.java java/security/spec/DSAParameterSpec.java java/security/spec/DSAPrivateKeySpec.java java/security/spec/DSAPublicKeySpec.java java/security/spec/EncodedKeySpec.java java/security/spec/InvalidKeySpecException.java java/security/spec/InvalidParameterSpecException.java java/security/spec/KeySpec.java java/security/spec/PKCS8EncodedKeySpec.java java/security/spec/RSAKeyGenParameterSpec.java java/security/spec/RSAPrivateCrtKeySpec.java java/security/spec/RSAPrivateKeySpec.java java/security/spec/RSAPublicKeySpec.java java/security/spec/X509EncodedKeySpec.java java/sql/Array.java java/sql/BatchUpdateException.java java/sql/Blob.java java/sql/CallableStatement.java java/sql/Clob.java java/sql/Connection.java java/sql/DataTruncation.java java/sql/DatabaseMetaData.java java/sql/Date.java java/sql/Driver.java java/sql/DriverManager.java java/sql/DriverPropertyInfo.java java/sql/PreparedStatement.java java/sql/Ref.java java/sql/ResultSet.java java/sql/ResultSetMetaData.java java/sql/SQLData.java java/sql/SQLException.java java/sql/SQLInput.java java/sql/SQLOutput.java java/sql/SQLWarning.java java/sql/Statement.java java/sql/Struct.java java/sql/Time.java java/sql/Timestamp.java java/sql/Types.java java/text/BreakIterator.java java/text/CharacterIterator.java java/text/ChoiceFormat.java java/text/CollationElementIterator.java java/text/CollationKey.java java/text/Collator.java java/text/DateFormat.java java/text/DateFormatSymbols.java java/text/DecimalFormat.java java/text/DecimalFormatSymbols.java java/text/FieldPosition.java java/text/Format.java java/text/MessageFormat.java java/text/NumberFormat.java java/text/ParseException.java java/text/ParsePosition.java java/text/RuleBasedCollator.java java/text/SimpleDateFormat.java java/text/StringCharacterIterator.java java/util/jar/Attributes.java java/util/jar/JarEntry.java java/util/jar/JarException.java java/util/jar/JarFile.java java/util/jar/JarInputStream.java java/util/jar/JarOutputStream.java java/util/jar/Manifest.java java/util/zip/Adler32.java java/util/zip/CRC32.java java/util/zip/CheckedInputStream.java java/util/zip/CheckedOutputStream.java java/util/zip/Checksum.java java/util/zip/DataFormatException.java java/util/zip/Deflater.java java/util/zip/DeflaterOutputStream.java java/util/zip/GZIPInputStream.java java/util/zip/GZIPOutputStream.java java/util/zip/Inflater.java java/util/zip/InflaterInputStream.java java/util/zip/ZipConstants.java java/util/zip/ZipEntry.java java/util/zip/ZipException.java java/util/zip/ZipFile.java java/util/zip/ZipInputStream.java java/util/zip/ZipOutputStream.java org/w3c/dom/Attr.java org/w3c/dom/CDATASection.java org/w3c/dom/CharacterData.java org/w3c/dom/Comment.java org/w3c/dom/DOMException.java org/w3c/dom/DOMImplementation.java org/w3c/dom/Document.java org/w3c/dom/DocumentFragment.java org/w3c/dom/DocumentType.java org/w3c/dom/Element.java org/w3c/dom/Entity.java org/w3c/dom/EntityReference.java org/w3c/dom/NamedNodeMap.java org/w3c/dom/Node.java org/w3c/dom/NodeList.java org/w3c/dom/Notation.java org/w3c/dom/ProcessingInstruction.java org/w3c/dom/Text.java org/w3c/dom/ranges/DocumentRange.java org/w3c/dom/ranges/Range.java org/w3c/dom/ranges/RangeException.java org/w3c/dom/traversal/DocumentTraversal.java org/w3c/dom/traversal/NodeFilter.java org/w3c/dom/traversal/NodeIterator.java org/w3c/dom/traversal/TreeWalker.java org/xml/sax/ext/DeclHandler.java org/xml/sax/ext/LexicalHandler.java org/xml/sax/helpers/AttributeListImpl.java org/xml/sax/helpers/AttributesImpl.java org/xml/sax/helpers/DefaultHandler.java org/xml/sax/helpers/LocatorImpl.java org/xml/sax/helpers/NamespaceSupport.java org/xml/sax/helpers/ParserAdapter.java org/xml/sax/helpers/ParserFactory.java org/xml/sax/helpers/XMLFilterImpl.java org/xml/sax/helpers/XMLReaderAdapter.java org/xml/sax/helpers/XMLReaderFactory.java org/xml/sax/AttributeList.java org/xml/sax/Attributes.java org/xml/sax/ContentHandler.java org/xml/sax/DTDHandler.java org/xml/sax/DocumentHandler.java org/xml/sax/EntityResolver.java org/xml/sax/ErrorHandler.java org/xml/sax/HandlerBase.java org/xml/sax/InputSource.java org/xml/sax/Locator.java org/xml/sax/Parser.java org/xml/sax/SAXException.java org/xml/sax/SAXNotRecognizedException.java org/xml/sax/SAXNotSupportedException.java org/xml/sax/SAXParseException.java org/xml/sax/XMLFilter.java org/xml/sax/XMLReader.java $(awt_java_source_files) $(convert_source_files)
+awt_java_source_files = \
+gnu/awt/LightweightRedirector.java \
+gnu/awt/j2d/AbstractGraphicsState.java \
+gnu/awt/j2d/DirectRasterGraphics.java \
+gnu/awt/j2d/Graphics2DImpl.java \
+gnu/awt/j2d/IntegerGraphicsState.java \
+gnu/awt/j2d/MappedRaster.java \
+gnu/gcj/awt/BitMaskExtent.java \
+gnu/gcj/awt/Buffers.java \
+gnu/gcj/awt/ComponentDataBlitOp.java \
+gnu/gcj/awt/GLightweightPeer.java \
+gnu/java/beans/editors/ColorEditor.java \
+gnu/java/beans/editors/FontEditor.java \
+gnu/java/beans/editors/NativeBooleanEditor.java \
+gnu/java/beans/editors/NativeByteEditor.java \
+gnu/java/beans/editors/NativeDoubleEditor.java \
+gnu/java/beans/editors/NativeFloatEditor.java \
+gnu/java/beans/editors/NativeIntEditor.java \
+gnu/java/beans/editors/NativeLongEditor.java \
+gnu/java/beans/editors/NativeShortEditor.java \
+gnu/java/beans/editors/StringEditor.java \
+gnu/java/beans/info/ComponentBeanInfo.java \
+gnu/java/beans/BeanInfoEmbryo.java \
+gnu/java/beans/EmptyBeanInfo.java \
+gnu/java/beans/ExplicitBeanInfo.java \
+gnu/java/beans/IntrospectionIncubator.java \
+java/applet/Applet.java \
+java/applet/AppletStub.java \
+java/applet/AppletContext.java \
+java/applet/AudioClip.java \
+java/awt/AWTError.java \
+java/awt/AWTEvent.java \
+java/awt/AWTEventMulticaster.java \
+java/awt/AWTException.java \
+java/awt/AWTPermission.java \
+java/awt/ActiveEvent.java \
+java/awt/Adjustable.java \
+java/awt/BorderLayout.java \
+java/awt/Button.java \
+java/awt/Canvas.java \
+java/awt/CardLayout.java \
+java/awt/Checkbox.java \
+java/awt/CheckboxGroup.java \
+java/awt/CheckboxMenuItem.java \
+java/awt/Choice.java \
+java/awt/Color.java \
+java/awt/Component.java \
+java/awt/ComponentOrientation.java \
+java/awt/Container.java \
+java/awt/Cursor.java \
+java/awt/Dialog.java \
+java/awt/Dimension.java \
+java/awt/Event.java \
+java/awt/EventDispatchThread.java \
+java/awt/EventQueue.java \
+java/awt/FileDialog.java \
+java/awt/FlowLayout.java \
+java/awt/Font.java \
+java/awt/FontMetrics.java \
+java/awt/Frame.java \
+java/awt/Graphics.java \
+java/awt/Graphics2D.java \
+java/awt/GraphicsConfiguration.java \
+java/awt/GridBagConstraints.java \
+java/awt/GridLayout.java \
+java/awt/IllegalComponentStateException.java \
+java/awt/Image.java \
+java/awt/Insets.java \
+java/awt/ItemSelectable.java \
+java/awt/Label.java \
+java/awt/LayoutManager.java \
+java/awt/LayoutManager2.java \
+java/awt/List.java \
+java/awt/Menu.java \
+java/awt/MenuBar.java \
+java/awt/MenuComponent.java \
+java/awt/MenuContainer.java \
+java/awt/MenuItem.java \
+java/awt/MenuShortcut.java \
+java/awt/Paint.java \
+java/awt/PaintContext.java \
+java/awt/Panel.java \
+java/awt/Point.java \
+java/awt/Polygon.java \
+java/awt/PopupMenu.java \
+java/awt/Rectangle.java \
+java/awt/RenderingHints.java \
+java/awt/ScrollPane.java \
+java/awt/Scrollbar.java \
+java/awt/Shape.java \
+java/awt/SystemColor.java \
+java/awt/TextArea.java \
+java/awt/TextComponent.java \
+java/awt/TextField.java \
+java/awt/Toolkit.java \
+java/awt/Transparency.java \
+java/awt/Window.java \
+java/awt/color/ColorSpace.java \
+java/awt/color/ICC_ColorSpace.java \
+java/awt/color/ICC_Profile.java \
+java/awt/datatransfer/Clipboard.java \
+java/awt/event/AWTEventListener.java \
+java/awt/event/ActionEvent.java \
+java/awt/event/ActionListener.java \
+java/awt/event/AdjustmentEvent.java \
+java/awt/event/AdjustmentListener.java \
+java/awt/event/ComponentAdapter.java \
+java/awt/event/ComponentEvent.java \
+java/awt/event/ComponentListener.java \
+java/awt/event/ContainerAdapter.java \
+java/awt/event/ContainerEvent.java \
+java/awt/event/ContainerListener.java \
+java/awt/event/FocusAdapter.java \
+java/awt/event/FocusEvent.java \
+java/awt/event/FocusListener.java \
+java/awt/event/HierarchyBoundsAdapter.java \
+java/awt/event/HierarchyBoundsListener.java \
+java/awt/event/HierarchyEvent.java \
+java/awt/event/HierarchyListener.java \
+java/awt/event/InputEvent.java \
+java/awt/event/InputMethodEvent.java \
+java/awt/event/InputMethodListener.java \
+java/awt/event/InvocationEvent.java \
+java/awt/event/ItemEvent.java \
+java/awt/event/ItemListener.java \
+java/awt/event/KeyAdapter.java \
+java/awt/event/KeyEvent.java \
+java/awt/event/KeyListener.java \
+java/awt/event/MouseAdapter.java \
+java/awt/event/MouseEvent.java \
+java/awt/event/MouseListener.java \
+java/awt/event/MouseMotionAdapter.java \
+java/awt/event/MouseMotionListener.java \
+java/awt/event/PaintEvent.java \
+java/awt/event/TextEvent.java \
+java/awt/event/TextListener.java \
+java/awt/event/WindowAdapter.java \
+java/awt/event/WindowEvent.java \
+java/awt/event/WindowListener.java \
+java/awt/geom/AffineTransform.java \
+java/awt/geom/Dimension2D.java \
+java/awt/geom/Ellipse2D.java \
+java/awt/geom/IllegalPathStateException.java \
+java/awt/geom/Line2D.java \
+java/awt/geom/NoninvertibleTransformException.java \
+java/awt/geom/PathIterator.java \
+java/awt/geom/Point2D.java \
+java/awt/geom/Rectangle2D.java \
+java/awt/geom/RectangularShape.java \
+java/awt/geom/RoundRectangle2D.java \
+java/awt/image/BufferedImage.java \
+java/awt/image/ColorModel.java \
+java/awt/image/ComponentColorModel.java \
+java/awt/image/ComponentSampleModel.java \
+java/awt/image/DataBuffer.java \
+java/awt/image/DataBufferByte.java \
+java/awt/image/DataBufferInt.java \
+java/awt/image/DataBufferUShort.java \
+java/awt/image/DirectColorModel.java \
+java/awt/image/ImageConsumer.java \
+java/awt/image/ImageObserver.java \
+java/awt/image/ImageProducer.java \
+java/awt/image/IndexColorModel.java \
+java/awt/image/PackedColorModel.java \
+java/awt/image/Raster.java \
+java/awt/image/RasterOp.java \
+java/awt/image/SampleModel.java \
+java/awt/image/SinglePixelPackedSampleModel.java \
+java/awt/image/WritableRaster.java \
+java/awt/peer/ButtonPeer.java \
+java/awt/peer/CanvasPeer.java \
+java/awt/peer/CheckboxMenuItemPeer.java \
+java/awt/peer/CheckboxPeer.java \
+java/awt/peer/ChoicePeer.java \
+java/awt/peer/ComponentPeer.java \
+java/awt/peer/ContainerPeer.java \
+java/awt/peer/DialogPeer.java \
+java/awt/peer/FileDialogPeer.java \
+java/awt/peer/FontPeer.java \
+java/awt/peer/FramePeer.java \
+java/awt/peer/LabelPeer.java \
+java/awt/peer/LightweightPeer.java \
+java/awt/peer/ListPeer.java \
+java/awt/peer/MenuBarPeer.java \
+java/awt/peer/MenuComponentPeer.java \
+java/awt/peer/MenuItemPeer.java \
+java/awt/peer/MenuPeer.java \
+java/awt/peer/PanelPeer.java \
+java/awt/peer/PopupMenuPeer.java \
+java/awt/peer/ScrollPanePeer.java \
+java/awt/peer/ScrollbarPeer.java \
+java/awt/peer/TextAreaPeer.java \
+java/awt/peer/TextComponentPeer.java \
+java/awt/peer/TextFieldPeer.java \
+java/awt/peer/WindowPeer.java \
+java/beans/beancontext/BeanContext.java \
+java/beans/beancontext/BeanContextChild.java \
+java/beans/beancontext/BeanContextChildComponentProxy.java \
+java/beans/beancontext/BeanContextChildSupport.java \
+java/beans/beancontext/BeanContextContainerProxy.java \
+java/beans/beancontext/BeanContextEvent.java \
+java/beans/beancontext/BeanContextMembershipEvent.java \
+java/beans/beancontext/BeanContextMembershipListener.java \
+java/beans/beancontext/BeanContextProxy.java \
+java/beans/beancontext/BeanContextServiceAvailableEvent.java \
+java/beans/beancontext/BeanContextServiceProvider.java \
+java/beans/beancontext/BeanContextServiceProviderBeanInfo.java \
+java/beans/beancontext/BeanContextServiceRevokedEvent.java \
+java/beans/beancontext/BeanContextServiceRevokedListener.java \
+java/beans/beancontext/BeanContextServices.java \
+java/beans/beancontext/BeanContextServicesListener.java \
+java/beans/BeanDescriptor.java \
+java/beans/BeanInfo.java \
+java/beans/Beans.java \
+java/beans/Customizer.java \
+java/beans/DesignMode.java \
+java/beans/EventSetDescriptor.java \
+java/beans/FeatureDescriptor.java \
+java/beans/IndexedPropertyDescriptor.java \
+java/beans/IntrospectionException.java \
+java/beans/Introspector.java \
+java/beans/MethodDescriptor.java \
+java/beans/ParameterDescriptor.java \
+java/beans/PropertyChangeEvent.java \
+java/beans/PropertyChangeListener.java \
+java/beans/PropertyChangeSupport.java \
+java/beans/PropertyDescriptor.java \
+java/beans/PropertyEditor.java \
+java/beans/PropertyEditorManager.java \
+java/beans/PropertyEditorSupport.java \
+java/beans/PropertyVetoException.java \
+java/beans/SimpleBeanInfo.java \
+java/beans/VetoableChangeListener.java \
+java/beans/VetoableChangeSupport.java \
+java/beans/Visibility.java
+
+
+rmi_java_source_files = \
+java/rmi/activation/Activatable.java \
+java/rmi/activation/ActivateFailedException.java \
+java/rmi/activation/ActivationDesc.java \
+java/rmi/activation/ActivationException.java \
+java/rmi/activation/ActivationGroup.java \
+java/rmi/activation/ActivationGroupDesc.java \
+java/rmi/activation/ActivationGroupID.java \
+java/rmi/activation/ActivationID.java \
+java/rmi/activation/ActivationInstantiator.java \
+java/rmi/activation/ActivationMonitor.java \
+java/rmi/activation/ActivationSystem.java \
+java/rmi/activation/Activator.java \
+java/rmi/activation/UnknownGroupException.java \
+java/rmi/activation/UnknownObjectException.java \
+java/rmi/AccessException.java \
+java/rmi/AlreadyBoundException.java \
+java/rmi/ConnectException.java \
+java/rmi/ConnectIOException.java \
+java/rmi/MarshalException.java \
+java/rmi/MarshalledObject.java \
+java/rmi/Naming.java \
+java/rmi/NoSuchObjectException.java \
+java/rmi/NotBoundException.java \
+java/rmi/RMISecurityException.java \
+java/rmi/RMISecurityManager.java \
+java/rmi/Remote.java \
+java/rmi/RemoteException.java \
+java/rmi/ServerError.java \
+java/rmi/ServerException.java \
+java/rmi/ServerRuntimeException.java \
+java/rmi/StubNotFoundException.java \
+java/rmi/UnexpectedException.java \
+java/rmi/UnknownHostException.java \
+java/rmi/UnmarshalException.java \
+java/rmi/dgc/DGC.java \
+java/rmi/dgc/Lease.java \
+java/rmi/dgc/VMID.java \
+java/rmi/registry/LocateRegistry.java \
+java/rmi/registry/Registry.java \
+java/rmi/registry/RegistryHandler.java \
+java/rmi/server/ExportException.java \
+java/rmi/server/LoaderHandler.java \
+java/rmi/server/LogStream.java \
+java/rmi/server/ObjID.java \
+java/rmi/server/Operation.java \
+java/rmi/server/RMIClassLoader.java \
+java/rmi/server/RMIClientSocketFactory.java \
+java/rmi/server/RMIFailureHandler.java \
+java/rmi/server/RMIServerSocketFactory.java \
+java/rmi/server/RMISocketFactory.java \
+java/rmi/server/RemoteCall.java \
+java/rmi/server/RemoteObject.java \
+java/rmi/server/RemoteRef.java \
+java/rmi/server/RemoteServer.java \
+java/rmi/server/RemoteStub.java \
+java/rmi/server/ServerCloneException.java \
+java/rmi/server/ServerNotActiveException.java \
+java/rmi/server/ServerRef.java \
+java/rmi/server/Skeleton.java \
+java/rmi/server/SkeletonMismatchException.java \
+java/rmi/server/SkeletonNotFoundException.java \
+java/rmi/server/SocketSecurityException.java \
+java/rmi/server/UID.java \
+java/rmi/server/UnicastRemoteObject.java \
+java/rmi/server/Unreferenced.java \
+gnu/java/rmi/dgc/DGCImpl.java \
+gnu/java/rmi/dgc/DGCImpl_Skel.java \
+gnu/java/rmi/dgc/DGCImpl_Stub.java \
+gnu/java/rmi/registry/RegistryImpl.java \
+gnu/java/rmi/registry/RegistryImpl_Skel.java \
+gnu/java/rmi/registry/RegistryImpl_Stub.java \
+gnu/java/rmi/rmic/RMIC.java \
+gnu/java/rmi/rmic/TabbedWriter.java \
+gnu/java/rmi/server/ProtocolConstants.java \
+gnu/java/rmi/server/RMIDefaultSocketFactory.java \
+gnu/java/rmi/server/RMIHashes.java \
+gnu/java/rmi/server/RMIObjectInputStream.java \
+gnu/java/rmi/server/RMIObjectOutputStream.java \
+gnu/java/rmi/server/UnicastConnection.java \
+gnu/java/rmi/server/UnicastConnectionManager.java \
+gnu/java/rmi/server/UnicastRef.java \
+gnu/java/rmi/server/UnicastRemoteCall.java \
+gnu/java/rmi/server/UnicastRemoteStub.java \
+gnu/java/rmi/server/UnicastServer.java \
+gnu/java/rmi/server/UnicastServerRef.java
+
+
+built_java_source_files = java/lang/ConcreteProcess.java \
+ gnu/classpath/Configuration.java
+
+
+core_java_source_files = \
+java/lang/AbstractMethodError.java \
+java/lang/ArithmeticException.java \
+java/lang/ArrayIndexOutOfBoundsException.java \
+java/lang/ArrayStoreException.java \
+java/lang/Boolean.java \
+java/lang/Byte.java \
+java/lang/Character.java \
+java/lang/ClassCastException.java \
+java/lang/ClassCircularityError.java \
+java/lang/ClassFormatError.java \
+java/lang/ClassLoader.java \
+java/lang/ClassNotFoundException.java \
+java/lang/CloneNotSupportedException.java \
+java/lang/Cloneable.java \
+java/lang/Comparable.java \
+java/lang/Compiler.java \
+java/lang/Double.java \
+java/lang/Error.java \
+java/lang/Exception.java \
+java/lang/ExceptionInInitializerError.java \
+java/lang/Float.java \
+java/lang/IllegalAccessError.java \
+java/lang/IllegalAccessException.java \
+java/lang/IllegalArgumentException.java \
+java/lang/IllegalMonitorStateException.java \
+java/lang/IllegalStateException.java \
+java/lang/IllegalThreadStateException.java \
+java/lang/IncompatibleClassChangeError.java \
+java/lang/IndexOutOfBoundsException.java \
+java/lang/InstantiationError.java \
+java/lang/InstantiationException.java \
+java/lang/Integer.java \
+java/lang/InternalError.java \
+java/lang/InterruptedException.java \
+java/lang/LinkageError.java \
+java/lang/Long.java \
+java/lang/Math.java \
+java/lang/NegativeArraySizeException.java \
+java/lang/NoClassDefFoundError.java \
+java/lang/NoSuchFieldError.java \
+java/lang/NoSuchFieldException.java \
+java/lang/NoSuchMethodError.java \
+java/lang/NoSuchMethodException.java \
+java/lang/NullPointerException.java \
+java/lang/Number.java \
+java/lang/NumberFormatException.java \
+java/lang/OutOfMemoryError.java \
+java/lang/Package.java \
+java/lang/Process.java \
+java/lang/Runnable.java \
+java/lang/Runtime.java \
+java/lang/RuntimeException.java \
+java/lang/RuntimePermission.java \
+java/lang/SecurityException.java \
+java/lang/SecurityManager.java \
+java/lang/Short.java \
+java/lang/StackOverflowError.java \
+java/lang/String.java \
+java/lang/StringBuffer.java \
+java/lang/StringIndexOutOfBoundsException.java \
+java/lang/System.java \
+java/lang/Thread.java \
+java/lang/ThreadDeath.java \
+java/lang/ThreadGroup.java \
+java/lang/ThreadLocal.java \
+java/lang/Throwable.java \
+java/lang/UnknownError.java \
+java/lang/UnsatisfiedLinkError.java \
+java/lang/UnsupportedOperationException.java \
+java/lang/VerifyError.java \
+java/lang/VirtualMachineError.java \
+java/lang/VMClassLoader.java \
+java/lang/Void.java \
+java/io/BufferedInputStream.java \
+java/io/BufferedOutputStream.java \
+java/io/BufferedReader.java \
+java/io/BufferedWriter.java \
+java/io/ByteArrayInputStream.java \
+java/io/ByteArrayOutputStream.java \
+java/io/CharArrayReader.java \
+java/io/CharArrayWriter.java \
+java/io/CharConversionException.java \
+java/io/DataInput.java \
+java/io/DataInputStream.java \
+java/io/DataOutput.java \
+java/io/DataOutputStream.java \
+java/io/EOFException.java \
+java/io/Externalizable.java \
+java/io/File.java \
+java/io/FileDescriptor.java \
+java/io/FileFilter.java \
+java/io/FileInputStream.java \
+java/io/FileNotFoundException.java \
+java/io/FileOutputStream.java \
+java/io/FilePermission.java \
+java/io/FileReader.java \
+java/io/FileWriter.java \
+java/io/FilenameFilter.java \
+java/io/FilterInputStream.java \
+java/io/FilterOutputStream.java \
+java/io/FilterReader.java \
+java/io/FilterWriter.java \
+java/io/IOException.java \
+java/io/InputStream.java \
+java/io/InputStreamReader.java \
+java/io/InterruptedIOException.java \
+java/io/InvalidClassException.java \
+java/io/InvalidObjectException.java \
+java/io/LineNumberInputStream.java \
+java/io/LineNumberReader.java \
+java/io/NotActiveException.java \
+java/io/NotSerializableException.java \
+java/io/ObjectInput.java \
+java/io/ObjectInputStream.java \
+java/io/ObjectInputValidation.java \
+java/io/ObjectOutput.java \
+java/io/ObjectOutputStream.java \
+java/io/ObjectStreamClass.java \
+java/io/ObjectStreamConstants.java \
+java/io/ObjectStreamException.java \
+java/io/ObjectStreamField.java \
+java/io/OptionalDataException.java \
+java/io/OutputStream.java \
+java/io/OutputStreamWriter.java \
+java/io/PipedInputStream.java \
+java/io/PipedOutputStream.java \
+java/io/PipedReader.java \
+java/io/PipedWriter.java \
+java/io/PrintStream.java \
+java/io/PrintWriter.java \
+java/io/PushbackInputStream.java \
+java/io/PushbackReader.java \
+java/io/RandomAccessFile.java \
+java/io/Reader.java \
+java/io/SequenceInputStream.java \
+java/io/Serializable.java \
+java/io/SerializablePermission.java \
+java/io/StreamCorruptedException.java \
+java/io/StreamTokenizer.java \
+java/io/StringBufferInputStream.java \
+java/io/StringReader.java \
+java/io/StringWriter.java \
+java/io/SyncFailedException.java \
+java/io/UTFDataFormatException.java \
+java/io/UnsupportedEncodingException.java \
+java/io/WriteAbortedException.java \
+java/io/Writer.java \
+java/util/AbstractCollection.java \
+java/util/AbstractList.java \
+java/util/AbstractMap.java \
+java/util/AbstractSequentialList.java \
+java/util/AbstractSet.java \
+java/util/ArrayList.java \
+java/util/Arrays.java \
+java/util/BasicMapEntry.java \
+java/util/BitSet.java \
+java/util/Calendar.java \
+java/util/Collection.java \
+java/util/Collections.java \
+java/util/Comparator.java \
+java/util/ConcurrentModificationException.java \
+java/util/Date.java \
+java/util/Dictionary.java \
+java/util/EmptyStackException.java \
+java/util/Enumeration.java \
+java/util/EventListener.java \
+java/util/EventObject.java \
+java/util/GregorianCalendar.java \
+java/util/HashMap.java \
+java/util/HashSet.java \
+java/util/Hashtable.java \
+java/util/IdentityHashMap.java \
+java/util/Iterator.java \
+java/util/LinkedList.java \
+java/util/List.java \
+java/util/ListIterator.java \
+java/util/ListResourceBundle.java \
+java/util/Locale.java \
+java/util/Map.java \
+java/util/MissingResourceException.java \
+java/util/NoSuchElementException.java \
+java/util/Observable.java \
+java/util/Observer.java \
+java/util/Properties.java \
+java/util/PropertyPermission.java \
+java/util/PropertyResourceBundle.java \
+java/util/Random.java \
+java/util/ResourceBundle.java \
+java/util/Set.java \
+java/util/SimpleTimeZone.java \
+java/util/SortedMap.java \
+java/util/SortedSet.java \
+java/util/Stack.java \
+java/util/StringTokenizer.java \
+java/util/TimeZone.java \
+java/util/Timer.java \
+java/util/TimerTask.java \
+java/util/TreeMap.java \
+java/util/TreeSet.java \
+java/util/TooManyListenersException.java \
+java/util/Vector.java \
+java/util/WeakHashMap.java
+
+
+ordinary_java_source_files = $(core_java_source_files) \
+gnu/gcj/RawData.java \
+gnu/gcj/io/DefaultMimeTypes.java \
+gnu/gcj/io/MimeTypes.java \
+gnu/gcj/io/SimpleSHSStream.java \
+gnu/gcj/math/MPN.java \
+gnu/gcj/protocol/file/Connection.java \
+gnu/gcj/protocol/file/Handler.java \
+gnu/gcj/protocol/http/Connection.java \
+gnu/gcj/protocol/http/Handler.java \
+gnu/gcj/protocol/jar/Connection.java \
+gnu/gcj/protocol/jar/Handler.java \
+gnu/gcj/runtime/FileDeleter.java \
+gnu/gcj/runtime/FirstThread.java \
+gnu/gcj/runtime/VMClassLoader.java \
+gnu/gcj/text/BaseBreakIterator.java \
+gnu/gcj/text/CharacterBreakIterator.java \
+gnu/gcj/text/LineBreakIterator.java \
+gnu/gcj/text/LocaleData_en.java \
+gnu/gcj/text/LocaleData_en_US.java \
+gnu/gcj/text/SentenceBreakIterator.java \
+gnu/gcj/text/WordBreakIterator.java \
+gnu/gcj/util/EnumerationChain.java \
+gnu/java/io/ClassLoaderObjectInputStream.java \
+gnu/java/io/NullOutputStream.java \
+gnu/java/io/ObjectIdentityWrapper.java \
+gnu/java/lang/ArrayHelper.java \
+gnu/java/lang/ClassHelper.java \
+gnu/java/lang/reflect/TypeSignature.java \
+gnu/java/locale/Calendar.java \
+gnu/java/locale/Calendar_de.java \
+gnu/java/locale/Calendar_en.java \
+gnu/java/locale/Calendar_nl.java \
+gnu/java/security/provider/DefaultPolicy.java \
+gnu/java/security/provider/Gnu.java \
+gnu/java/security/provider/SHA.java \
+gnu/java/security/provider/SHA1PRNG.java \
+java/lang/ref/PhantomReference.java \
+java/lang/ref/Reference.java \
+java/lang/ref/ReferenceQueue.java \
+java/lang/ref/SoftReference.java \
+java/lang/ref/WeakReference.java \
+java/lang/reflect/AccessibleObject.java \
+java/lang/reflect/Array.java \
+java/lang/reflect/Constructor.java \
+java/lang/reflect/Field.java \
+java/lang/reflect/InvocationTargetException.java \
+java/lang/reflect/Member.java \
+java/lang/reflect/Method.java \
+java/lang/reflect/Modifier.java \
+java/lang/reflect/ReflectPermission.java \
+java/math/BigDecimal.java \
+java/math/BigInteger.java \
+java/net/BindException.java \
+java/net/ConnectException.java \
+java/net/ContentHandler.java \
+java/net/ContentHandlerFactory.java \
+java/net/DatagramPacket.java \
+java/net/DatagramSocket.java \
+java/net/DatagramSocketImpl.java \
+java/net/FileNameMap.java \
+java/net/HttpURLConnection.java \
+java/net/InetAddress.java \
+java/net/JarURLConnection.java \
+java/net/MalformedURLException.java \
+java/net/MulticastSocket.java \
+java/net/NetPermission.java \
+java/net/NoRouteToHostException.java \
+java/net/PlainDatagramSocketImpl.java \
+java/net/PlainSocketImpl.java \
+java/net/ProtocolException.java \
+java/net/ServerSocket.java \
+java/net/Socket.java \
+java/net/SocketException.java \
+java/net/SocketImpl.java \
+java/net/SocketImplFactory.java \
+java/net/SocketOptions.java \
+java/net/SocketPermission.java \
+java/net/URL.java \
+java/net/URLClassLoader.java \
+java/net/URLConnection.java \
+java/net/URLDecoder.java \
+java/net/URLEncoder.java \
+java/net/URLStreamHandler.java \
+java/net/URLStreamHandlerFactory.java \
+java/net/UnknownHostException.java \
+java/net/UnknownServiceException.java \
+java/security/AccessControlContext.java \
+java/security/AccessControlException.java \
+java/security/AccessController.java \
+java/security/AlgorithmParameterGenerator.java \
+java/security/AlgorithmParameters.java \
+java/security/AlgorithmParameterGeneratorSpi.java \
+java/security/AlgorithmParametersSpi.java \
+java/security/AllPermission.java \
+java/security/BasicPermission.java \
+java/security/Certificate.java \
+java/security/CodeSource.java \
+java/security/DigestException.java \
+java/security/DigestOutputStream.java \
+java/security/DummyKeyPairGenerator.java \
+java/security/DummySignature.java \
+java/security/DigestInputStream.java \
+java/security/DomainCombiner.java \
+java/security/DummyMessageDigest.java \
+java/security/GeneralSecurityException.java \
+java/security/Guard.java \
+java/security/GuardedObject.java \
+java/security/Identity.java \
+java/security/IdentityScope.java \
+java/security/InvalidAlgorithmParameterException.java \
+java/security/InvalidKeyException.java \
+java/security/InvalidParameterException.java \
+java/security/Key.java \
+java/security/KeyFactorySpi.java \
+java/security/KeyPairGenerator.java \
+java/security/KeyStoreException.java \
+java/security/KeyException.java \
+java/security/KeyManagementException.java \
+java/security/KeyPairGeneratorSpi.java \
+java/security/KeyStoreSpi.java \
+java/security/KeyFactory.java \
+java/security/KeyPair.java \
+java/security/KeyStore.java \
+java/security/MessageDigest.java \
+java/security/MessageDigestSpi.java \
+java/security/NoSuchAlgorithmException.java \
+java/security/NoSuchProviderException.java \
+java/security/Permission.java \
+java/security/Principal.java \
+java/security/PrivilegedExceptionAction.java \
+java/security/PublicKey.java \
+java/security/PermissionCollection.java \
+java/security/PrivateKey.java \
+java/security/ProtectionDomain.java \
+java/security/Permissions.java \
+java/security/PrivilegedAction.java \
+java/security/Provider.java \
+java/security/Policy.java \
+java/security/PrivilegedActionException.java \
+java/security/ProviderException.java \
+java/security/SecureClassLoader.java \
+java/security/SecureRandomSpi.java \
+java/security/SecurityPermission.java \
+java/security/SignatureException.java \
+java/security/SignedObject.java \
+java/security/SecureRandom.java \
+java/security/Security.java \
+java/security/Signature.java \
+java/security/SignatureSpi.java \
+java/security/Signer.java \
+java/security/UnrecoverableKeyException.java \
+java/security/UnresolvedPermission.java \
+java/security/acl/Acl.java \
+java/security/acl/AclNotFoundException.java \
+java/security/acl/LastOwnerException.java \
+java/security/acl/Owner.java \
+java/security/acl/AclEntry.java \
+java/security/acl/Group.java \
+java/security/acl/NotOwnerException.java \
+java/security/acl/Permission.java \
+java/security/cert/CRL.java \
+java/security/cert/CRLException.java \
+java/security/cert/Certificate.java \
+java/security/cert/CertificateEncodingException.java \
+java/security/cert/CertificateException.java \
+java/security/cert/CertificateExpiredException.java \
+java/security/cert/CertificateFactory.java \
+java/security/cert/CertificateFactorySpi.java \
+java/security/cert/CertificateNotYetValidException.java \
+java/security/cert/CertificateParsingException.java \
+java/security/cert/X509CRL.java \
+java/security/cert/X509CRLEntry.java \
+java/security/cert/X509Certificate.java \
+java/security/cert/X509Extension.java \
+java/security/interfaces/DSAKey.java \
+java/security/interfaces/DSAKeyPairGenerator.java \
+java/security/interfaces/DSAParams.java \
+java/security/interfaces/DSAPrivateKey.java \
+java/security/interfaces/DSAPublicKey.java \
+java/security/interfaces/RSAKey.java \
+java/security/interfaces/RSAPrivateCrtKey.java \
+java/security/interfaces/RSAPrivateKey.java \
+java/security/interfaces/RSAPublicKey.java \
+java/security/spec/AlgorithmParameterSpec.java \
+java/security/spec/DSAParameterSpec.java \
+java/security/spec/DSAPrivateKeySpec.java \
+java/security/spec/DSAPublicKeySpec.java \
+java/security/spec/EncodedKeySpec.java \
+java/security/spec/InvalidKeySpecException.java \
+java/security/spec/InvalidParameterSpecException.java \
+java/security/spec/KeySpec.java \
+java/security/spec/PKCS8EncodedKeySpec.java \
+java/security/spec/RSAKeyGenParameterSpec.java \
+java/security/spec/RSAPrivateCrtKeySpec.java \
+java/security/spec/RSAPrivateKeySpec.java \
+java/security/spec/RSAPublicKeySpec.java \
+java/security/spec/X509EncodedKeySpec.java \
+java/sql/Array.java \
+java/sql/BatchUpdateException.java \
+java/sql/Blob.java \
+java/sql/CallableStatement.java \
+java/sql/Clob.java \
+java/sql/Connection.java \
+java/sql/DataTruncation.java \
+java/sql/DatabaseMetaData.java \
+java/sql/Date.java \
+java/sql/Driver.java \
+java/sql/DriverManager.java \
+java/sql/DriverPropertyInfo.java \
+java/sql/PreparedStatement.java \
+java/sql/Ref.java \
+java/sql/ResultSet.java \
+java/sql/ResultSetMetaData.java \
+java/sql/SQLData.java \
+java/sql/SQLException.java \
+java/sql/SQLInput.java \
+java/sql/SQLOutput.java \
+java/sql/SQLWarning.java \
+java/sql/Statement.java \
+java/sql/Struct.java \
+java/sql/Time.java \
+java/sql/Timestamp.java \
+java/sql/Types.java \
+java/text/BreakIterator.java \
+java/text/CharacterIterator.java \
+java/text/ChoiceFormat.java \
+java/text/CollationElementIterator.java \
+java/text/CollationKey.java \
+java/text/Collator.java \
+java/text/DateFormat.java \
+java/text/DateFormatSymbols.java \
+java/text/DecimalFormat.java \
+java/text/DecimalFormatSymbols.java \
+java/text/FieldPosition.java \
+java/text/Format.java \
+java/text/MessageFormat.java \
+java/text/NumberFormat.java \
+java/text/ParseException.java \
+java/text/ParsePosition.java \
+java/text/RuleBasedCollator.java \
+java/text/SimpleDateFormat.java \
+java/text/StringCharacterIterator.java \
+java/util/jar/Attributes.java \
+java/util/jar/JarEntry.java \
+java/util/jar/JarException.java \
+java/util/jar/JarFile.java \
+java/util/jar/JarInputStream.java \
+java/util/jar/JarOutputStream.java \
+java/util/jar/Manifest.java \
+java/util/zip/Adler32.java \
+java/util/zip/CRC32.java \
+java/util/zip/CheckedInputStream.java \
+java/util/zip/CheckedOutputStream.java \
+java/util/zip/Checksum.java \
+java/util/zip/DataFormatException.java \
+java/util/zip/Deflater.java \
+java/util/zip/DeflaterOutputStream.java \
+java/util/zip/GZIPInputStream.java \
+java/util/zip/GZIPOutputStream.java \
+java/util/zip/Inflater.java \
+java/util/zip/InflaterInputStream.java \
+java/util/zip/ZipConstants.java \
+java/util/zip/ZipEntry.java \
+java/util/zip/ZipException.java \
+java/util/zip/ZipFile.java \
+java/util/zip/ZipInputStream.java \
+java/util/zip/ZipOutputStream.java \
+org/w3c/dom/Attr.java \
+org/w3c/dom/CDATASection.java \
+org/w3c/dom/CharacterData.java \
+org/w3c/dom/Comment.java \
+org/w3c/dom/DOMException.java \
+org/w3c/dom/DOMImplementation.java \
+org/w3c/dom/Document.java \
+org/w3c/dom/DocumentFragment.java \
+org/w3c/dom/DocumentType.java \
+org/w3c/dom/Element.java \
+org/w3c/dom/Entity.java \
+org/w3c/dom/EntityReference.java \
+org/w3c/dom/NamedNodeMap.java \
+org/w3c/dom/Node.java \
+org/w3c/dom/NodeList.java \
+org/w3c/dom/Notation.java \
+org/w3c/dom/ProcessingInstruction.java \
+org/w3c/dom/Text.java \
+org/w3c/dom/ranges/DocumentRange.java \
+org/w3c/dom/ranges/Range.java \
+org/w3c/dom/ranges/RangeException.java \
+org/w3c/dom/traversal/DocumentTraversal.java \
+org/w3c/dom/traversal/NodeFilter.java \
+org/w3c/dom/traversal/NodeIterator.java \
+org/w3c/dom/traversal/TreeWalker.java \
+org/xml/sax/ext/DeclHandler.java \
+org/xml/sax/ext/LexicalHandler.java \
+org/xml/sax/helpers/AttributeListImpl.java \
+org/xml/sax/helpers/AttributesImpl.java \
+org/xml/sax/helpers/DefaultHandler.java \
+org/xml/sax/helpers/LocatorImpl.java \
+org/xml/sax/helpers/NamespaceSupport.java \
+org/xml/sax/helpers/ParserAdapter.java \
+org/xml/sax/helpers/ParserFactory.java \
+org/xml/sax/helpers/XMLFilterImpl.java \
+org/xml/sax/helpers/XMLReaderAdapter.java \
+org/xml/sax/helpers/XMLReaderFactory.java \
+org/xml/sax/AttributeList.java \
+org/xml/sax/Attributes.java \
+org/xml/sax/ContentHandler.java \
+org/xml/sax/DTDHandler.java \
+org/xml/sax/DocumentHandler.java \
+org/xml/sax/EntityResolver.java \
+org/xml/sax/ErrorHandler.java \
+org/xml/sax/HandlerBase.java \
+org/xml/sax/InputSource.java \
+org/xml/sax/Locator.java \
+org/xml/sax/Parser.java \
+org/xml/sax/SAXException.java \
+org/xml/sax/SAXNotRecognizedException.java \
+org/xml/sax/SAXNotSupportedException.java \
+org/xml/sax/SAXParseException.java \
+org/xml/sax/XMLFilter.java \
+org/xml/sax/XMLReader.java \
+$(rmi_java_source_files) \
+$(awt_java_source_files) \
+$(convert_source_files)
java_source_files = $(special_java_source_files) $(ordinary_java_source_files)
-c_source_files = java/lang/dtoa.c java/lang/k_rem_pio2.c java/lang/s_tan.c java/lang/e_acos.c java/lang/k_sin.c java/lang/strtod.c java/lang/e_asin.c java/lang/k_tan.c java/lang/w_acos.c java/lang/e_atan2.c java/lang/mprec.c java/lang/w_asin.c java/lang/e_exp.c java/lang/s_atan.c java/lang/w_atan2.c java/lang/e_fmod.c java/lang/s_ceil.c java/lang/w_exp.c java/lang/e_log.c java/lang/s_copysign.c java/lang/w_fmod.c java/lang/e_pow.c java/lang/s_cos.c java/lang/w_log.c java/lang/e_rem_pio2.c java/lang/s_fabs.c java/lang/w_pow.c java/lang/e_remainder.c java/lang/s_floor.c java/lang/w_remainder.c java/lang/e_scalb.c java/lang/s_rint.c java/lang/w_sqrt.c java/lang/e_sqrt.c java/lang/s_scalbn.c java/lang/sf_rint.c java/lang/k_cos.c java/lang/s_sin.c java/lang/sf_fabs.c
+c_source_files = \
+ java/lang/dtoa.c java/lang/k_rem_pio2.c java/lang/s_tan.c \
+ java/lang/e_acos.c java/lang/k_sin.c java/lang/strtod.c \
+ java/lang/e_asin.c java/lang/k_tan.c java/lang/w_acos.c \
+ java/lang/e_atan2.c java/lang/mprec.c java/lang/w_asin.c \
+ java/lang/e_exp.c java/lang/s_atan.c java/lang/w_atan2.c \
+ java/lang/e_fmod.c java/lang/s_ceil.c java/lang/w_exp.c \
+ java/lang/e_log.c java/lang/s_copysign.c java/lang/w_fmod.c \
+ java/lang/e_pow.c java/lang/s_cos.c java/lang/w_log.c \
+ java/lang/e_rem_pio2.c java/lang/s_fabs.c java/lang/w_pow.c \
+ java/lang/e_remainder.c java/lang/s_floor.c java/lang/w_remainder.c \
+ java/lang/e_scalb.c java/lang/s_rint.c java/lang/w_sqrt.c \
+ java/lang/e_sqrt.c java/lang/s_scalbn.c java/lang/sf_rint.c \
+ java/lang/k_cos.c java/lang/s_sin.c java/lang/sf_fabs.c
#java/awt/natToolkit.cc
-nat_source_files = gnu/gcj/convert/JIS0208_to_Unicode.cc gnu/gcj/convert/JIS0212_to_Unicode.cc gnu/gcj/convert/Unicode_to_JIS.cc gnu/gcj/convert/natIconv.cc gnu/gcj/convert/natInput_EUCJIS.cc gnu/gcj/convert/natInput_SJIS.cc gnu/gcj/convert/natOutput_EUCJIS.cc gnu/gcj/convert/natOutput_SJIS.cc gnu/gcj/io/natSimpleSHSStream.cc gnu/gcj/io/shs.cc gnu/gcj/runtime/natFirstThread.cc java/io/natFile.cc java/io/natFileDescriptor.cc java/io/natObjectInputStream.cc java/io/natObjectOutputStream.cc java/lang/natCharacter.cc java/lang/natClass.cc java/lang/natClassLoader.cc java/lang/natConcreteProcess.cc java/lang/natDouble.cc java/lang/natFloat.cc java/lang/natMath.cc java/lang/natObject.cc java/lang/natRuntime.cc java/lang/natString.cc java/lang/natStringBuffer.cc java/lang/natSystem.cc java/lang/natThread.cc java/lang/natThrowable.cc java/lang/reflect/natArray.cc java/lang/reflect/natConstructor.cc java/lang/reflect/natField.cc java/lang/reflect/natMethod.cc java/net/natInetAddress.cc java/net/natPlainDatagramSocketImpl.cc java/net/natPlainSocketImpl.cc java/text/natCollator.cc java/util/zip/natDeflater.cc java/util/zip/natInflater.cc
-
-
-x_java_source_files = gnu/gcj/xlib/Clip.java gnu/gcj/xlib/Colormap.java gnu/gcj/xlib/Display.java gnu/gcj/xlib/Drawable.java gnu/gcj/xlib/Font.java gnu/gcj/xlib/GC.java gnu/gcj/xlib/Pixmap.java gnu/gcj/xlib/Screen.java gnu/gcj/xlib/Visual.java gnu/gcj/xlib/WMSizeHints.java gnu/gcj/xlib/Window.java gnu/gcj/xlib/WindowAttributes.java gnu/gcj/xlib/XAnyEvent.java gnu/gcj/xlib/XButtonEvent.java gnu/gcj/xlib/XColor.java gnu/gcj/xlib/XConfigureEvent.java gnu/gcj/xlib/XConnectException.java gnu/gcj/xlib/XEvent.java gnu/gcj/xlib/XException.java gnu/gcj/xlib/XExposeEvent.java gnu/gcj/xlib/XID.java gnu/gcj/xlib/XImage.java gnu/gcj/xlib/XUnmapEvent.java gnu/awt/xlib/XCanvasPeer.java gnu/awt/xlib/XEventLoop.java gnu/awt/xlib/XEventQueue.java gnu/awt/xlib/XFontMetrics.java gnu/awt/xlib/XFramePeer.java gnu/awt/xlib/XGraphics.java gnu/awt/xlib/XGraphicsConfiguration.java gnu/awt/xlib/XPanelPeer.java gnu/awt/xlib/XToolkit.java
-
-
-x_nat_source_files = gnu/gcj/xlib/natClip.cc gnu/gcj/xlib/natColormap.cc gnu/gcj/xlib/natDisplay.cc gnu/gcj/xlib/natDrawable.cc gnu/gcj/xlib/natFont.cc gnu/gcj/xlib/natGC.cc gnu/gcj/xlib/natPixmap.cc gnu/gcj/xlib/natScreen.cc gnu/gcj/xlib/natVisual.cc gnu/gcj/xlib/natWMSizeHints.cc gnu/gcj/xlib/natWindow.cc gnu/gcj/xlib/natWindowAttributes.cc gnu/gcj/xlib/natXAnyEvent.cc gnu/gcj/xlib/natXButtonEvent.cc gnu/gcj/xlib/natXColor.cc gnu/gcj/xlib/natXConfigureEvent.cc gnu/gcj/xlib/natXException.cc gnu/gcj/xlib/natXExposeEvent.cc gnu/gcj/xlib/natXImage.cc gnu/gcj/xlib/natXUnmapEvent.cc
+nat_source_files = \
+gnu/gcj/convert/JIS0208_to_Unicode.cc \
+gnu/gcj/convert/JIS0212_to_Unicode.cc \
+gnu/gcj/convert/Unicode_to_JIS.cc \
+gnu/gcj/convert/natIconv.cc \
+gnu/gcj/convert/natInput_EUCJIS.cc \
+gnu/gcj/convert/natInput_SJIS.cc \
+gnu/gcj/convert/natOutput_EUCJIS.cc \
+gnu/gcj/convert/natOutput_SJIS.cc \
+gnu/gcj/io/natSimpleSHSStream.cc \
+gnu/gcj/io/shs.cc \
+gnu/gcj/runtime/natFirstThread.cc \
+java/io/natFile.cc \
+java/io/natFileDescriptor.cc \
+java/io/natObjectInputStream.cc \
+java/io/natObjectOutputStream.cc \
+java/lang/natCharacter.cc \
+java/lang/natClass.cc \
+java/lang/natClassLoader.cc \
+java/lang/natConcreteProcess.cc \
+java/lang/natDouble.cc \
+java/lang/natFloat.cc \
+java/lang/natMath.cc \
+java/lang/natObject.cc \
+java/lang/natRuntime.cc \
+java/lang/natString.cc \
+java/lang/natStringBuffer.cc \
+java/lang/natSystem.cc \
+java/lang/natThread.cc \
+java/lang/natThrowable.cc \
+java/lang/reflect/natArray.cc \
+java/lang/reflect/natConstructor.cc \
+java/lang/reflect/natField.cc \
+java/lang/reflect/natMethod.cc \
+java/net/natInetAddress.cc \
+java/net/natPlainDatagramSocketImpl.cc \
+java/net/natPlainSocketImpl.cc \
+java/text/natCollator.cc \
+java/util/zip/natDeflater.cc \
+java/util/zip/natInflater.cc
+
+
+x_java_source_files = \
+gnu/gcj/xlib/Clip.java \
+gnu/gcj/xlib/Colormap.java \
+gnu/gcj/xlib/Display.java \
+gnu/gcj/xlib/Drawable.java \
+gnu/gcj/xlib/Font.java \
+gnu/gcj/xlib/GC.java \
+gnu/gcj/xlib/Pixmap.java \
+gnu/gcj/xlib/Screen.java \
+gnu/gcj/xlib/Visual.java \
+gnu/gcj/xlib/WMSizeHints.java \
+gnu/gcj/xlib/Window.java \
+gnu/gcj/xlib/WindowAttributes.java \
+gnu/gcj/xlib/XAnyEvent.java \
+gnu/gcj/xlib/XButtonEvent.java \
+gnu/gcj/xlib/XColor.java \
+gnu/gcj/xlib/XConfigureEvent.java \
+gnu/gcj/xlib/XConnectException.java \
+gnu/gcj/xlib/XEvent.java \
+gnu/gcj/xlib/XException.java \
+gnu/gcj/xlib/XExposeEvent.java \
+gnu/gcj/xlib/XID.java \
+gnu/gcj/xlib/XImage.java \
+gnu/gcj/xlib/XUnmapEvent.java \
+gnu/awt/xlib/XCanvasPeer.java \
+gnu/awt/xlib/XEventLoop.java \
+gnu/awt/xlib/XEventQueue.java \
+gnu/awt/xlib/XFontMetrics.java \
+gnu/awt/xlib/XFramePeer.java \
+gnu/awt/xlib/XGraphics.java \
+gnu/awt/xlib/XGraphicsConfiguration.java \
+gnu/awt/xlib/XPanelPeer.java \
+gnu/awt/xlib/XToolkit.java
+
+
+x_nat_source_files = \
+gnu/gcj/xlib/natClip.cc \
+gnu/gcj/xlib/natColormap.cc \
+gnu/gcj/xlib/natDisplay.cc \
+gnu/gcj/xlib/natDrawable.cc \
+gnu/gcj/xlib/natFont.cc \
+gnu/gcj/xlib/natGC.cc \
+gnu/gcj/xlib/natPixmap.cc \
+gnu/gcj/xlib/natScreen.cc \
+gnu/gcj/xlib/natVisual.cc \
+gnu/gcj/xlib/natWMSizeHints.cc \
+gnu/gcj/xlib/natWindow.cc \
+gnu/gcj/xlib/natWindowAttributes.cc \
+gnu/gcj/xlib/natXAnyEvent.cc \
+gnu/gcj/xlib/natXButtonEvent.cc \
+gnu/gcj/xlib/natXColor.cc \
+gnu/gcj/xlib/natXConfigureEvent.cc \
+gnu/gcj/xlib/natXException.cc \
+gnu/gcj/xlib/natXExposeEvent.cc \
+gnu/gcj/xlib/natXImage.cc \
+gnu/gcj/xlib/natXUnmapEvent.cc
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
# friends when we are called from the top level Makefile.
-AM_MAKEFLAGS = "AR_FLAGS=$(AR_FLAGS)" "CC_FOR_BUILD=$(CC_FOR_BUILD)" "CFLAGS=$(CFLAGS)" "CXXFLAGS=$(CXXFLAGS)" "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" "INSTALL=$(INSTALL)" "INSTALL_DATA=$(INSTALL_DATA)" "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" "JC1FLAGS=$(JC1FLAGS)" "LDFLAGS=$(LDFLAGS)" "LIBCFLAGS=$(LIBCFLAGS)" "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" "MAKE=$(MAKE)" "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" "PICFLAG=$(PICFLAG)" "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" "SHELL=$(SHELL)" "RUNTESTFLAGS=$(RUNTESTFLAGS)" "exec_prefix=$(exec_prefix)" "infodir=$(infodir)" "libdir=$(libdir)" "prefix=$(prefix)" "AR=$(AR)" "AS=$(AS)" "CC=$(CC)" "CXX=$(CXX)" "LD=$(LD)" "LIBCFLAGS=$(LIBCFLAGS)" "NM=$(NM)" "PICFLAG=$(PICFLAG)" "RANLIB=$(RANLIB)" "DESTDIR=$(DESTDIR)"
+AM_MAKEFLAGS = \
+ "AR_FLAGS=$(AR_FLAGS)" \
+ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
+ "CFLAGS=$(CFLAGS)" \
+ "CXXFLAGS=$(CXXFLAGS)" \
+ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
+ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+ "INSTALL=$(INSTALL)" \
+ "INSTALL_DATA=$(INSTALL_DATA)" \
+ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
+ "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
+ "JC1FLAGS=$(JC1FLAGS)" \
+ "LDFLAGS=$(LDFLAGS)" \
+ "LIBCFLAGS=$(LIBCFLAGS)" \
+ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
+ "MAKE=$(MAKE)" \
+ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
+ "PICFLAG=$(PICFLAG)" \
+ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \
+ "SHELL=$(SHELL)" \
+ "RUNTESTFLAGS=$(RUNTESTFLAGS)" \
+ "exec_prefix=$(exec_prefix)" \
+ "infodir=$(infodir)" \
+ "libdir=$(libdir)" \
+ "prefix=$(prefix)" \
+ "AR=$(AR)" \
+ "AS=$(AS)" \
+ "CC=$(CC)" \
+ "CXX=$(CXX)" \
+ "LD=$(LD)" \
+ "LIBCFLAGS=$(LIBCFLAGS)" \
+ "NM=$(NM)" \
+ "PICFLAG=$(PICFLAG)" \
+ "RANLIB=$(RANLIB)" \
+ "DESTDIR=$(DESTDIR)"
CONFIG_STATUS_DEPENDENCIES = $(srcdir)/configure.host
@@ -337,13 +1400,16 @@ gnu/gcj/xlib/natXButtonEvent.lo gnu/gcj/xlib/natXColor.lo \
gnu/gcj/xlib/natXConfigureEvent.lo gnu/gcj/xlib/natXException.lo \
gnu/gcj/xlib/natXExposeEvent.lo gnu/gcj/xlib/natXImage.lo \
gnu/gcj/xlib/natXUnmapEvent.lo
-@NATIVE_TRUE@bin_PROGRAMS = jv-convert$(EXEEXT) gij$(EXEEXT)
+@NATIVE_TRUE@bin_PROGRAMS = jv-convert$(EXEEXT) gij$(EXEEXT) \
+@NATIVE_TRUE@rmic$(EXEEXT) rmiregistry$(EXEEXT)
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@noinst_PROGRAMS = \
@NATIVE_TRUE@@MAINTAINER_MODE_TRUE@gen-from-JIS$(EXEEXT)
PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
jv_convert_OBJECTS =
gij_OBJECTS = gij.$(OBJEXT)
+rmic_OBJECTS =
+rmiregistry_OBJECTS =
gen_from_JIS_OBJECTS =
gen_from_JIS_LDFLAGS =
SCRIPTS = $(bin_SCRIPTS)
@@ -366,7 +1432,7 @@ libgcj-test.spec.in libgcj.spec.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = gtar
+TAR = tar
GZIP_ENV = --best
DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include
DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
@@ -473,6 +1539,24 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/gnu/java/lang/reflect/TypeSignature.P \
.deps/gnu/java/locale/Calendar.P .deps/gnu/java/locale/Calendar_de.P \
.deps/gnu/java/locale/Calendar_en.P .deps/gnu/java/locale/Calendar_nl.P \
+.deps/gnu/java/rmi/dgc/DGCImpl.P .deps/gnu/java/rmi/dgc/DGCImpl_Skel.P \
+.deps/gnu/java/rmi/dgc/DGCImpl_Stub.P \
+.deps/gnu/java/rmi/registry/RegistryImpl.P \
+.deps/gnu/java/rmi/registry/RegistryImpl_Skel.P \
+.deps/gnu/java/rmi/registry/RegistryImpl_Stub.P \
+.deps/gnu/java/rmi/rmic/RMIC.P .deps/gnu/java/rmi/rmic/TabbedWriter.P \
+.deps/gnu/java/rmi/server/ProtocolConstants.P \
+.deps/gnu/java/rmi/server/RMIDefaultSocketFactory.P \
+.deps/gnu/java/rmi/server/RMIHashes.P \
+.deps/gnu/java/rmi/server/RMIObjectInputStream.P \
+.deps/gnu/java/rmi/server/RMIObjectOutputStream.P \
+.deps/gnu/java/rmi/server/UnicastConnection.P \
+.deps/gnu/java/rmi/server/UnicastConnectionManager.P \
+.deps/gnu/java/rmi/server/UnicastRef.P \
+.deps/gnu/java/rmi/server/UnicastRemoteCall.P \
+.deps/gnu/java/rmi/server/UnicastRemoteStub.P \
+.deps/gnu/java/rmi/server/UnicastServer.P \
+.deps/gnu/java/rmi/server/UnicastServerRef.P \
.deps/gnu/java/security/provider/DefaultPolicy.P \
.deps/gnu/java/security/provider/Gnu.P \
.deps/gnu/java/security/provider/SHA.P \
@@ -777,7 +1861,58 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/java/net/UnknownServiceException.P \
.deps/java/net/natInetAddress.P \
.deps/java/net/natPlainDatagramSocketImpl.P \
-.deps/java/net/natPlainSocketImpl.P \
+.deps/java/net/natPlainSocketImpl.P .deps/java/rmi/AccessException.P \
+.deps/java/rmi/AlreadyBoundException.P \
+.deps/java/rmi/ConnectException.P .deps/java/rmi/ConnectIOException.P \
+.deps/java/rmi/MarshalException.P .deps/java/rmi/MarshalledObject.P \
+.deps/java/rmi/Naming.P .deps/java/rmi/NoSuchObjectException.P \
+.deps/java/rmi/NotBoundException.P \
+.deps/java/rmi/RMISecurityException.P \
+.deps/java/rmi/RMISecurityManager.P .deps/java/rmi/Remote.P \
+.deps/java/rmi/RemoteException.P .deps/java/rmi/ServerError.P \
+.deps/java/rmi/ServerException.P \
+.deps/java/rmi/ServerRuntimeException.P \
+.deps/java/rmi/StubNotFoundException.P \
+.deps/java/rmi/UnexpectedException.P \
+.deps/java/rmi/UnknownHostException.P \
+.deps/java/rmi/UnmarshalException.P \
+.deps/java/rmi/activation/Activatable.P \
+.deps/java/rmi/activation/ActivateFailedException.P \
+.deps/java/rmi/activation/ActivationDesc.P \
+.deps/java/rmi/activation/ActivationException.P \
+.deps/java/rmi/activation/ActivationGroup.P \
+.deps/java/rmi/activation/ActivationGroupDesc.P \
+.deps/java/rmi/activation/ActivationGroupID.P \
+.deps/java/rmi/activation/ActivationID.P \
+.deps/java/rmi/activation/ActivationInstantiator.P \
+.deps/java/rmi/activation/ActivationMonitor.P \
+.deps/java/rmi/activation/ActivationSystem.P \
+.deps/java/rmi/activation/Activator.P \
+.deps/java/rmi/activation/UnknownGroupException.P \
+.deps/java/rmi/activation/UnknownObjectException.P \
+.deps/java/rmi/dgc/DGC.P .deps/java/rmi/dgc/Lease.P \
+.deps/java/rmi/dgc/VMID.P .deps/java/rmi/registry/LocateRegistry.P \
+.deps/java/rmi/registry/Registry.P \
+.deps/java/rmi/registry/RegistryHandler.P \
+.deps/java/rmi/server/ExportException.P \
+.deps/java/rmi/server/LoaderHandler.P .deps/java/rmi/server/LogStream.P \
+.deps/java/rmi/server/ObjID.P .deps/java/rmi/server/Operation.P \
+.deps/java/rmi/server/RMIClassLoader.P \
+.deps/java/rmi/server/RMIClientSocketFactory.P \
+.deps/java/rmi/server/RMIFailureHandler.P \
+.deps/java/rmi/server/RMIServerSocketFactory.P \
+.deps/java/rmi/server/RMISocketFactory.P \
+.deps/java/rmi/server/RemoteCall.P .deps/java/rmi/server/RemoteObject.P \
+.deps/java/rmi/server/RemoteRef.P .deps/java/rmi/server/RemoteServer.P \
+.deps/java/rmi/server/RemoteStub.P \
+.deps/java/rmi/server/ServerCloneException.P \
+.deps/java/rmi/server/ServerNotActiveException.P \
+.deps/java/rmi/server/ServerRef.P .deps/java/rmi/server/Skeleton.P \
+.deps/java/rmi/server/SkeletonMismatchException.P \
+.deps/java/rmi/server/SkeletonNotFoundException.P \
+.deps/java/rmi/server/SocketSecurityException.P \
+.deps/java/rmi/server/UID.P .deps/java/rmi/server/UnicastRemoteObject.P \
+.deps/java/rmi/server/Unreferenced.P \
.deps/java/security/AccessControlContext.P \
.deps/java/security/AccessControlException.P \
.deps/java/security/AccessController.P \
@@ -980,8 +2115,8 @@ DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
.deps/org/xml/sax/helpers/XMLReaderAdapter.P \
.deps/org/xml/sax/helpers/XMLReaderFactory.P .deps/posix-threads.P \
.deps/posix.P .deps/prims.P .deps/resolve.P
-SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(libgcjx_la_SOURCES) $(EXTRA_libgcjx_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES)
-OBJECTS = $(libgcj_la_OBJECTS) $(libgcjx_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(gen_from_JIS_OBJECTS)
+SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(libgcjx_la_SOURCES) $(EXTRA_libgcjx_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(rmic_SOURCES) $(EXTRA_rmic_SOURCES) $(rmiregistry_SOURCES) $(EXTRA_rmiregistry_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES)
+OBJECTS = $(libgcj_la_OBJECTS) $(libgcjx_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(rmic_OBJECTS) $(rmiregistry_OBJECTS) $(gen_from_JIS_OBJECTS)
all: all-redirect
.SUFFIXES:
@@ -1110,6 +2245,14 @@ gij$(EXEEXT): $(gij_OBJECTS) $(gij_DEPENDENCIES)
@rm -f gij$(EXEEXT)
$(gij_LINK) $(gij_LDFLAGS) $(gij_OBJECTS) $(gij_LDADD) $(LIBS)
+rmic$(EXEEXT): $(rmic_OBJECTS) $(rmic_DEPENDENCIES)
+ @rm -f rmic$(EXEEXT)
+ $(rmic_LINK) $(rmic_LDFLAGS) $(rmic_OBJECTS) $(rmic_LDADD) $(LIBS)
+
+rmiregistry$(EXEEXT): $(rmiregistry_OBJECTS) $(rmiregistry_DEPENDENCIES)
+ @rm -f rmiregistry$(EXEEXT)
+ $(rmiregistry_LINK) $(rmiregistry_LDFLAGS) $(rmiregistry_OBJECTS) $(rmiregistry_LDADD) $(LIBS)
+
gen-from-JIS$(EXEEXT): $(gen_from_JIS_OBJECTS) $(gen_from_JIS_DEPENDENCIES)
@rm -f gen-from-JIS$(EXEEXT)
$(LINK) $(gen_from_JIS_LDFLAGS) $(gen_from_JIS_OBJECTS) $(gen_from_JIS_LDADD) $(LIBS)
@@ -1312,7 +2455,7 @@ distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
+ cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
diff --git a/libjava/gnu/java/rmi/dgc/DGCImpl.java b/libjava/gnu/java/rmi/dgc/DGCImpl.java
new file mode 100644
index 0000000..2c07c14
--- /dev/null
+++ b/libjava/gnu/java/rmi/dgc/DGCImpl.java
@@ -0,0 +1,55 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.dgc;
+
+import java.rmi.dgc.DGC;
+import java.rmi.dgc.Lease;
+import java.rmi.dgc.VMID;
+import java.rmi.server.ObjID;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
+import java.rmi.server.RMISocketFactory;
+import gnu.java.rmi.server.UnicastServerRef;
+
+public class DGCImpl
+ extends UnicastRemoteObject implements DGC {
+
+public DGCImpl() throws RemoteException {
+ super(new UnicastServerRef(new ObjID(ObjID.DGC_ID), 0, RMISocketFactory.getSocketFactory()));
+}
+
+public Lease dirty(ObjID[] ids, long sequenceNum, Lease lease) throws RemoteException {
+ System.out.println("DGCImpl.dirty - not implemented");
+ return (lease);
+}
+
+public void clean(ObjID[] ids, long sequenceNum, VMID vmid, boolean strong) throws RemoteException {
+ System.out.println("DGCImpl.clean - not implemented");
+}
+
+}
diff --git a/libjava/gnu/java/rmi/dgc/DGCImpl_Skel.java b/libjava/gnu/java/rmi/dgc/DGCImpl_Skel.java
new file mode 100644
index 0000000..fd0f2ee
--- /dev/null
+++ b/libjava/gnu/java/rmi/dgc/DGCImpl_Skel.java
@@ -0,0 +1,106 @@
+// Skel class generated by rmic - DO NOT EDIT!
+
+package gnu.java.rmi.dgc;
+
+public final class DGCImpl_Skel
+ implements java.rmi.server.Skeleton
+{
+ private static final long interfaceHash = -669196253586618813L;
+
+ private static final java.rmi.server.Operation[] operations = {
+ new java.rmi.server.Operation("void clean(java.rmi.server.ObjID[], long, java.rmi.dgc.VMID, boolean"),
+ new java.rmi.server.Operation("java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[], long, java.rmi.dgc.Lease")
+ };
+
+ public java.rmi.server.Operation[] getOperations() {
+ return ((java.rmi.server.Operation[]) operations.clone());
+ }
+
+ public void dispatch(java.rmi.Remote obj, java.rmi.server.RemoteCall call, int opnum, long hash) throws java.lang.Exception {
+ if (opnum < 0) {
+ if (hash == -5803803475088455571L) {
+ opnum = 0;
+ }
+ else if (hash == -8139341527526761862L) {
+ opnum = 1;
+ }
+ else {
+ throw new java.rmi.server.SkeletonMismatchException("interface hash mismatch");
+ }
+ }
+ else if (hash != interfaceHash) {
+ throw new java.rmi.server.SkeletonMismatchException("interface hash mismatch");
+ }
+
+ gnu.java.rmi.dgc.DGCImpl server = (gnu.java.rmi.dgc.DGCImpl)obj;
+ switch (opnum) {
+ case 0:
+ {
+ java.rmi.server.ObjID[] $param_0;
+ long $param_1;
+ java.rmi.dgc.VMID $param_2;
+ boolean $param_3;
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ $param_0 = (java.rmi.server.ObjID[])in.readObject();
+ $param_1 = (long)in.readLong();
+ $param_2 = (java.rmi.dgc.VMID)in.readObject();
+ $param_3 = (boolean)in.readBoolean();
+
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ catch (java.lang.ClassCastException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ finally {
+ call.releaseInputStream();
+ }
+ server.clean($param_0, $param_1, $param_2, $param_3);
+ try {
+ java.io.ObjectOutput out = call.getResultStream(true);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling return", e);
+ }
+ break;
+ }
+
+ case 1:
+ {
+ java.rmi.server.ObjID[] $param_0;
+ long $param_1;
+ java.rmi.dgc.Lease $param_2;
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ $param_0 = (java.rmi.server.ObjID[])in.readObject();
+ $param_1 = (long)in.readLong();
+ $param_2 = (java.rmi.dgc.Lease)in.readObject();
+
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ catch (java.lang.ClassCastException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ finally {
+ call.releaseInputStream();
+ }
+ java.rmi.dgc.Lease $result = server.dirty($param_0, $param_1, $param_2);
+ try {
+ java.io.ObjectOutput out = call.getResultStream(true);
+ out.writeObject($result);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling return", e);
+ }
+ break;
+ }
+
+ default:
+ throw new java.rmi.UnmarshalException("invalid method number");
+ }
+ }
+}
diff --git a/libjava/gnu/java/rmi/dgc/DGCImpl_Stub.java b/libjava/gnu/java/rmi/dgc/DGCImpl_Stub.java
new file mode 100644
index 0000000..e611fb2
--- /dev/null
+++ b/libjava/gnu/java/rmi/dgc/DGCImpl_Stub.java
@@ -0,0 +1,120 @@
+// Stub class generated by rmic - DO NOT EDIT!
+
+package gnu.java.rmi.dgc;
+
+public final class DGCImpl_Stub
+ extends java.rmi.server.RemoteStub
+ implements java.rmi.dgc.DGC
+{
+ private static final long serialVersionUID = 2L;
+
+ private static final long interfaceHash = -669196253586618813L;
+
+ private static boolean useNewInvoke;
+
+ private static final java.rmi.server.Operation[] operations = {
+ new java.rmi.server.Operation("void clean(java.rmi.server.ObjID[], long, java.rmi.dgc.VMID, boolean)"),
+ new java.rmi.server.Operation("java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[], long, java.rmi.dgc.Lease)")
+ };
+
+ private static java.lang.reflect.Method $method_clean_0;
+ private static java.lang.reflect.Method $method_dirty_1;
+
+ static {
+ try {
+ 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 });
+ useNewInvoke = true;
+ $method_clean_0 = gnu.java.rmi.dgc.DGCImpl.class.getMethod("clean", new java.lang.Class[] {java.rmi.server.ObjID[].class, long.class, java.rmi.dgc.VMID.class, boolean.class});
+ $method_dirty_1 = gnu.java.rmi.dgc.DGCImpl.class.getMethod("dirty", new java.lang.Class[] {java.rmi.server.ObjID[].class, long.class, java.rmi.dgc.Lease.class});
+
+ }
+ catch (java.lang.NoSuchMethodException e) {
+ useNewInvoke = false;
+ }
+ }
+
+ public DGCImpl_Stub() {
+ super();
+ }
+ public DGCImpl_Stub(java.rmi.server.RemoteRef ref) {
+ super(ref);
+ }
+
+ public void clean(java.rmi.server.ObjID[] $param_0, long $param_1, java.rmi.dgc.VMID $param_2, boolean $param_3) throws java.rmi.RemoteException {
+ try {
+ if (useNewInvoke) {
+ ref.invoke(this, $method_clean_0, new java.lang.Object[] {$param_0, new java.lang.Long($param_1), $param_2, new java.lang.Boolean($param_3)}, -5803803475088455571L);
+ }
+ else {
+ java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject)this, operations, 0, interfaceHash);
+ try {
+ java.io.ObjectOutput out = call.getOutputStream();
+ out.writeObject($param_0);
+ out.writeLong($param_1);
+ out.writeObject($param_2);
+ out.writeBoolean($param_3);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling arguments", e);
+ }
+ ref.invoke(call);
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling return", e);
+ }
+ finally {
+ ref.done(call);
+ }
+ }
+ }
+ catch (java.rmi.RemoteException e) {
+ throw e;
+ }
+ catch (java.lang.Exception e) {
+ throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+ }
+ }
+
+ public java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[] $param_0, long $param_1, java.rmi.dgc.Lease $param_2) throws java.rmi.RemoteException {
+ try {
+ if (useNewInvoke) {
+ java.lang.Object $result = ref.invoke(this, $method_dirty_1, new java.lang.Object[] {$param_0, new java.lang.Long($param_1), $param_2}, -8139341527526761862L);
+ return ((java.rmi.dgc.Lease)$result);
+ }
+ else {
+ java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject)this, operations, 1, interfaceHash);
+ try {
+ java.io.ObjectOutput out = call.getOutputStream();
+ out.writeObject($param_0);
+ out.writeLong($param_1);
+ out.writeObject($param_2);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling arguments", e);
+ }
+ ref.invoke(call);
+ java.rmi.dgc.Lease $result;
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ $result = (java.rmi.dgc.Lease)in.readObject();
+ return ($result);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling return", e);
+ }
+ finally {
+ ref.done(call);
+ }
+ }
+ }
+ catch (java.rmi.RemoteException e) {
+ throw e;
+ }
+ catch (java.lang.Exception e) {
+ throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+ }
+ }
+
+}
diff --git a/libjava/gnu/java/rmi/registry/RegistryImpl.java b/libjava/gnu/java/rmi/registry/RegistryImpl.java
new file mode 100644
index 0000000..1dab766
--- /dev/null
+++ b/libjava/gnu/java/rmi/registry/RegistryImpl.java
@@ -0,0 +1,115 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.registry;
+
+import java.rmi.registry.Registry;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.RemoteException;
+import java.rmi.NotBoundException;
+import java.rmi.AccessException;
+import java.rmi.AlreadyBoundException;
+import java.rmi.Remote;
+import java.rmi.server.UnicastRemoteObject;
+import java.rmi.server.ObjID;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.rmi.server.RMISocketFactory;
+import java.rmi.server.RMIClientSocketFactory;
+import java.rmi.server.RMIServerSocketFactory;
+import gnu.java.rmi.server.UnicastServerRef;
+
+public class RegistryImpl
+ extends UnicastRemoteObject implements Registry {
+
+private Hashtable bindings = new Hashtable();
+
+public RegistryImpl(int port) throws RemoteException {
+ this(port, RMISocketFactory.getSocketFactory(), RMISocketFactory.getSocketFactory());
+}
+
+public RegistryImpl(int port, RMIClientSocketFactory cf, RMIServerSocketFactory sf) throws RemoteException {
+ super(new UnicastServerRef(new ObjID(ObjID.REGISTRY_ID), port, sf));
+ ((UnicastServerRef)getRef()).exportObject(this);
+}
+
+public Remote lookup(String name) throws RemoteException, NotBoundException, AccessException {
+ Object obj = bindings.get(name);
+ if (obj == null) {
+ throw new NotBoundException(name);
+ }
+ return ((Remote)obj);
+}
+
+public void bind(String name, Remote obj) throws RemoteException, AlreadyBoundException, AccessException {
+ if (bindings.containsKey(name)) {
+ throw new AlreadyBoundException(name);
+ }
+ bindings.put(name, obj);
+}
+
+public void unbind(String name) throws RemoteException, NotBoundException, AccessException {
+ Object obj = bindings.remove(name);
+ if (obj == null) {
+ throw new NotBoundException(name);
+ }
+}
+
+public void rebind(String name, Remote obj) throws RemoteException, AccessException {
+ bindings.put(name, obj);
+}
+
+public String[] list() throws RemoteException, AccessException {
+ int size = bindings.size();
+ String[] strings = new String[size];
+ Enumeration e = bindings.keys();
+ for (int i = 0; i < size; i++) {
+ strings[i] = (String)e.nextElement();
+ }
+ return (strings);
+}
+
+public static void main(String[] args) {
+ int port = Registry.REGISTRY_PORT;
+ if (args.length > 0) {
+ try {
+ port = Integer.parseInt(args[0]);
+ }
+ catch (NumberFormatException _) {
+ System.err.println("Bad port number - using default");
+ }
+ }
+
+ try {
+ Registry impl = LocateRegistry.createRegistry(port);
+ }
+ catch (RemoteException _) {
+ System.err.println("Registry failed");
+ }
+}
+
+}
diff --git a/libjava/gnu/java/rmi/registry/RegistryImpl_Skel.java b/libjava/gnu/java/rmi/registry/RegistryImpl_Skel.java
new file mode 100644
index 0000000..7ba41c3
--- /dev/null
+++ b/libjava/gnu/java/rmi/registry/RegistryImpl_Skel.java
@@ -0,0 +1,189 @@
+// Skel class generated by rmic - DO NOT EDIT!
+
+package gnu.java.rmi.registry;
+
+public final class RegistryImpl_Skel
+ implements java.rmi.server.Skeleton
+{
+ private static final long interfaceHash = 4905912898345647071L;
+
+ private static final java.rmi.server.Operation[] operations = {
+ new java.rmi.server.Operation("void bind(java.lang.String, java.rmi.Remote"),
+ new java.rmi.server.Operation("java.lang.String[] list("),
+ new java.rmi.server.Operation("java.rmi.Remote lookup(java.lang.String"),
+ new java.rmi.server.Operation("void rebind(java.lang.String, java.rmi.Remote"),
+ new java.rmi.server.Operation("void unbind(java.lang.String")
+ };
+
+ public java.rmi.server.Operation[] getOperations() {
+ return ((java.rmi.server.Operation[]) operations.clone());
+ }
+
+ public void dispatch(java.rmi.Remote obj, java.rmi.server.RemoteCall call, int opnum, long hash) throws java.lang.Exception {
+ if (opnum < 0) {
+ if (hash == 7583982177005850366L) {
+ opnum = 0;
+ }
+ else if (hash == 2571371476350237748L) {
+ opnum = 1;
+ }
+ else if (hash == -7538657168040752697L) {
+ opnum = 2;
+ }
+ else if (hash == -8381844669958460146L) {
+ opnum = 3;
+ }
+ else if (hash == 7305022919901907578L) {
+ opnum = 4;
+ }
+ else {
+ throw new java.rmi.server.SkeletonMismatchException("interface hash mismatch");
+ }
+ }
+ else if (hash != interfaceHash) {
+ throw new java.rmi.server.SkeletonMismatchException("interface hash mismatch");
+ }
+
+ gnu.java.rmi.registry.RegistryImpl server = (gnu.java.rmi.registry.RegistryImpl)obj;
+ switch (opnum) {
+ case 0:
+ {
+ java.lang.String $param_0;
+ java.rmi.Remote $param_1;
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ $param_0 = (java.lang.String)in.readObject();
+ $param_1 = (java.rmi.Remote)in.readObject();
+
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ catch (java.lang.ClassCastException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ finally {
+ call.releaseInputStream();
+ }
+ server.bind($param_0, $param_1);
+ try {
+ java.io.ObjectOutput out = call.getResultStream(true);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling return", e);
+ }
+ break;
+ }
+
+ case 1:
+ {
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ finally {
+ call.releaseInputStream();
+ }
+ java.lang.String[] $result = server.list();
+ try {
+ java.io.ObjectOutput out = call.getResultStream(true);
+ out.writeObject($result);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling return", e);
+ }
+ break;
+ }
+
+ case 2:
+ {
+ java.lang.String $param_0;
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ $param_0 = (java.lang.String)in.readObject();
+
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ catch (java.lang.ClassCastException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ finally {
+ call.releaseInputStream();
+ }
+ java.rmi.Remote $result = server.lookup($param_0);
+ try {
+ java.io.ObjectOutput out = call.getResultStream(true);
+ out.writeObject($result);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling return", e);
+ }
+ break;
+ }
+
+ case 3:
+ {
+ java.lang.String $param_0;
+ java.rmi.Remote $param_1;
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ $param_0 = (java.lang.String)in.readObject();
+ $param_1 = (java.rmi.Remote)in.readObject();
+
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ catch (java.lang.ClassCastException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ finally {
+ call.releaseInputStream();
+ }
+ server.rebind($param_0, $param_1);
+ try {
+ java.io.ObjectOutput out = call.getResultStream(true);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling return", e);
+ }
+ break;
+ }
+
+ case 4:
+ {
+ java.lang.String $param_0;
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ $param_0 = (java.lang.String)in.readObject();
+
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ catch (java.lang.ClassCastException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling arguments", e);
+ }
+ finally {
+ call.releaseInputStream();
+ }
+ server.unbind($param_0);
+ try {
+ java.io.ObjectOutput out = call.getResultStream(true);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling return", e);
+ }
+ break;
+ }
+
+ default:
+ throw new java.rmi.UnmarshalException("invalid method number");
+ }
+ }
+}
diff --git a/libjava/gnu/java/rmi/registry/RegistryImpl_Stub.java b/libjava/gnu/java/rmi/registry/RegistryImpl_Stub.java
new file mode 100644
index 0000000..bfa755c
--- /dev/null
+++ b/libjava/gnu/java/rmi/registry/RegistryImpl_Stub.java
@@ -0,0 +1,255 @@
+// Stub class generated by rmic - DO NOT EDIT!
+
+package gnu.java.rmi.registry;
+
+public final class RegistryImpl_Stub
+ extends java.rmi.server.RemoteStub
+ implements java.rmi.registry.Registry
+{
+ private static final long serialVersionUID = 2L;
+
+ private static final long interfaceHash = 4905912898345647071L;
+
+ private static boolean useNewInvoke;
+
+ private static final java.rmi.server.Operation[] operations = {
+ new java.rmi.server.Operation("void bind(java.lang.String, java.rmi.Remote)"),
+ new java.rmi.server.Operation("java.lang.String[] list()"),
+ new java.rmi.server.Operation("java.rmi.Remote lookup(java.lang.String)"),
+ new java.rmi.server.Operation("void rebind(java.lang.String, java.rmi.Remote)"),
+ new java.rmi.server.Operation("void unbind(java.lang.String)")
+ };
+
+ private static java.lang.reflect.Method $method_bind_0;
+ private static java.lang.reflect.Method $method_list_1;
+ private static java.lang.reflect.Method $method_lookup_2;
+ private static java.lang.reflect.Method $method_rebind_3;
+ private static java.lang.reflect.Method $method_unbind_4;
+
+ static {
+ try {
+ 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 });
+ useNewInvoke = true;
+ $method_bind_0 = gnu.java.rmi.registry.RegistryImpl.class.getMethod("bind", new java.lang.Class[] {java.lang.String.class, java.rmi.Remote.class});
+ $method_list_1 = gnu.java.rmi.registry.RegistryImpl.class.getMethod("list", new java.lang.Class[] {});
+ $method_lookup_2 = gnu.java.rmi.registry.RegistryImpl.class.getMethod("lookup", new java.lang.Class[] {java.lang.String.class});
+ $method_rebind_3 = gnu.java.rmi.registry.RegistryImpl.class.getMethod("rebind", new java.lang.Class[] {java.lang.String.class, java.rmi.Remote.class});
+ $method_unbind_4 = gnu.java.rmi.registry.RegistryImpl.class.getMethod("unbind", new java.lang.Class[] {java.lang.String.class});
+
+ }
+ catch (java.lang.NoSuchMethodException e) {
+ useNewInvoke = false;
+ }
+ }
+
+ public RegistryImpl_Stub() {
+ super();
+ }
+ public RegistryImpl_Stub(java.rmi.server.RemoteRef ref) {
+ super(ref);
+ }
+
+ public void bind(java.lang.String $param_0, java.rmi.Remote $param_1) throws java.rmi.AccessException, java.rmi.AlreadyBoundException, java.rmi.RemoteException {
+ try {
+ if (useNewInvoke) {
+ ref.invoke(this, $method_bind_0, new java.lang.Object[] {$param_0, $param_1}, 7583982177005850366L);
+ }
+ else {
+ java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject)this, operations, 0, interfaceHash);
+ try {
+ java.io.ObjectOutput out = call.getOutputStream();
+ out.writeObject($param_0);
+ out.writeObject($param_1);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling arguments", e);
+ }
+ ref.invoke(call);
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling return", e);
+ }
+ finally {
+ ref.done(call);
+ }
+ }
+ }
+ catch (java.rmi.AccessException e) {
+ throw e;
+ }
+ catch (java.rmi.AlreadyBoundException e) {
+ throw e;
+ }
+ catch (java.rmi.RemoteException e) {
+ throw e;
+ }
+ catch (java.lang.Exception e) {
+ throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+ }
+ }
+
+ public java.lang.String[] list() throws java.rmi.AccessException, java.rmi.RemoteException {
+ try {
+ if (useNewInvoke) {
+ java.lang.Object $result = ref.invoke(this, $method_list_1, null, 2571371476350237748L);
+ return ((java.lang.String[])$result);
+ }
+ else {
+ java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject)this, operations, 1, interfaceHash);
+ try {
+ java.io.ObjectOutput out = call.getOutputStream();
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling arguments", e);
+ }
+ ref.invoke(call);
+ java.lang.String[] $result;
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ $result = (java.lang.String[])in.readObject();
+ return ($result);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling return", e);
+ }
+ finally {
+ ref.done(call);
+ }
+ }
+ }
+ catch (java.rmi.AccessException e) {
+ throw e;
+ }
+ catch (java.rmi.RemoteException e) {
+ throw e;
+ }
+ catch (java.lang.Exception e) {
+ throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+ }
+ }
+
+ public java.rmi.Remote lookup(java.lang.String $param_0) throws java.rmi.AccessException, java.rmi.NotBoundException, java.rmi.RemoteException {
+ try {
+ if (useNewInvoke) {
+ java.lang.Object $result = ref.invoke(this, $method_lookup_2, new java.lang.Object[] {$param_0}, -7538657168040752697L);
+ return ((java.rmi.Remote)$result);
+ }
+ else {
+ java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject)this, operations, 2, interfaceHash);
+ try {
+ java.io.ObjectOutput out = call.getOutputStream();
+ out.writeObject($param_0);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling arguments", e);
+ }
+ ref.invoke(call);
+ java.rmi.Remote $result;
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ $result = (java.rmi.Remote)in.readObject();
+ return ($result);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling return", e);
+ }
+ finally {
+ ref.done(call);
+ }
+ }
+ }
+ catch (java.rmi.AccessException e) {
+ throw e;
+ }
+ catch (java.rmi.NotBoundException e) {
+ throw e;
+ }
+ catch (java.rmi.RemoteException e) {
+ throw e;
+ }
+ catch (java.lang.Exception e) {
+ throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+ }
+ }
+
+ public void rebind(java.lang.String $param_0, java.rmi.Remote $param_1) throws java.rmi.AccessException, java.rmi.RemoteException {
+ try {
+ if (useNewInvoke) {
+ ref.invoke(this, $method_rebind_3, new java.lang.Object[] {$param_0, $param_1}, -8381844669958460146L);
+ }
+ else {
+ java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject)this, operations, 3, interfaceHash);
+ try {
+ java.io.ObjectOutput out = call.getOutputStream();
+ out.writeObject($param_0);
+ out.writeObject($param_1);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling arguments", e);
+ }
+ ref.invoke(call);
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling return", e);
+ }
+ finally {
+ ref.done(call);
+ }
+ }
+ }
+ catch (java.rmi.AccessException e) {
+ throw e;
+ }
+ catch (java.rmi.RemoteException e) {
+ throw e;
+ }
+ catch (java.lang.Exception e) {
+ throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+ }
+ }
+
+ public void unbind(java.lang.String $param_0) throws java.rmi.AccessException, java.rmi.NotBoundException, java.rmi.RemoteException {
+ try {
+ if (useNewInvoke) {
+ ref.invoke(this, $method_unbind_4, new java.lang.Object[] {$param_0}, 7305022919901907578L);
+ }
+ else {
+ java.rmi.server.RemoteCall call = ref.newCall((java.rmi.server.RemoteObject)this, operations, 4, interfaceHash);
+ try {
+ java.io.ObjectOutput out = call.getOutputStream();
+ out.writeObject($param_0);
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.MarshalException("error marshalling arguments", e);
+ }
+ ref.invoke(call);
+ try {
+ java.io.ObjectInput in = call.getInputStream();
+ }
+ catch (java.io.IOException e) {
+ throw new java.rmi.UnmarshalException("error unmarshalling return", e);
+ }
+ finally {
+ ref.done(call);
+ }
+ }
+ }
+ catch (java.rmi.AccessException e) {
+ throw e;
+ }
+ catch (java.rmi.NotBoundException e) {
+ throw e;
+ }
+ catch (java.rmi.RemoteException e) {
+ throw e;
+ }
+ catch (java.lang.Exception e) {
+ throw new java.rmi.UnexpectedException("undeclared checked exception", e);
+ }
+ }
+
+}
diff --git a/libjava/gnu/java/rmi/rmic/RMIC.java b/libjava/gnu/java/rmi/rmic/RMIC.java
new file mode 100644
index 0000000..84681e2
--- /dev/null
+++ b/libjava/gnu/java/rmi/rmic/RMIC.java
@@ -0,0 +1,982 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.rmic;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Arrays;
+import java.lang.Comparable;
+import gnu.java.rmi.server.RMIHashes;
+// import kaffe.tools.compiler.Compiler;
+
+public class RMIC {
+
+private String[] args;
+private int next;
+private Exception exception;
+
+private boolean keep = false;
+private boolean need11Stubs = true;
+private boolean need12Stubs = true;
+private boolean compile = true;
+private boolean verbose;
+private String destination;
+
+private PrintWriter out;
+private TabbedWriter ctrl;
+
+private Class clazz;
+private String classname;
+private String fullclassname;
+private MethodRef[] remotemethods;
+private String stubname;
+private String skelname;
+
+public RMIC(String[] a) {
+ args = a;
+}
+
+public static void main(String args[]) {
+ RMIC r = new RMIC(args);
+ if (r.run() == false) {
+ Exception exception = r.getException();
+ if (exception != null) {
+ exception.printStackTrace();
+ }
+ else {
+ usage();
+ }
+ }
+}
+
+public boolean run() {
+ parseOptions();
+ if (next >= args.length) {
+ return (false);
+ }
+ for (int i = next; i < args.length; i++) {
+ try {
+ if (verbose) {
+ System.out.println("[Processing class " + args[i] + ".class]");
+ }
+ processClass(args[i]);
+ }
+ catch (Exception e) {
+ exception = e;
+ return (false);
+ }
+ }
+ return (true);
+}
+
+private boolean processClass(String classname) throws Exception {
+ analyzeClass(classname);
+ generateStub();
+ if (need11Stubs) {
+ generateSkel();
+ }
+ if (compile) {
+ compile(stubname + ".java");
+ if (need11Stubs) {
+ compile(skelname + ".java");
+ }
+ }
+ if (!keep) {
+ (new File(stubname + ".java")).delete();
+ if (need11Stubs) {
+ (new File(skelname + ".java")).delete();
+ }
+ }
+ return (true);
+}
+
+private void analyzeClass(String cname) throws Exception {
+ int p = cname.lastIndexOf('.');
+ if (p != -1) {
+ classname = cname.substring(p+1);
+ }
+ else {
+ classname = cname;
+ }
+ fullclassname = cname;
+
+ HashSet rmeths = new HashSet();
+ findClass();
+ for (Class cls = clazz; cls != null; cls = cls.getSuperclass()) {
+ // Keep going down the inheritence tree until we hit the system
+ if (cls.getName().startsWith("java.")) {
+ break;
+ }
+
+ Method[] meths = cls.getDeclaredMethods();
+ for (int i = 0; i < meths.length; i++) {
+ // Only include public methods
+ int mods = meths[i].getModifiers();
+ if (Modifier.isPublic(mods) && !Modifier.isStatic(mods)) {
+ // Should check exceptions here. - XXX
+
+ // Add this one in.
+ rmeths.add(meths[i]);
+ }
+ }
+ }
+
+ // Convert into a MethodRef array and sort them
+ remotemethods = new MethodRef[rmeths.size()];
+ int c = 0;
+ for (Iterator i = rmeths.iterator(); i.hasNext(); ) {
+ remotemethods[c++] = new MethodRef((Method)i.next());
+ }
+ Arrays.sort(remotemethods);
+}
+
+public Exception getException() {
+ return (exception);
+}
+
+private void findClass() throws ClassNotFoundException {
+ clazz = Class.forName(fullclassname);
+}
+
+private void generateStub() throws IOException {
+ stubname = classname + "_Stub";
+ ctrl = new TabbedWriter(new FileWriter(stubname + ".java"));
+ out = new PrintWriter(ctrl);
+
+ if (verbose) {
+ System.out.println("[Generating class " + stubname + ".java]");
+ }
+
+ out.println("// Stub class generated by rmic - DO NOT EDIT!");
+ out.println();
+ if (fullclassname != classname) {
+ String pname = fullclassname.substring(0, fullclassname.lastIndexOf('.'));
+ out.println("package " + pname + ";");
+ out.println();
+ }
+
+ out.print("public final class " + stubname);
+ ctrl.indent();
+ out.println("extends java.rmi.server.RemoteStub");
+
+ // Output interfaces we implement
+ out.print("implements ");
+ Class[] ifaces = clazz.getInterfaces();
+ for (int i = 0; i < ifaces.length; i++) {
+ out.print(ifaces[i].getName());
+ if (i+1 < ifaces.length) {
+ 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(fullclassname + ".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 " + stubname + "() {");
+ ctrl.indent();
+ out.print("super();");
+ ctrl.unindent();
+ out.println("}");
+ }
+
+ if (need12Stubs) {
+ out.print("public " + stubname + "(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 = classname + "_Skel";
+ ctrl = new TabbedWriter(new FileWriter(skelname + ".java"));
+ out = new PrintWriter(ctrl);
+
+ if (verbose) {
+ System.out.println("[Generating class " + skelname + ".java]");
+ }
+
+ out.println("// Skel class generated by rmic - DO NOT EDIT!");
+ out.println();
+ if (fullclassname != classname) {
+ String pname = fullclassname.substring(0, fullclassname.lastIndexOf('.'));
+ out.println("package " + pname + ";");
+ out.println();
+ }
+
+ out.print("public final class " + skelname);
+ 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();
+
+ // getOpertions 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 {
+ throw new Error ("Not implemented");
+// Compiler comp = Compiler.getInstance();
+// if (verbose) {
+// System.out.println("[Compiling class " + name + "]");
+// }
+// comp.setDestination(destination);
+// boolean result = comp.compile(name);
+// if (result == false) {
+// throw comp.getException();
+// }
+}
+
+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++;
+
+ if (arg.equals("-keep")) {
+ keep = true;
+ }
+ else if (arg.equals("-keepgenerated")) {
+ keep = true;
+ }
+ else if (arg.equals("-v1.1")) {
+ need11Stubs = true;
+ need12Stubs = false;
+ }
+ else if (arg.equals("-vcompat")) {
+ need11Stubs = true;
+ need12Stubs = true;
+ }
+ else if (arg.equals("-v1.2")) {
+ need11Stubs = false;
+ need12Stubs = true;
+ }
+ else if (arg.equals("-g")) {
+ }
+ else if (arg.equals("-depend")) {
+ }
+ else if (arg.equals("-nowarn")) {
+ }
+ else if (arg.equals("-verbose")) {
+ verbose = true;
+ }
+ else if (arg.equals("-nocompile")) {
+ compile = false;
+ }
+ else if (arg.equals("-classpath")) {
+ next++;
+ }
+ else if (arg.equals("-d")) {
+ destination = args[next];
+ next++;
+ }
+ else if (arg.charAt(1) == 'J') {
+ }
+ else {
+ System.err.println("Unknown option: " + arg);
+ }
+ }
+}
+
+private static void usage() {
+ System.out.println(
+"usage: rmic [-options] classes\n" +
+"Options are:\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" +
+" * Option currently ignored"
+ );
+}
+
+static class MethodRef
+ implements Comparable {
+
+Method meth;
+String sig;
+long hash;
+
+MethodRef(Method m) {
+ meth = m;
+ // We match on the name - but what about overloading? - XXX
+ sig = m.getName();
+ hash = RMIHashes.getMethodHash(m);
+}
+
+public int compareTo(Object obj) {
+ MethodRef that = (MethodRef)obj;
+ return (this.sig.compareTo(that.sig));
+}
+
+}
+
+}
diff --git a/libjava/gnu/java/rmi/rmic/TabbedWriter.java b/libjava/gnu/java/rmi/rmic/TabbedWriter.java
new file mode 100644
index 0000000..c2e668c
--- /dev/null
+++ b/libjava/gnu/java/rmi/rmic/TabbedWriter.java
@@ -0,0 +1,90 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+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');
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/ProtocolConstants.java b/libjava/gnu/java/rmi/server/ProtocolConstants.java
new file mode 100644
index 0000000..431a699
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/ProtocolConstants.java
@@ -0,0 +1,53 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+public interface ProtocolConstants {
+
+final public static int PROTOCOL_HEADER = 0x4a524d49; // JRMI
+final public static int PROTOCOL_VERSION = 2;
+
+final public static int STREAM_PROTOCOL = 0x4b;
+final public static int SINGLE_OP_PROTOCOL = 0x4c;
+final public static int MULTIPLEX_PROTOCOL = 0x4d;
+
+final public static int PROTOCOL_ACK = 0x4e;
+final public static int PROTOCOL_NACK = 0x4f;
+
+final public static int MESSAGE_CALL = 0x50;
+final public static int MESSAGE_CALL_ACK = 0x51;
+final public static int MESSAGE_PING = 0x52;
+final public static int MESSAGE_PING_ACK = 0x53;
+final public static int MESSAGE_DGCACK = 0x54;
+
+final public static int RETURN_ACK = 0x01;
+final public static int RETURN_NACK = 0x02;
+
+final public static int DEFAULT_PROTOCOL = STREAM_PROTOCOL;
+
+};
diff --git a/libjava/gnu/java/rmi/server/RMIDefaultSocketFactory.java b/libjava/gnu/java/rmi/server/RMIDefaultSocketFactory.java
new file mode 100644
index 0000000..610c3a7
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/RMIDefaultSocketFactory.java
@@ -0,0 +1,49 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.rmi.server.RMISocketFactory;
+import java.io.IOException;
+import java.net.Socket;
+import java.net.ServerSocket;
+
+public class RMIDefaultSocketFactory
+ extends RMISocketFactory {
+
+public RMIDefaultSocketFactory() {
+}
+
+public Socket createSocket(String host, int port) throws IOException {
+ return (new Socket(host, port));
+}
+
+public ServerSocket createServerSocket(int port) throws IOException {
+ return (new ServerSocket(port));
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/RMIHashes.java b/libjava/gnu/java/rmi/server/RMIHashes.java
new file mode 100644
index 0000000..dc00276
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/RMIHashes.java
@@ -0,0 +1,45 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.lang.reflect.Method;
+import java.lang.Class;
+import gnu.java.security.provider.SHA;
+
+public class RMIHashes
+{
+ public static long getMethodHash(Method meth)
+ {
+ return meth.hashCode ();
+ }
+
+ public static long getInterfaceHash(Class clazz)
+ {
+ return clazz.hashCode ();
+ }
+}
diff --git a/libjava/gnu/java/rmi/server/RMIObjectInputStream.java b/libjava/gnu/java/rmi/server/RMIObjectInputStream.java
new file mode 100644
index 0000000..b6efbf0
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/RMIObjectInputStream.java
@@ -0,0 +1,65 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.io.ObjectStreamClass;
+import java.io.ObjectInputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.MalformedURLException;
+import java.rmi.server.RMIClassLoader;
+
+public class RMIObjectInputStream
+ extends ObjectInputStream {
+
+UnicastConnectionManager manager;
+
+public RMIObjectInputStream(InputStream strm, UnicastConnectionManager man) throws IOException {
+ super(strm);
+ manager = man;
+ enableResolveObject(true);
+}
+
+protected Class resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
+//System.out.println("Resolving class: " + desc.getName());
+ String annotation = (String)readObject();
+ if (annotation == null) {
+ return (super.resolveClass(desc));
+ }
+ else {
+ try {
+ return (RMIClassLoader.loadClass(new URL(annotation), desc.getName()));
+ }
+ catch (MalformedURLException _) {
+ throw new ClassNotFoundException(desc.getName());
+ }
+ }
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/RMIObjectOutputStream.java b/libjava/gnu/java/rmi/server/RMIObjectOutputStream.java
new file mode 100644
index 0000000..960252b
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/RMIObjectOutputStream.java
@@ -0,0 +1,47 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.io.IOException;
+import java.rmi.server.RMIClassLoader;
+
+public class RMIObjectOutputStream
+ extends ObjectOutputStream {
+
+public RMIObjectOutputStream(OutputStream strm) throws IOException {
+ super(strm);
+}
+
+protected void annotateClass(Class cls) throws IOException {
+//System.out.println("Annotating class: " + cls);
+ writeObject(RMIClassLoader.getClassAnnotation(cls));
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/UnicastConnection.java b/libjava/gnu/java/rmi/server/UnicastConnection.java
new file mode 100644
index 0000000..04d18be
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/UnicastConnection.java
@@ -0,0 +1,162 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.lang.Runnable;
+import java.net.Socket;
+import java.net.ServerSocket;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectInput;
+import java.io.IOException;
+import java.rmi.RemoteException;
+
+public class UnicastConnection
+ implements Runnable, ProtocolConstants {
+
+UnicastConnectionManager manager;
+Socket sock;
+DataInputStream din;
+DataOutputStream dout;
+ObjectInputStream oin;
+ObjectOutputStream oout;
+
+UnicastConnection(UnicastConnectionManager man, Socket sock) {
+ this.manager = man;
+ this.sock = sock;
+}
+
+void acceptConnection() throws IOException {
+//System.out.println("Accepting connection on " + lport);
+ din = new DataInputStream(sock.getInputStream());
+ dout = new DataOutputStream(sock.getOutputStream());
+
+ int sig = din.readInt();
+ if (sig != PROTOCOL_HEADER) {
+ throw new IOException("bad protocol header");
+ }
+ short ver = din.readShort();
+ if (ver != PROTOCOL_VERSION) {
+ throw new IOException("bad protocol version");
+ }
+ int protocol = din.readUnsignedByte();
+ if (protocol != SINGLE_OP_PROTOCOL) {
+ // Send an ACK
+ dout.writeByte(PROTOCOL_ACK);
+
+ // Send my hostname and port
+ dout.writeUTF(manager.serverName);
+ dout.writeInt(manager.serverPort);
+
+ // Read their hostname and port
+ String rhost = din.readUTF();
+ int rport = din.readInt();
+ }
+ // Okay, ready to roll ...
+}
+
+void makeConnection(int protocol) throws IOException {
+ dout = new DataOutputStream(sock.getOutputStream());
+ din = new DataInputStream(sock.getInputStream());
+
+ // Send header
+ dout.writeInt(PROTOCOL_HEADER);
+ dout.writeShort(PROTOCOL_VERSION);
+ dout.writeByte(protocol);
+ dout.flush();
+
+ if (protocol != SINGLE_OP_PROTOCOL) {
+ // Get back ack.
+ int ack = din.readUnsignedByte();
+ if (ack != PROTOCOL_ACK) {
+ throw new RemoteException("Unsupported protocol");
+ }
+
+ // Read in host and port
+ String dicard_rhost = din.readUTF();
+ int discard_rport = din.readInt();
+
+ // Send them my endpoint
+ dout.writeUTF(manager.serverName);
+ dout.writeInt(manager.serverPort);
+ }
+ // Okay, ready to roll ...
+}
+
+DataInputStream getDataInputStream() throws IOException {
+ return (din);
+}
+
+DataOutputStream getDataOutputStream() throws IOException {
+ return (dout);
+}
+
+ObjectInputStream getObjectInputStream() throws IOException {
+ if (oin == null) {
+ oin = new RMIObjectInputStream(din, manager);
+ }
+ return (oin);
+}
+
+ObjectOutputStream getObjectOutputStream() throws IOException {
+ if (oout == null) {
+ oout = new RMIObjectOutputStream(dout);
+ }
+ return (oout);
+}
+
+void disconnect() {
+ oin = null;
+ oout = null;
+ try {
+ sock.close();
+ }
+ catch (IOException _) {
+ }
+ din = null;
+ dout = null;
+ sock = null;
+}
+
+/**
+ * We run connects on the server. Dispatch it then discard it.
+ */
+public void run() {
+ try {
+ UnicastServer.dispatch(this);
+ manager.discardConnection(this);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/UnicastConnectionManager.java b/libjava/gnu/java/rmi/server/UnicastConnectionManager.java
new file mode 100644
index 0000000..84152bd
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/UnicastConnectionManager.java
@@ -0,0 +1,262 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.rmi.server.RMISocketFactory;
+import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.server.RMIClientSocketFactory;
+import java.rmi.RemoteException;
+import gnu.java.rmi.server.UnicastConnection;
+import java.util.Hashtable;
+import java.net.Socket;
+import java.net.ServerSocket;
+import java.io.IOException;
+import java.io.ObjectOutput;
+import java.io.ObjectInput;
+import java.lang.Thread;
+import java.lang.Runnable;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+public class UnicastConnectionManager
+ implements Runnable, ProtocolConstants {
+
+private static String localhost;
+private static Hashtable servers = new Hashtable();
+
+private Thread serverThread;
+private ServerSocket ssock;
+String serverName;
+int serverPort;
+private RMIServerSocketFactory serverFactory;
+private RMIClientSocketFactory clientFactory;
+
+static {
+ try {
+ localhost = InetAddress.getLocalHost().getHostName();
+ }
+ catch (UnknownHostException _) {
+ localhost = "localhost";
+ }
+}
+
+private UnicastConnectionManager(String host, int port, RMIClientSocketFactory csf) {
+ ssock = null;
+ serverName = host;
+ serverPort = port;
+ serverFactory = null;
+ clientFactory = csf;
+}
+
+private UnicastConnectionManager(int port, RMIServerSocketFactory ssf) {
+ try {
+ ssock = ssf.createServerSocket(port);
+ serverPort = ssock.getLocalPort();
+ }
+ catch (IOException _) {
+ try {
+ ssock = ssf.createServerSocket(0);
+ serverPort = ssock.getLocalPort();
+ }
+ catch (IOException __) {
+ ssock = null;
+ serverPort = 0;
+ }
+ }
+ serverName = localhost;
+ serverFactory = ssf;
+ clientFactory = null;
+}
+
+/**
+ * Return a client connection manager which will connect to the given
+ * host/port.
+ */
+public static synchronized UnicastConnectionManager getInstance(String host, int port, RMIClientSocketFactory csf) {
+//System.out.println("getInstance: " + host + "," + port + "," + csf);
+ if (csf == null) {
+ csf = RMISocketFactory.getSocketFactory();
+ }
+ TripleKey key = new TripleKey(host, port, csf);
+ UnicastConnectionManager man = (UnicastConnectionManager)servers.get(key);
+ if (man == null) {
+ man = new UnicastConnectionManager(host, port, csf);
+ servers.put(key, man);
+ }
+ return (man);
+}
+
+/**
+ * Return a server connection manager which will accept connection on the
+ * given port.
+ */
+public static synchronized UnicastConnectionManager getInstance(int port, RMIServerSocketFactory ssf) {
+//System.out.println("getInstance: " + port + "," + ssf);
+ if (ssf == null) {
+ ssf = RMISocketFactory.getSocketFactory();
+ }
+ TripleKey key = new TripleKey(localhost, port, ssf);
+ UnicastConnectionManager man = (UnicastConnectionManager)servers.get(key);
+ if (man == null) {
+ man = new UnicastConnectionManager(port, ssf);
+ // The provided port might not be the set port.
+ key.port = man.serverPort;
+ servers.put(key, man);
+ }
+ return (man);
+}
+
+/**
+ * Get a connection from this manager.
+ */
+public UnicastConnection getConnection() throws IOException {
+ if (ssock == null) {
+ return (getClientConnection());
+ }
+ else {
+ return (getServerConnection());
+ }
+}
+
+/**
+ * Accept a connection to this server.
+ */
+private UnicastConnection getServerConnection() throws IOException {
+ Socket sock = ssock.accept();
+ UnicastConnection conn = new UnicastConnection(this, sock);
+ conn.acceptConnection();
+//System.out.println("Server connection " + conn);
+ return (conn);
+}
+
+/**
+ * Make a conection from this client to the server.
+ */
+private UnicastConnection getClientConnection() throws IOException {
+ Socket sock = clientFactory.createSocket(serverName, serverPort);
+ UnicastConnection conn = new UnicastConnection(this, sock);
+ conn.makeConnection(DEFAULT_PROTOCOL);
+//System.out.println("Client connection " + conn);
+ return (conn);
+}
+
+/**
+ * Discard a connection when we're done with it - maybe it can be
+ * recycled.
+ */
+public void discardConnection(UnicastConnection conn) {
+//System.out.println("Discarding connection " + conn);
+ conn.disconnect();
+}
+
+/**
+ * Start a server on this manager if it's a server socket and we've not
+ * already got one running.
+ */
+public void startServer() {
+ synchronized(this) {
+ if (ssock == null || serverThread != null) {
+ return;
+ }
+ serverThread = new Thread(this);
+ }
+ serverThread.start();
+}
+
+/**
+ * Server thread for connection manager.
+ */
+public void run() {
+ for (;;) {
+ try {
+//System.out.println("Waiting for connection on " + serverPort);
+ UnicastConnection conn = getServerConnection();
+ (new Thread(conn)).start();
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
+
+/**
+ * Serialization routine.
+ */
+void write(ObjectOutput out) throws IOException {
+ out.writeUTF(serverName);
+ out.writeInt(serverPort);
+}
+
+/**
+ * Serialization routine.
+ */
+static UnicastConnectionManager read(ObjectInput in) throws IOException {
+ String host = in.readUTF();
+ int port = in.readInt();
+ RMIClientSocketFactory csf = ((RMIObjectInputStream)in).manager.clientFactory;
+ return (getInstance(host, port, csf));
+}
+
+}
+
+/**
+ * This is use as the hashkey for the client/server connections.
+ */
+class TripleKey {
+
+String host;
+int port;
+Object other;
+
+TripleKey(String host, int port, Object other) {
+ this.host = host;
+ this.port = port;
+ this.other = other;
+}
+
+/**
+ * Hash code just include the host and other - we ignore the port since
+ * this has unusual matching behaviour.
+ */
+public int hashCode() {
+ return (host.hashCode() ^ other.hashCode());
+}
+
+public boolean equals(Object obj) {
+ if (obj instanceof TripleKey) {
+ TripleKey other = (TripleKey)obj;
+ if (this.host.equals(other.host) &&
+ this.other == other.other &&
+ (this.port == other.port || this.port == 0 || other.port == 0)) {
+ return (true);
+ }
+ }
+ return (false);
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/UnicastRef.java b/libjava/gnu/java/rmi/server/UnicastRef.java
new file mode 100644
index 0000000..837e6e4
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/UnicastRef.java
@@ -0,0 +1,219 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.server.RemoteRef;
+import java.rmi.server.RMISocketFactory;
+import java.rmi.server.RMIClientSocketFactory;
+import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.server.RemoteObject;
+import java.rmi.server.RemoteCall;
+import java.rmi.server.UnicastRemoteObject;
+import java.rmi.server.Operation;
+import java.rmi.server.ObjID;
+import java.rmi.server.UID;
+import java.lang.reflect.Method;
+import java.io.ObjectOutput;
+import java.io.ObjectInput;
+import java.io.IOException;
+import java.net.Socket;
+import java.net.InetAddress;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+
+public class UnicastRef
+ implements RemoteRef, ProtocolConstants {
+
+public ObjID objid;
+UnicastConnectionManager manager;
+
+/**
+ * Used by serialization.
+ */
+private UnicastRef() {
+}
+
+public UnicastRef(ObjID objid, String host, int port, RMIClientSocketFactory csf) {
+ this(objid);
+ manager = UnicastConnectionManager.getInstance(host, port, csf);
+}
+
+public UnicastRef(ObjID objid) {
+ this.objid = objid;
+}
+
+public Object invoke(Remote obj, Method method, Object[] params, long opnum) throws Exception {
+ return (invokeCommon(obj, method, params, -1, opnum));
+}
+
+private Object invokeCommon(Remote obj, Method method, Object[] params, int opnum, long hash) throws Exception {
+ UnicastConnection conn;
+ try {
+ conn = manager.getConnection();
+ }
+ catch (IOException e1) {
+ throw new RemoteException("connection failed to host: " + manager.serverName, e1);
+ }
+
+ ObjectOutputStream out;
+ DataOutputStream dout;
+ try {
+ dout = conn.getDataOutputStream();
+ dout.writeByte(MESSAGE_CALL);
+
+ out = conn.getObjectOutputStream();
+
+ objid.write(out);
+ out.writeInt(opnum);
+ out.writeLong(hash);
+ if (params != null) {
+ for (int i = 0; i < params.length; i++) {
+ if (params[i] instanceof UnicastRemoteObject) {
+ out.writeObject(UnicastRemoteObject.exportObject((UnicastRemoteObject)params[i]));
+ }
+ else {
+ out.writeObject(params[i]);
+ }
+ }
+ }
+
+ out.flush();
+ }
+ catch (IOException e2) {
+ throw new RemoteException("call failed: ", e2);
+ }
+
+ int returncode;
+ Object returnval;
+ DataInputStream din;
+ ObjectInputStream in;
+ UID ack;
+ try {
+ din = conn.getDataInputStream();
+ if (din.readUnsignedByte() != MESSAGE_CALL_ACK) {
+ throw new RemoteException("Call not acked");
+ }
+
+ in = conn.getObjectInputStream();
+
+ returncode = in.readUnsignedByte();
+ ack = UID.read(in);
+ returnval = in.readObject();
+ }
+ catch (IOException e3) {
+ throw new RemoteException("call return failed: ", e3);
+ }
+
+ manager.discardConnection(conn);
+
+ if (returncode != RETURN_ACK) {
+ throw (Exception)returnval;
+ }
+
+ return (returnval);
+}
+
+/**
+ * @deprecated
+ */
+public RemoteCall newCall(RemoteObject obj, Operation[] op, int opnum, long hash) throws RemoteException {
+ return (new UnicastRemoteCall(obj, opnum, hash));
+}
+
+/**
+ * @deprecated
+ */
+public void invoke(RemoteCall call) throws Exception {
+ UnicastRemoteCall c = (UnicastRemoteCall)call;
+ Object ret = invokeCommon((Remote)c.getObject(), (Method)null, c.getArguments(), c.getOpnum(), c.getHash());
+ c.setReturnValue(ret);
+}
+
+/**
+ * @deprecated
+ */
+public void done(RemoteCall call) throws RemoteException {
+ /* Does nothing */
+}
+
+public void writeExternal(ObjectOutput out) throws IOException {
+ if (manager == null) {
+ throw new IOException("no connection");
+ }
+ manager.write(out);
+ objid.write(out);
+ out.writeByte(RETURN_ACK);
+}
+
+public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ manager = UnicastConnectionManager.read(in);
+ objid = ObjID.read(in);
+ if (in.readByte() != RETURN_ACK) {
+ throw new IOException("no ack found");
+ }
+}
+
+public boolean remoteEquals(RemoteRef ref) {
+ throw new Error("Not implemented");
+}
+
+public int remoteHashCode() {
+ throw new Error("Not implemented");
+}
+
+public String getRefClass(ObjectOutput out) {
+ return ("UnicastRef");
+}
+
+public String remoteToString() {
+ throw new Error("Not implemented");
+}
+
+public void dump(UnicastConnection conn) {
+ try {
+ DataInputStream din = conn.getDataInputStream();
+ for (;;) {
+ int b = din.readUnsignedByte();
+ System.out.print(Integer.toHexString(b));
+ if (b >= 32 && b < 128) {
+ System.out.print(": " + (char)b);
+ }
+ System.out.println();
+ }
+ }
+ catch (IOException _) {
+ }
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/UnicastRemoteCall.java b/libjava/gnu/java/rmi/server/UnicastRemoteCall.java
new file mode 100644
index 0000000..42759e7
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/UnicastRemoteCall.java
@@ -0,0 +1,301 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.lang.Exception;
+import java.io.IOException;
+import java.io.ObjectOutput;
+import java.io.ObjectInput;
+import java.io.StreamCorruptedException;
+import java.rmi.server.RemoteCall;
+import java.util.Vector;
+
+public class UnicastRemoteCall
+ implements RemoteCall {
+
+private UnicastConnection conn;
+private Object result;
+private Object object;
+private int opnum;
+private long hash;
+private Vector vec;
+private int ptr;
+
+/**
+ * Incoming call.
+ */
+UnicastRemoteCall(UnicastConnection conn) {
+ this.conn = conn;
+}
+
+/**
+ * Outgoing call.
+ */
+UnicastRemoteCall(Object obj, int opnum, long hash) {
+ this.object = obj;
+ this.opnum = opnum;
+ this.hash = hash;
+}
+
+public ObjectOutput getOutputStream() throws IOException {
+ vec = new Vector();
+ return (new DummyObjectOutputStream());
+}
+
+public void releaseOutputStream() throws IOException {
+ // Does nothing.
+}
+
+public ObjectInput getInputStream() throws IOException {
+ if (conn != null) {
+ return (conn.getObjectInputStream());
+ }
+ else {
+ ptr = 0;
+ return (new DummyObjectInputStream());
+ }
+}
+
+public void releaseInputStream() throws IOException {
+ // Does nothing.
+}
+
+public ObjectOutput getResultStream(boolean success) throws IOException, StreamCorruptedException {
+ vec = new Vector();
+ return (new DummyObjectOutputStream());
+}
+
+public void executeCall() throws Exception {
+ throw new Error("Not implemented");
+}
+
+public void done() throws IOException {
+ /* Does nothing */
+}
+
+Object returnValue() {
+ return (vec.elementAt(0));
+}
+
+Object[] getArguments() {
+ return (vec.toArray());
+}
+
+Object getObject() {
+ return (object);
+}
+
+int getOpnum() {
+ return (opnum);
+}
+
+long getHash() {
+ return (hash);
+}
+
+void setReturnValue(Object obj) {
+ vec.removeAllElements();
+ vec.addElement(obj);
+}
+
+/**
+ * Dummy object output class.
+ */
+private class DummyObjectOutputStream implements ObjectOutput {
+
+public void writeBoolean(boolean v) throws IOException {
+ vec.addElement(new Boolean(v));
+}
+
+public void writeByte(int v) throws IOException {
+ vec.addElement(new Byte((byte)v));
+}
+
+public void writeChar(int v) throws IOException {
+ vec.addElement(new Character((char)v));
+}
+
+public void writeDouble(double v) throws IOException {
+ vec.addElement(new Double(v));
+}
+
+public void writeFloat(float v) throws IOException {
+ vec.addElement(new Float(v));
+}
+
+public void writeInt(int v) throws IOException {
+ vec.addElement(new Integer(v));
+}
+
+public void writeLong(long v) throws IOException {
+ vec.addElement(new Long(v));
+}
+
+public void writeShort(int v) throws IOException {
+ vec.addElement(new Short((short)v));
+}
+
+public void writeObject(Object obj) throws IOException {
+ vec.addElement(obj);
+}
+
+public void write(byte b[]) throws IOException {
+ throw new IOException("not required");
+}
+
+public void write(byte b[], int off, int len) throws IOException {
+ throw new IOException("not required");
+}
+
+public void write(int b) throws IOException {
+ throw new IOException("not required");
+}
+
+public void writeBytes(String s) throws IOException {
+ throw new IOException("not required");
+}
+
+public void writeChars(String s) throws IOException {
+ throw new IOException("not required");
+}
+
+public void writeUTF(String str) throws IOException {
+ throw new IOException("not required");
+}
+
+public void flush() throws IOException {
+}
+
+public void close() throws IOException {
+}
+
+}
+
+/**
+ * Dummy object input class.
+ */
+private class DummyObjectInputStream implements ObjectInput {
+
+public boolean readBoolean() throws IOException {
+ Object obj = vec.elementAt(ptr++);
+ return (((Boolean)obj).booleanValue());
+}
+
+public byte readByte() throws IOException {
+ Object obj = vec.elementAt(ptr++);
+ return (((Byte)obj).byteValue());
+}
+
+public char readChar() throws IOException {
+ Object obj = vec.elementAt(ptr++);
+ return (((Character)obj).charValue());
+}
+
+public double readDouble() throws IOException {
+ Object obj = vec.elementAt(ptr++);
+ return (((Double)obj).doubleValue());
+}
+
+public float readFloat() throws IOException {
+ Object obj = vec.elementAt(ptr++);
+ return (((Float)obj).floatValue());
+}
+
+public int readInt() throws IOException {
+ Object obj = vec.elementAt(ptr++);
+ return (((Integer)obj).intValue());
+}
+
+public long readLong() throws IOException {
+ Object obj = vec.elementAt(ptr++);
+ return (((Long)obj).longValue());
+}
+
+public short readShort() throws IOException {
+ Object obj = vec.elementAt(ptr++);
+ return (((Short)obj).shortValue());
+}
+
+public Object readObject() throws IOException {
+ return (vec.elementAt(ptr++));
+}
+
+public int read(byte b[]) throws IOException {
+ throw new IOException("not required");
+}
+
+public int read(byte b[], int off, int len) throws IOException {
+ throw new IOException("not required");
+}
+
+public int read() throws IOException {
+ throw new IOException("not required");
+}
+
+public long skip(long n) throws IOException {
+ throw new IOException("not required");
+}
+
+public int available() throws IOException {
+ throw new IOException("not required");
+}
+
+public void readFully(byte b[]) throws IOException {
+ throw new IOException("not required");
+}
+
+public void readFully(byte b[], int off, int len) throws IOException {
+ throw new IOException("not required");
+}
+
+public String readLine() throws IOException {
+ throw new IOException("not required");
+}
+
+public String readUTF() throws IOException {
+ throw new IOException("not required");
+}
+
+public int readUnsignedByte() throws IOException {
+ throw new IOException("not required");
+}
+
+public int readUnsignedShort() throws IOException {
+ throw new IOException("not required");
+}
+
+public int skipBytes(int n) throws IOException {
+ throw new IOException("not required");
+}
+
+public void close() throws IOException {
+}
+
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/UnicastRemoteStub.java b/libjava/gnu/java/rmi/server/UnicastRemoteStub.java
new file mode 100644
index 0000000..244e7a8
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/UnicastRemoteStub.java
@@ -0,0 +1,40 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.rmi.server.RemoteStub;
+import java.rmi.server.RemoteRef;
+
+public class UnicastRemoteStub
+ extends RemoteStub {
+
+public static void setStubRef(RemoteStub stub, RemoteRef ref) {
+ setRef(stub, ref);
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/UnicastServer.java b/libjava/gnu/java/rmi/server/UnicastServer.java
new file mode 100644
index 0000000..d2cc7dc
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/UnicastServer.java
@@ -0,0 +1,119 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.util.Hashtable;
+import java.net.UnknownHostException;
+import java.rmi.server.ObjID;
+import java.rmi.server.UnicastRemoteObject;
+import java.rmi.server.UID;
+import java.rmi.server.RemoteRef;
+import java.rmi.RemoteException;
+import java.rmi.NoSuchObjectException;
+import gnu.java.rmi.dgc.DGCImpl;
+
+public class UnicastServer
+ implements ProtocolConstants {
+
+static private Hashtable objects = new Hashtable();
+static private DGCImpl dgc;
+
+public static void exportObject(UnicastServerRef obj) {
+ startDGC();
+ objects.put(obj.objid, obj);
+ obj.manager.startServer();
+}
+
+private static synchronized void startDGC() {
+ if (dgc == null) {
+ try {
+ dgc = new DGCImpl();
+ ((UnicastServerRef)dgc.getRef()).exportObject(dgc);
+ }
+ catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+}
+
+public static void dispatch(UnicastConnection conn) throws Exception {
+ switch (conn.getDataInputStream().readUnsignedByte()) {
+ case MESSAGE_CALL:
+ incomingMessageCall(conn);
+ break;
+ default:
+ throw new Exception("bad method type");
+ }
+}
+
+private static void incomingMessageCall(UnicastConnection conn) throws IOException {
+ ObjectInputStream in = conn.getObjectInputStream();
+
+ ObjID objid = ObjID.read(in);
+ int method = in.readInt();
+ long hash = in.readLong();
+
+//System.out.println("ObjID: " + objid + ", method: " + method + ", hash: " + hash);
+
+ // Use the objid to locate the relevant UnicastServerRef
+ UnicastServerRef uref = (UnicastServerRef)objects.get(objid);
+ Object returnval;
+ int returncode = RETURN_ACK;
+ if (uref != null) {
+ try {
+ // Dispatch the call to it.
+ returnval = uref.incomingMessageCall(conn, method, hash);
+ }
+ catch (Exception e) {
+ returnval = e;
+ returncode = RETURN_NACK;
+ }
+ }
+ else {
+ returnval = new NoSuchObjectException("");
+ returncode = RETURN_NACK;
+ }
+
+ conn.getDataOutputStream().writeByte(MESSAGE_CALL_ACK);
+
+ ObjectOutputStream out = conn.getObjectOutputStream();
+
+ out.writeByte(returncode);
+ (new UID()).write(out);
+ out.writeObject(returnval);
+
+ out.flush();
+}
+
+}
diff --git a/libjava/gnu/java/rmi/server/UnicastServerRef.java b/libjava/gnu/java/rmi/server/UnicastServerRef.java
new file mode 100644
index 0000000..290ea09
--- /dev/null
+++ b/libjava/gnu/java/rmi/server/UnicastServerRef.java
@@ -0,0 +1,198 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package gnu.java.rmi.server;
+
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.server.RemoteStub;
+import java.rmi.server.ObjID;
+import java.rmi.server.ServerRef;
+import java.rmi.server.RemoteRef;
+import java.rmi.server.ServerNotActiveException;
+import java.rmi.server.RMIClientSocketFactory;
+import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.server.UID;
+import java.rmi.server.Skeleton;
+import java.rmi.server.RemoteCall;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.Thread;
+import java.lang.Exception;
+import java.io.IOException;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Hashtable;
+
+public class UnicastServerRef
+ extends UnicastRef {
+
+final static private Class[] stubprototype = new Class[] { RemoteRef.class };
+
+Remote myself;
+private Skeleton skel;
+private RemoteStub stub;
+private Hashtable methods;
+
+public UnicastServerRef(ObjID id, int port, RMIServerSocketFactory ssf) {
+ super(id);
+ manager = UnicastConnectionManager.getInstance(port, ssf);
+}
+
+public RemoteStub exportObject(Remote obj) throws RemoteException {
+ if (myself == null) {
+ myself = obj;
+
+ // Find and install the stub
+ Class cls = obj.getClass();
+ stub = (RemoteStub)getHelperClass(cls, "_Stub");
+ if (stub == null) {
+ throw new RemoteException("failed to export: " + cls);
+ }
+
+ // Find and install the skeleton (if there is one)
+ skel = (Skeleton)getHelperClass(cls, "_Skel");
+
+ // Build hash of methods which may be called.
+ buildMethodHash(obj.getClass());
+
+ // Export it.
+ UnicastServer.exportObject(this);
+ }
+
+ return (stub);
+}
+
+private Object getHelperClass(Class cls, String type) {
+ try {
+ String classname = cls.getName();
+ Class scls = Class.forName(classname + type);
+ if (type.equals("_Stub")) {
+ try {
+ // JDK 1.2 stubs
+ Constructor con = scls.getConstructor(stubprototype);
+ return (con.newInstance(new Object[]{this}));
+ }
+ catch (NoSuchMethodException e) {
+ }
+ catch (InstantiationException e) {
+ }
+ catch (IllegalAccessException e) {
+ }
+ catch (IllegalArgumentException e) {
+ }
+ catch (InvocationTargetException e) {
+ }
+ // JDK 1.1 stubs
+ RemoteStub stub = (RemoteStub)scls.newInstance();
+ UnicastRemoteStub.setStubRef(stub, this);
+ return (stub);
+ }
+ else {
+ // JDK 1.1 skel
+ return (scls.newInstance());
+ }
+ }
+ catch (ClassNotFoundException e) {
+ }
+ catch (InstantiationException e) {
+ }
+ catch (IllegalAccessException e) {
+ }
+ return (null);
+}
+
+public String getClientHost() throws ServerNotActiveException {
+ throw new Error("Not implemented");
+}
+
+private void buildMethodHash(Class cls) {
+ methods = new Hashtable();
+ Method[] meths = cls.getMethods();
+ for (int i = 0; i < meths.length; i++) {
+ /* Don't need to include any java.xxx related stuff */
+ if (meths[i].getDeclaringClass().getName().startsWith("java.")) {
+ continue;
+ }
+ long hash = RMIHashes.getMethodHash(meths[i]);
+ methods.put(new Long (hash), meths[i]);
+//System.out.println("meth = " + meths[i] + ", hash = " + hash);
+ }
+}
+
+public Object incomingMessageCall(UnicastConnection conn, int method, long hash) throws Exception {
+//System.out.println("method = " + method + ", hash = " + hash);
+ // If method is -1 then this is JDK 1.2 RMI - so use the hash
+ // to locate the method
+ if (method == -1) {
+ Method meth = (Method)methods.get(new Long (hash));
+//System.out.println("class = " + myself.getClass() + ", meth = " + meth);
+ if (meth == null) {
+ throw new NoSuchMethodException();
+ }
+
+ ObjectInputStream in = conn.getObjectInputStream();
+ int nrargs = meth.getParameterTypes().length;
+ Object[] args = new Object[nrargs];
+ for (int i = 0; i < nrargs; i++) {
+ /**
+ * For debugging purposes - we don't handle CodeBases
+ * quite right so we don't always find the stubs. This
+ * lets us know that.
+ */
+ try {
+ args[i] = in.readObject();
+ }
+ catch (Exception t) {
+ t.printStackTrace();
+ throw t;
+ }
+ }
+ return (meth.invoke(myself, args));
+ }
+ // Otherwise this is JDK 1.1 style RMI - we find the skeleton
+ // and invoke it using the method number. We wrap up our
+ // connection system in a UnicastRemoteCall so it appears in a
+ // way the Skeleton can handle.
+ else {
+ if (skel == null) {
+ throw new NoSuchMethodException();
+ }
+ UnicastRemoteCall call = new UnicastRemoteCall(conn);
+ skel.dispatch(myself, call, method, hash);
+ return (call.returnValue());
+ }
+}
+
+}
diff --git a/libjava/java/rmi/AccessException.java b/libjava/java/rmi/AccessException.java
new file mode 100644
index 0000000..91d66b2
--- /dev/null
+++ b/libjava/java/rmi/AccessException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class AccessException
+ extends RemoteException {
+
+public static final long serialVersionUID = 6314925228044966088l;
+
+public AccessException(String s) {
+ super(s);
+}
+
+public AccessException(String s, Exception e) {
+ super (s, e);
+}
+
+}
diff --git a/libjava/java/rmi/AlreadyBoundException.java b/libjava/java/rmi/AlreadyBoundException.java
new file mode 100644
index 0000000..ef0c166
--- /dev/null
+++ b/libjava/java/rmi/AlreadyBoundException.java
@@ -0,0 +1,41 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class AlreadyBoundException
+ extends Exception {
+
+public AlreadyBoundException() {
+ super();
+}
+
+public AlreadyBoundException(String s) {
+ super (s);
+}
+
+}
diff --git a/libjava/java/rmi/ConnectException.java b/libjava/java/rmi/ConnectException.java
new file mode 100644
index 0000000..e55a274
--- /dev/null
+++ b/libjava/java/rmi/ConnectException.java
@@ -0,0 +1,42 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class ConnectException
+ extends RemoteException {
+
+
+public ConnectException(String s) {
+ super(s);
+}
+
+public ConnectException(String s, Exception e) {
+ super (s, e);
+}
+
+}
diff --git a/libjava/java/rmi/ConnectIOException.java b/libjava/java/rmi/ConnectIOException.java
new file mode 100644
index 0000000..bb7e298
--- /dev/null
+++ b/libjava/java/rmi/ConnectIOException.java
@@ -0,0 +1,42 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class ConnectIOException
+ extends RemoteException {
+
+
+public ConnectIOException(String s) {
+ super(s);
+}
+
+public ConnectIOException(String s, Exception e) {
+ super (s, e);
+}
+
+}
diff --git a/libjava/java/rmi/MarshalException.java b/libjava/java/rmi/MarshalException.java
new file mode 100644
index 0000000..988ec47
--- /dev/null
+++ b/libjava/java/rmi/MarshalException.java
@@ -0,0 +1,42 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class MarshalException
+ extends RemoteException {
+
+
+public MarshalException(String s) {
+ super(s);
+}
+
+public MarshalException(String s, Exception e) {
+ super (s, e);
+}
+
+}
diff --git a/libjava/java/rmi/MarshalledObject.java b/libjava/java/rmi/MarshalledObject.java
new file mode 100644
index 0000000..87e6963
--- /dev/null
+++ b/libjava/java/rmi/MarshalledObject.java
@@ -0,0 +1,51 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+import java.io.Serializable;
+
+public final class MarshalledObject
+ extends Object implements Serializable {
+
+public MarshalledObject(Object obj) {
+ throw new Error("Not implemented");
+}
+
+public boolean equals(Object obj) {
+ throw new Error("Not implemented");
+}
+
+public Object get() {
+ throw new Error("Not implemented");
+}
+
+public int hashCode() {
+ throw new Error("Not implemented");
+}
+
+}
diff --git a/libjava/java/rmi/Naming.java b/libjava/java/rmi/Naming.java
new file mode 100644
index 0000000..7646477
--- /dev/null
+++ b/libjava/java/rmi/Naming.java
@@ -0,0 +1,70 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.rmi.registry.Registry;
+import java.rmi.registry.LocateRegistry;
+
+public final class Naming {
+
+public static Remote lookup(String name) throws NotBoundException, MalformedURLException, RemoteException {
+ URL u = new URL("http:" + name);
+ return (getRegistry(u).lookup(u.getFile().substring(1)));
+}
+
+public static void bind(String name, Remote obj) throws AlreadyBoundException, MalformedURLException, RemoteException {
+ URL u = new URL("http:" + name);
+ getRegistry(u).bind(u.getFile().substring(1), obj);
+}
+
+public static void unbind(String name) throws RemoteException, NotBoundException, MalformedURLException {
+ URL u = new URL("http:" + name);
+ getRegistry(u).unbind(u.getFile().substring(1));
+}
+
+public static void rebind(String name, Remote obj) throws RemoteException, MalformedURLException {
+ URL u = new URL("http:" + name);
+ getRegistry(u).rebind(u.getFile().substring(1), obj);
+}
+
+public static String[] list(String name) throws RemoteException, MalformedURLException {
+ return (getRegistry(new URL("http:" + name)).list());
+}
+
+private static Registry getRegistry(URL u) throws RemoteException {
+ if (u.getPort() == -1) {
+ return (LocateRegistry.getRegistry(u.getHost()));
+ }
+ else {
+ return (LocateRegistry.getRegistry(u.getHost(), u.getPort()));
+ }
+}
+
+}
diff --git a/libjava/java/rmi/NoSuchObjectException.java b/libjava/java/rmi/NoSuchObjectException.java
new file mode 100644
index 0000000..7608fd9
--- /dev/null
+++ b/libjava/java/rmi/NoSuchObjectException.java
@@ -0,0 +1,39 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class NoSuchObjectException
+ extends RemoteException {
+
+public static final long serialVersionUID = 6619395951570472985L;
+
+public NoSuchObjectException(String s) {
+ super(s);
+}
+
+}
diff --git a/libjava/java/rmi/NotBoundException.java b/libjava/java/rmi/NotBoundException.java
new file mode 100644
index 0000000..f28ee6a
--- /dev/null
+++ b/libjava/java/rmi/NotBoundException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class NotBoundException
+ extends Exception {
+
+public static final long serialVersionUID = -1857741824849069317l;
+
+public NotBoundException() {
+ super();
+}
+
+public NotBoundException(String s) {
+ super (s);
+}
+
+}
diff --git a/libjava/java/rmi/RMISecurityException.java b/libjava/java/rmi/RMISecurityException.java
new file mode 100644
index 0000000..cbfbed2
--- /dev/null
+++ b/libjava/java/rmi/RMISecurityException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+import java.lang.SecurityException;
+
+public class RMISecurityException
+ extends SecurityException {
+
+public RMISecurityException(String n) {
+ super(n);
+}
+
+public RMISecurityException(String n, String a) {
+ super(n);
+}
+
+}
diff --git a/libjava/java/rmi/RMISecurityManager.java b/libjava/java/rmi/RMISecurityManager.java
new file mode 100644
index 0000000..d63d969
--- /dev/null
+++ b/libjava/java/rmi/RMISecurityManager.java
@@ -0,0 +1,139 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+import java.io.FileDescriptor;
+import java.lang.Thread;
+import java.lang.Class;
+import java.lang.SecurityManager;
+import java.net.InetAddress;
+import java.security.Permission;
+
+public class RMISecurityManager extends SecurityManager {
+
+public RMISecurityManager() {
+}
+
+public void checkAccept(String host, int port) {
+}
+
+public void checkAccess(Thread g) {
+}
+
+public void checkAccess(ThreadGroup g) {
+}
+
+public void checkAwtEventQueueAccess() {
+}
+
+public void checkConnect(String host, int port) {
+}
+
+public void checkConnect(String host, int port, Object context) {
+}
+
+public void checkCreateClassLoader() {
+}
+
+public void checkDelete(String file) {
+}
+
+public void checkExec(String cmd) {
+}
+
+public void checkExit(int status) {
+}
+
+public void checkLink(String lib) {
+}
+
+public void checkListen(int port) {
+}
+
+public void checkMemberAccess ( Class clazz, int which ) {
+}
+
+public void checkMulticast(InetAddress maddr) {
+}
+
+public void checkMulticast(InetAddress maddr, byte ttl) {
+}
+
+public void checkPackageAccess(String pkg) {
+}
+
+public void checkPackageDefinition(String pkg) {
+}
+
+public void checkPermission(Permission perm) {
+}
+
+public void checkPermission(Permission perm, Object context) {
+}
+
+public void checkPrintJobAccess() {
+}
+
+public void checkPropertiesAccess() {
+}
+
+public void checkPropertyAccess(String key) {
+}
+
+/* public void checkPropertyAccess(String key, String def) {
+}*/
+
+public void checkRead(FileDescriptor fd) {
+}
+
+public void checkRead(String file) {
+}
+
+public void checkRead(String file, Object context) {
+}
+
+public void checkSecurityAccess(String action) {
+}
+
+public void checkSetFactory() {
+}
+
+public void checkSystemClipboardAccess() {
+}
+
+public boolean checkTopLevelWindow(Object window) {
+ return (true);
+}
+
+public void checkWrite(FileDescriptor fd) {
+}
+
+public void checkWrite(String file) {
+}
+
+}
diff --git a/libjava/java/rmi/Remote.java b/libjava/java/rmi/Remote.java
new file mode 100644
index 0000000..f9aab0b
--- /dev/null
+++ b/libjava/java/rmi/Remote.java
@@ -0,0 +1,31 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public interface Remote {
+}
diff --git a/libjava/java/rmi/RemoteException.java b/libjava/java/rmi/RemoteException.java
new file mode 100644
index 0000000..5127a5a
--- /dev/null
+++ b/libjava/java/rmi/RemoteException.java
@@ -0,0 +1,85 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+import java.lang.Throwable;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+
+public class RemoteException
+ extends IOException {
+
+public static final long serialVersionUID = -5148567311918794206l;
+
+public Throwable detail;
+
+public RemoteException() {
+ super();
+ detail = null;
+}
+
+public RemoteException(String s) {
+ super(s);
+ detail = null;
+}
+
+public RemoteException(String s, Throwable e) {
+ super(s);
+ detail = e;
+}
+
+public String getMessage() {
+ if (detail == null) {
+ return (super.getMessage());
+ }
+ else {
+ return (super.getMessage() + "; nested exception is: " + detail.getMessage());
+ }
+}
+
+public void printStackTrace(PrintStream s) {
+ if (detail != null) {
+ detail.printStackTrace(s);
+ }
+ super.printStackTrace(s);
+}
+
+public void printStackTrace(PrintWriter s) {
+ if (detail != null) {
+ detail.printStackTrace(s);
+ }
+ super.printStackTrace(s);
+}
+
+public void printStackTrace() {
+ printStackTrace(System.err);
+}
+
+}
diff --git a/libjava/java/rmi/ServerError.java b/libjava/java/rmi/ServerError.java
new file mode 100644
index 0000000..71e2d06
--- /dev/null
+++ b/libjava/java/rmi/ServerError.java
@@ -0,0 +1,37 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class ServerError
+ extends RemoteException {
+
+public ServerError(String s, Error e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/ServerException.java b/libjava/java/rmi/ServerException.java
new file mode 100644
index 0000000..f7ec303
--- /dev/null
+++ b/libjava/java/rmi/ServerException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class ServerException
+ extends RemoteException {
+
+public static final long serialVersionUID = -4775845313121906682l;
+
+public ServerException(String s) {
+ super(s);
+}
+
+public ServerException(String s, Exception e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/ServerRuntimeException.java b/libjava/java/rmi/ServerRuntimeException.java
new file mode 100644
index 0000000..9f76f61
--- /dev/null
+++ b/libjava/java/rmi/ServerRuntimeException.java
@@ -0,0 +1,37 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class ServerRuntimeException
+ extends RemoteException {
+
+public ServerRuntimeException(String s, Exception e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/StubNotFoundException.java b/libjava/java/rmi/StubNotFoundException.java
new file mode 100644
index 0000000..c6d70cf
--- /dev/null
+++ b/libjava/java/rmi/StubNotFoundException.java
@@ -0,0 +1,41 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class StubNotFoundException
+ extends RemoteException {
+
+public StubNotFoundException(String s) {
+ super(s);
+}
+
+public StubNotFoundException(String s, Exception e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/UnexpectedException.java b/libjava/java/rmi/UnexpectedException.java
new file mode 100644
index 0000000..b65d661
--- /dev/null
+++ b/libjava/java/rmi/UnexpectedException.java
@@ -0,0 +1,41 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class UnexpectedException
+ extends RemoteException {
+
+public UnexpectedException(String s) {
+ super(s);
+}
+
+public UnexpectedException(String s, Exception e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/UnknownHostException.java b/libjava/java/rmi/UnknownHostException.java
new file mode 100644
index 0000000..06263b2
--- /dev/null
+++ b/libjava/java/rmi/UnknownHostException.java
@@ -0,0 +1,41 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class UnknownHostException
+ extends RemoteException {
+
+public UnknownHostException(String s) {
+ super(s);
+}
+
+public UnknownHostException(String s, Exception e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/UnmarshalException.java b/libjava/java/rmi/UnmarshalException.java
new file mode 100644
index 0000000..68adfdf
--- /dev/null
+++ b/libjava/java/rmi/UnmarshalException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi;
+
+public class UnmarshalException
+ extends RemoteException {
+
+public static final long serialVersionUID = 594380845140740218l;
+
+public UnmarshalException(String s) {
+ super(s);
+}
+
+public UnmarshalException(String s, Exception e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/activation/Activatable.java b/libjava/java/rmi/activation/Activatable.java
new file mode 100644
index 0000000..a3e712f
--- /dev/null
+++ b/libjava/java/rmi/activation/Activatable.java
@@ -0,0 +1,93 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.rmi.server.RemoteServer;
+import java.rmi.server.RMIClientSocketFactory;
+import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.RemoteException;
+import java.rmi.Remote;
+import java.rmi.NoSuchObjectException;
+import java.rmi.MarshalledObject;
+
+public abstract class Activatable
+ extends RemoteServer {
+
+protected Activatable(String location, MarshalledObject data, boolean restart, int port) throws ActivationException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+protected Activatable(String location, MarshalledObject data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws ActivationException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+protected Activatable(ActivationID id, int port) throws RemoteException {
+ throw new Error("Not implemented");
+}
+
+protected Activatable(ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException {
+ throw new Error("Not implemented");
+}
+
+protected ActivationID getID() {
+ throw new Error("Not implemented");
+}
+
+public static Remote register(ActivationDesc desc) throws UnknownGroupException, ActivationException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+public static boolean inactive(ActivationID id) throws UnknownObjectException, ActivationException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+public static void unregister(ActivationID id) throws UnknownObjectException, ActivationException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+public static ActivationID exportObject(Remote obj, String location, MarshalledObject data, boolean restart, int port) throws ActivationException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+public static ActivationID exportObject(Remote obj, String location, MarshalledObject data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws ActivationException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+public static Remote exportObject(Remote obj, ActivationID id, int port) throws RemoteException {
+ throw new Error("Not implemented");
+}
+
+public static Remote exportObject(Remote obj, ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException {
+ throw new Error("Not implemented");
+}
+
+public static boolean unexportObject(Remote obj, boolean force) throws NoSuchObjectException {
+ throw new Error("Not implemented");
+}
+
+}
diff --git a/libjava/java/rmi/activation/ActivateFailedException.java b/libjava/java/rmi/activation/ActivateFailedException.java
new file mode 100644
index 0000000..0352817
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivateFailedException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.rmi.RemoteException;
+
+public class ActivateFailedException
+ extends RemoteException {
+
+public ActivateFailedException(String s) {
+ super(s);
+}
+
+public ActivateFailedException(String s, Exception ex) {
+ super(s, ex);
+}
+
+}
diff --git a/libjava/java/rmi/activation/ActivationDesc.java b/libjava/java/rmi/activation/ActivationDesc.java
new file mode 100644
index 0000000..192fb5c
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivationDesc.java
@@ -0,0 +1,102 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.io.Serializable;
+import java.rmi.MarshalledObject;
+
+public final class ActivationDesc
+ implements Serializable {
+
+private ActivationGroupID groupid;
+private String classname;
+private String location;
+private MarshalledObject data;
+private boolean restart;
+
+public ActivationDesc(String className, String location, MarshalledObject data) throws ActivationException {
+ this(ActivationGroup.currentGroupID(), className, location, data, false);
+}
+
+public ActivationDesc(String className, String location, MarshalledObject data, boolean restart) throws ActivationException {
+ this(ActivationGroup.currentGroupID(), className, location, data, restart);
+}
+
+public ActivationDesc(ActivationGroupID groupID, String className, String location, MarshalledObject data) {
+ this(groupID, className, location, data, false);
+}
+
+public ActivationDesc(ActivationGroupID groupID, String className, String location, MarshalledObject data, boolean restart) {
+ this.groupid = groupID;
+ this.classname = className;
+ this.location = location;
+ this.data = data;
+ this.restart = restart;
+}
+
+public ActivationGroupID getGroupID() {
+ return (groupid);
+}
+
+public String getClassName() {
+ return (classname);
+}
+
+public String getLocation() {
+ return (location);
+}
+
+public MarshalledObject getData() {
+ return (data);
+}
+
+public boolean getRestartMode() {
+ return (restart);
+}
+
+public boolean equals(Object obj) {
+ if (!(obj instanceof ActivationDesc)) {
+ return (false);
+ }
+ ActivationDesc that = (ActivationDesc)obj;
+
+ if (this.groupid.equals(that.groupid) &&
+ this.classname.equals(that.classname) &&
+ this.location.equals(that.location) &&
+ this.data.equals(that.data) &&
+ this.restart == that.restart) {
+ return (true);
+ }
+ return (false);
+}
+
+public int hashCode() {
+ return (groupid.hashCode() ^ classname.hashCode() ^ location.hashCode() ^ data.hashCode());
+}
+
+}
diff --git a/libjava/java/rmi/activation/ActivationException.java b/libjava/java/rmi/activation/ActivationException.java
new file mode 100644
index 0000000..d72e1a6
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivationException.java
@@ -0,0 +1,78 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+public class ActivationException
+ extends Exception {
+
+public Throwable detail;
+
+public ActivationException() {
+ super();
+}
+
+public ActivationException(String s) {
+ super(s);
+}
+
+public ActivationException(String s, Throwable ex) {
+ super(s);
+ detail = ex;
+}
+
+public String getMessage() {
+ if (detail == null) {
+ return (super.getMessage());
+ }
+ else {
+ return (super.getMessage() + ":" + detail.getMessage());
+ }
+}
+
+public void printStackTrace(PrintStream s) {
+ if (detail != null) {
+ detail.printStackTrace(s);
+ }
+ super.printStackTrace(s);
+}
+
+public void printStackTrace() {
+ printStackTrace(System.err);
+}
+
+public void printStackTrace(PrintWriter s) {
+ if (detail != null) {
+ detail.printStackTrace(s);
+ }
+ super.printStackTrace(s);
+}
+
+}
diff --git a/libjava/java/rmi/activation/ActivationGroup.java b/libjava/java/rmi/activation/ActivationGroup.java
new file mode 100644
index 0000000..40316c0
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivationGroup.java
@@ -0,0 +1,73 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.rmi.server.UnicastRemoteObject;
+import java.rmi.RemoteException;
+import java.rmi.Remote;
+import java.rmi.MarshalledObject;
+
+public abstract class ActivationGroup
+ extends UnicastRemoteObject
+ implements ActivationInstantiator {
+
+protected ActivationGroup(ActivationGroupID groupID) throws RemoteException {
+ throw new Error("Not implemented");
+}
+
+public boolean inactiveObject(ActivationID id) throws ActivationException, UnknownObjectException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+public abstract void activeObject(ActivationID id, Remote obj) throws ActivationException, UnknownObjectException, RemoteException;
+
+public static ActivationGroup createGroup(ActivationGroupID id, ActivationGroupDesc desc, long incarnation) throws ActivationException {
+ throw new Error("Not implemented");
+}
+
+public static ActivationGroupID currentGroupID() {
+ throw new Error("Not implemented");
+}
+
+public static void setSystem(ActivationSystem system) throws ActivationException {
+ throw new Error("Not implemented");
+}
+
+public static ActivationSystem getSystem() throws ActivationException {
+ throw new Error("Not implemented");
+}
+
+protected void activeObject(ActivationID id, MarshalledObject mobj) throws ActivationException, UnknownObjectException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+protected void inactiveGroup() throws UnknownGroupException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+}
diff --git a/libjava/java/rmi/activation/ActivationGroupDesc.java b/libjava/java/rmi/activation/ActivationGroupDesc.java
new file mode 100644
index 0000000..1dd90e6
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivationGroupDesc.java
@@ -0,0 +1,120 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.io.Serializable;
+import java.util.Properties;
+import java.rmi.MarshalledObject;
+
+public final class ActivationGroupDesc
+ implements Serializable {
+
+public static class CommandEnvironment
+ implements Serializable {
+
+private String cmdpath;
+private String[] argv;
+
+public CommandEnvironment(String cmdpath, String[] argv) {
+ this.cmdpath = cmdpath;
+ this.argv = argv;
+}
+
+public String getCommandPath() {
+ return (cmdpath);
+}
+
+public String[] getCommandOptions() {
+ return (argv);
+}
+
+public boolean equals(Object obj) {
+ if (!(obj instanceof CommandEnvironment)) {
+ return (false);
+ }
+ CommandEnvironment that = (CommandEnvironment)obj;
+
+ if (!this.cmdpath.equals(that.cmdpath)) {
+ return (false);
+ }
+
+ int len = this.argv.length;
+ if (len != that.argv.length) {
+ return (false);
+ }
+ for (int i = 0; i < len; i++) {
+ if (!this.argv[i].equals(that.argv[i])) {
+ return (false);
+ }
+ }
+ return (true);
+}
+
+public int hashCode() {
+ return (cmdpath.hashCode()); // Not a very good hash code.
+}
+
+}
+
+public ActivationGroupDesc(Properties overrides, ActivationGroupDesc.CommandEnvironment cmd) {
+ throw new Error("Not implemented");
+}
+
+public ActivationGroupDesc(String className, String location, MarshalledObject data, Properties overrides, ActivationGroupDesc.CommandEnvironment cmd) {
+ throw new Error("Not implemented");
+}
+
+public String getClassName() {
+ throw new Error("Not implemented");
+}
+
+public String getLocation() {
+ throw new Error("Not implemented");
+}
+
+public MarshalledObject getData() {
+ throw new Error("Not implemented");
+}
+
+public Properties getPropertyOverrides() {
+ throw new Error("Not implemented");
+}
+
+public ActivationGroupDesc.CommandEnvironment getCommandEnvironment() {
+ throw new Error("Not implemented");
+}
+
+public boolean equals(Object obj) {
+ throw new Error("Not implemented");
+}
+
+public int hashCode() {
+ throw new Error("Not implemented");
+}
+
+}
diff --git a/libjava/java/rmi/activation/ActivationGroupID.java b/libjava/java/rmi/activation/ActivationGroupID.java
new file mode 100644
index 0000000..e0e5592
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivationGroupID.java
@@ -0,0 +1,59 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.io.Serializable;
+
+public class ActivationGroupID
+ implements Serializable {
+
+private ActivationSystem system;
+
+public ActivationGroupID(ActivationSystem system) {
+ this.system = system;
+}
+
+public ActivationSystem getSystem() {
+ return (system);
+}
+
+public int hashCode() {
+ return (system.hashCode());
+}
+
+public boolean equals(Object obj) {
+ if (obj instanceof ActivationGroupID) {
+ ActivationGroupID that = (ActivationGroupID)obj;
+ if (this.system.equals(that.system)) {
+ return (true);
+ }
+ }
+ return (false);
+}
+
+}
diff --git a/libjava/java/rmi/activation/ActivationID.java b/libjava/java/rmi/activation/ActivationID.java
new file mode 100644
index 0000000..750f6cb
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivationID.java
@@ -0,0 +1,61 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.io.Serializable;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
+public class ActivationID
+ implements Serializable {
+
+private Activator activator;
+
+public ActivationID(Activator activator) {
+ this.activator = activator;
+}
+
+public Remote activate(boolean force) throws ActivationException, UnknownObjectException, RemoteException {
+ throw new Error("Not implemented");
+}
+
+public int hashCode() {
+ return (activator.hashCode());
+}
+
+public boolean equals(Object obj) {
+ if (obj instanceof ActivationID) {
+ ActivationID that = (ActivationID)obj;
+ if (this.activator.equals(that.activator)) {
+ return (true);
+ }
+ }
+ return (false);
+}
+
+}
diff --git a/libjava/java/rmi/activation/ActivationInstantiator.java b/libjava/java/rmi/activation/ActivationInstantiator.java
new file mode 100644
index 0000000..71cd799
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivationInstantiator.java
@@ -0,0 +1,39 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.MarshalledObject;
+
+public interface ActivationInstantiator
+ extends Remote {
+
+public MarshalledObject newInstance(ActivationID id, ActivationDesc desc) throws ActivationException, RemoteException;
+
+}
diff --git a/libjava/java/rmi/activation/ActivationMonitor.java b/libjava/java/rmi/activation/ActivationMonitor.java
new file mode 100644
index 0000000..21d269a
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivationMonitor.java
@@ -0,0 +1,41 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.MarshalledObject;
+
+public interface ActivationMonitor
+ extends Remote {
+
+public void inactiveObject(ActivationID id) throws UnknownObjectException, RemoteException;
+public void activeObject(ActivationID id, MarshalledObject obj) throws UnknownObjectException, RemoteException;
+public void inactiveGroup(ActivationGroupID id, long incarnation) throws UnknownGroupException, RemoteException;
+
+}
diff --git a/libjava/java/rmi/activation/ActivationSystem.java b/libjava/java/rmi/activation/ActivationSystem.java
new file mode 100644
index 0000000..c937da4
--- /dev/null
+++ b/libjava/java/rmi/activation/ActivationSystem.java
@@ -0,0 +1,49 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
+public interface ActivationSystem
+ extends Remote {
+
+public static final int SYSTEM_PORT = 0; // XXX
+
+public ActivationID registerObject(ActivationDesc desc) throws ActivationException, UnknownGroupException, RemoteException;
+public void unregisterObject(ActivationID id) throws ActivationException, UnknownObjectException, RemoteException;
+public ActivationGroupID registerGroup(ActivationGroupDesc desc) throws ActivationException, RemoteException;
+public ActivationMonitor activeGroup(ActivationGroupID id, ActivationInstantiator group, long incarnation) throws UnknownGroupException, ActivationException, RemoteException;
+public void unregisterGroup(ActivationGroupID id) throws ActivationException, UnknownGroupException, RemoteException;
+public void shutdown() throws RemoteException;
+public ActivationDesc setActivationDesc(ActivationID id, ActivationDesc desc) throws ActivationException, UnknownObjectException, UnknownGroupException, RemoteException;
+public ActivationGroupDesc setActivationGroupDesc(ActivationGroupID id, ActivationGroupDesc desc) throws ActivationException, UnknownGroupException, RemoteException;
+public ActivationDesc getActivationDesc(ActivationID id) throws ActivationException, UnknownObjectException, RemoteException;
+public ActivationGroupDesc getActivationGroupDesc(ActivationGroupID id) throws ActivationException, UnknownGroupException, RemoteException;
+
+}
diff --git a/libjava/java/rmi/activation/Activator.java b/libjava/java/rmi/activation/Activator.java
new file mode 100644
index 0000000..82dbc60
--- /dev/null
+++ b/libjava/java/rmi/activation/Activator.java
@@ -0,0 +1,39 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.MarshalledObject;
+
+public interface Activator
+ extends Remote {
+
+public MarshalledObject activate(ActivationID id, boolean force) throws ActivationException, UnknownObjectException, RemoteException;
+
+}
diff --git a/libjava/java/rmi/activation/UnknownGroupException.java b/libjava/java/rmi/activation/UnknownGroupException.java
new file mode 100644
index 0000000..655f2c6
--- /dev/null
+++ b/libjava/java/rmi/activation/UnknownGroupException.java
@@ -0,0 +1,37 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+public class UnknownGroupException
+ extends ActivationException {
+
+public UnknownGroupException(String s) {
+ super(s);
+}
+
+}
diff --git a/libjava/java/rmi/activation/UnknownObjectException.java b/libjava/java/rmi/activation/UnknownObjectException.java
new file mode 100644
index 0000000..b28bfaa
--- /dev/null
+++ b/libjava/java/rmi/activation/UnknownObjectException.java
@@ -0,0 +1,37 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.activation;
+
+public class UnknownObjectException
+ extends ActivationException {
+
+public UnknownObjectException(String s) {
+ super(s);
+}
+
+}
diff --git a/libjava/java/rmi/dgc/DGC.java b/libjava/java/rmi/dgc/DGC.java
new file mode 100644
index 0000000..3fd1bb6
--- /dev/null
+++ b/libjava/java/rmi/dgc/DGC.java
@@ -0,0 +1,41 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.dgc;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.server.ObjID;
+
+public interface DGC
+ extends Remote {
+
+public Lease dirty(ObjID[] ids, long sequenceNum, Lease lease) throws RemoteException;
+
+public void clean(ObjID[] ids, long sequenceNum, VMID vmid, boolean strong) throws RemoteException;
+
+}
diff --git a/libjava/java/rmi/dgc/Lease.java b/libjava/java/rmi/dgc/Lease.java
new file mode 100644
index 0000000..98dfb2df
--- /dev/null
+++ b/libjava/java/rmi/dgc/Lease.java
@@ -0,0 +1,58 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.dgc;
+
+import java.io.Serializable;
+import java.rmi.dgc.VMID;
+
+public final class Lease
+ implements Serializable {
+
+static final long serialVersionUID = -5713411624328831948L;
+
+private VMID vmid;
+private long value;
+
+public Lease(VMID id, long duration) {
+ vmid = id;
+ value = duration;
+}
+
+public VMID getVMID() {
+ return (vmid);
+}
+
+public long getValue() {
+ return (value);
+}
+
+public String toString() {
+ return ("[" + vmid.toString() + ", " + Long.toString(value) + "]");
+}
+
+}
diff --git a/libjava/java/rmi/dgc/VMID.java b/libjava/java/rmi/dgc/VMID.java
new file mode 100644
index 0000000..d264752e
--- /dev/null
+++ b/libjava/java/rmi/dgc/VMID.java
@@ -0,0 +1,106 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.dgc;
+
+import java.io.Serializable;
+import java.rmi.server.UID;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+public final class VMID
+ implements Serializable {
+
+static final long serialVersionUID = -538642295484486218L;
+static final boolean areWeUnique;
+static byte[] localAddr;
+
+private byte[] addr;
+private UID uid;
+
+static {
+ byte[] addr;
+ boolean awu = true;
+ try {
+ addr = InetAddress.getLocalHost().getAddress();
+ if (addr[0] == 127 && addr[1] == 0 && addr[2] == 0 && addr[3] == 1) {
+ awu = false;
+ }
+ }
+ catch (UnknownHostException _) {
+ addr = new byte[]{ 127, 0, 0, 1 };
+ awu = false;
+ }
+ localAddr = addr;
+ areWeUnique = awu;
+}
+
+public VMID() {
+ addr = localAddr;
+ uid = new UID();
+}
+
+public static boolean isUnique() {
+ return (areWeUnique);
+}
+
+public int hashCode() {
+ return (super.hashCode());
+}
+
+public boolean equals(Object obj) {
+ if (!(obj instanceof VMID)) {
+ return (false);
+ }
+ VMID other = (VMID)obj;
+ if (addr.length != other.addr.length) {
+ return (false);
+ }
+ for (int i = addr.length - 1; i >= 0; i--) {
+ if (addr[i] != other.addr[i]) {
+ return (false);
+ }
+ }
+ return (uid.equals(other.uid));
+}
+
+public String toString() {
+ StringBuffer buf = new StringBuffer("[VMID: ");
+ for (int i = 0; i < addr.length; i++) {
+ if (i > 0) {
+ buf.append(".");
+ }
+ buf.append(Integer.toString(addr[i]));
+ }
+ buf.append(" ");
+ buf.append(uid.toString());
+ buf.append("]");
+
+ return (buf.toString());
+}
+
+}
diff --git a/libjava/java/rmi/registry/LocateRegistry.java b/libjava/java/rmi/registry/LocateRegistry.java
new file mode 100644
index 0000000..269049d
--- /dev/null
+++ b/libjava/java/rmi/registry/LocateRegistry.java
@@ -0,0 +1,75 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.registry;
+
+import java.io.IOException;
+import java.rmi.RemoteException;
+import java.rmi.server.RMIClientSocketFactory;
+import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.server.RMISocketFactory;
+import java.rmi.server.RemoteRef;
+import java.rmi.server.ObjID;
+import java.net.Socket;
+
+import gnu.java.rmi.server.UnicastRef;
+import gnu.java.rmi.server.UnicastServerRef;
+import gnu.java.rmi.registry.RegistryImpl;
+import gnu.java.rmi.registry.RegistryImpl_Stub;
+
+public final class LocateRegistry {
+
+public static Registry getRegistry() throws RemoteException {
+ return (getRegistry("localhost", Registry.REGISTRY_PORT));
+}
+
+public static Registry getRegistry(int port) throws RemoteException {
+ return (getRegistry("localhost", port));
+}
+
+public static Registry getRegistry(String host) throws RemoteException {
+ return (getRegistry(host, Registry.REGISTRY_PORT));
+}
+
+public static Registry getRegistry(String host, int port) throws RemoteException {
+ return (getRegistry(host, port, RMISocketFactory.getSocketFactory()));
+}
+
+public static Registry getRegistry(String host, int port, RMIClientSocketFactory csf) throws RemoteException {
+ RemoteRef ref = new UnicastRef(new ObjID(ObjID.REGISTRY_ID), host, port, csf);
+ return (new RegistryImpl_Stub(ref));
+}
+
+public static Registry createRegistry(int port) throws RemoteException {
+ return (createRegistry(port, RMISocketFactory.getSocketFactory(), RMISocketFactory.getSocketFactory()));
+}
+
+public static Registry createRegistry(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException {
+ return (new RegistryImpl(port, csf, ssf));
+}
+
+}
diff --git a/libjava/java/rmi/registry/Registry.java b/libjava/java/rmi/registry/Registry.java
new file mode 100644
index 0000000..2a67f35
--- /dev/null
+++ b/libjava/java/rmi/registry/Registry.java
@@ -0,0 +1,51 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.registry;
+
+import java.rmi.RemoteException;
+import java.rmi.NotBoundException;
+import java.rmi.AccessException;
+import java.rmi.AlreadyBoundException;
+import java.rmi.Remote;
+
+public interface Registry
+ extends Remote {
+
+public static int REGISTRY_PORT = 1099;
+
+public Remote lookup(String name) throws RemoteException, NotBoundException, AccessException;
+
+public void bind(String name, Remote obj) throws RemoteException, AlreadyBoundException, AccessException;
+
+public void unbind(String name) throws RemoteException, NotBoundException, AccessException;
+
+public void rebind(String name, Remote obj) throws RemoteException, AccessException;
+
+public String[] list() throws RemoteException, AccessException;
+
+}
diff --git a/libjava/java/rmi/registry/RegistryHandler.java b/libjava/java/rmi/registry/RegistryHandler.java
new file mode 100644
index 0000000..d867a45
--- /dev/null
+++ b/libjava/java/rmi/registry/RegistryHandler.java
@@ -0,0 +1,39 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.registry;
+
+import java.rmi.RemoteException;
+import java.rmi.UnknownHostException;
+
+public interface RegistryHandler {
+
+public Registry registryStub(String host, int port) throws RemoteException, UnknownHostException;
+
+public Registry registryImpl(int port) throws RemoteException;
+
+}
diff --git a/libjava/java/rmi/server/ExportException.java b/libjava/java/rmi/server/ExportException.java
new file mode 100644
index 0000000..a3a2793
--- /dev/null
+++ b/libjava/java/rmi/server/ExportException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.rmi.RemoteException;
+
+public class ExportException
+ extends RemoteException {
+
+public ExportException(String s) {
+ super(s);
+}
+
+public ExportException(String s, Exception e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/server/LoaderHandler.java b/libjava/java/rmi/server/LoaderHandler.java
new file mode 100644
index 0000000..e96cf2c
--- /dev/null
+++ b/libjava/java/rmi/server/LoaderHandler.java
@@ -0,0 +1,44 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+
+public interface LoaderHandler {
+
+public static final String packagePrefix = "";
+
+public Class loadClass(String name) throws MalformedURLException, ClassNotFoundException;
+
+public Class loadClass(URL codebase, String name) throws MalformedURLException, ClassNotFoundException;
+
+public Object getSecurityContext(ClassLoader loader);
+
+}
diff --git a/libjava/java/rmi/server/LogStream.java b/libjava/java/rmi/server/LogStream.java
new file mode 100644
index 0000000..e5e1183
--- /dev/null
+++ b/libjava/java/rmi/server/LogStream.java
@@ -0,0 +1,92 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.io.PrintStream;
+import java.io.OutputStream;
+import java.io.IOException;
+
+public class LogStream
+ extends PrintStream {
+
+public static final int SILENT = 0;
+public static final int BRIEF = 1;
+public static final int VERBOSE = 2;
+
+private static PrintStream defStream;
+
+private LogStream(OutputStream s) {
+ super(s);
+}
+
+public static LogStream log(String name) {
+ throw new Error("Not implemented");
+}
+
+public static PrintStream getDefaultStream() {
+ return (defStream);
+}
+
+public static void setDefaultStream(PrintStream s) {
+ defStream = s;
+}
+
+public OutputStream getOutputStream() {
+ return (out);
+}
+
+public void setOutputStream(OutputStream s) {
+ out = s;
+}
+
+public void write(int b) {
+ super.write(b);
+}
+
+public void write(byte[] b, int off, int len) {
+ super.write(b, off, len);
+}
+
+public String toString() {
+ throw new Error("Not implemented");
+}
+
+public static int parseLevel(String s) {
+ if (s.equalsIgnoreCase("silent")) {
+ return (SILENT);
+ }
+ if (s.equalsIgnoreCase("brief")) {
+ return (BRIEF);
+ }
+ if (s.equalsIgnoreCase("verbose")) {
+ return (VERBOSE);
+ }
+ return (SILENT);
+}
+
+}
diff --git a/libjava/java/rmi/server/ObjID.java b/libjava/java/rmi/server/ObjID.java
new file mode 100644
index 0000000..038e3f9
--- /dev/null
+++ b/libjava/java/rmi/server/ObjID.java
@@ -0,0 +1,95 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.io.Serializable;
+import java.io.ObjectOutput;
+import java.io.ObjectInput;
+import java.io.IOException;
+import java.lang.Math;
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.util.Random;
+
+public final class ObjID
+ implements Serializable {
+
+static final long serialVersionUID = -6386392263968365220L;
+
+private static long next = 0x8000000000000000L;
+private static final Object lock = ObjID.class;
+
+public static final int REGISTRY_ID = 0;
+public static final int ACTIVATOR_ID = 1;
+public static final int DGC_ID = 2;
+
+private long objNum;
+private UID space;
+
+public ObjID() {
+ synchronized (lock) {
+ objNum = next++;
+ }
+ space = new UID();
+}
+
+public ObjID(int num) {
+ objNum = (long)num;
+ space = new UID((short)0);
+}
+
+public void write(ObjectOutput out) throws IOException {
+ DataOutput dout = (DataOutput)out;
+ dout.writeLong(objNum);
+ space.write(dout);
+}
+
+public static ObjID read(ObjectInput in) throws IOException {
+ DataInput din = (DataInput)in;
+ ObjID id = new ObjID();
+ id.objNum = din.readLong();
+ id.space = UID.read(din);
+ return (id);
+}
+
+public int hashCode() {
+ return ((int)objNum);
+}
+
+public boolean equals(Object obj) {
+ if (obj instanceof ObjID && this.objNum == ((ObjID)obj).objNum) {
+ return (true);
+ }
+ return (false);
+}
+
+public String toString() {
+ return ("[objNum: " + objNum + ", " + space + "]");
+}
+
+}
diff --git a/libjava/java/rmi/server/Operation.java b/libjava/java/rmi/server/Operation.java
new file mode 100644
index 0000000..c75fec4
--- /dev/null
+++ b/libjava/java/rmi/server/Operation.java
@@ -0,0 +1,46 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+public class Operation {
+
+private String operation;
+
+public Operation(String op) {
+ operation = op;
+}
+
+public String getOperation() {
+ return (operation);
+}
+
+public String toString() {
+ return (operation);
+}
+
+}
diff --git a/libjava/java/rmi/server/RMIClassLoader.java b/libjava/java/rmi/server/RMIClassLoader.java
new file mode 100644
index 0000000..76b48b7
--- /dev/null
+++ b/libjava/java/rmi/server/RMIClassLoader.java
@@ -0,0 +1,92 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.net.URL;
+import java.net.URLConnection;
+import java.io.IOException;
+import java.io.DataInputStream;
+import java.net.MalformedURLException;
+import java.util.StringTokenizer;
+
+public class RMIClassLoader {
+
+static private class MyClassLoader extends ClassLoader {
+
+Class defineClass(String name, byte[] data) {
+ return (defineClass(name, data, 0, data.length));
+}
+}
+static private MyClassLoader loader = new MyClassLoader();
+
+/**
+ * @deprecated
+ */
+public static Class loadClass(String name) throws MalformedURLException, ClassNotFoundException {
+ return (loadClass(System.getProperty("java.rmi.server.codebase"), name));
+}
+
+public static Class loadClass(URL codebase, String name) throws MalformedURLException, ClassNotFoundException {
+ URL u = new URL(codebase, name + ".class");
+ try {
+ URLConnection conn = u.openConnection();
+ DataInputStream strm = new DataInputStream(conn.getInputStream());
+ byte data[] = new byte[conn.getContentLength()];
+ strm.readFully(data);
+ return (loader.defineClass(name, data));
+ }
+ catch (IOException _) {
+ throw new ClassNotFoundException(name);
+ }
+}
+
+public static Class loadClass(String codebase, String name) throws MalformedURLException, ClassNotFoundException {
+ StringTokenizer tok = new StringTokenizer(codebase, ":");
+ while (tok.hasMoreTokens()) {
+ try {
+ return (loadClass(new URL(tok.nextToken()), name));
+ }
+ catch (ClassNotFoundException _) {
+ // Ignore - try the next one.
+ }
+ }
+ throw new ClassNotFoundException(name);
+}
+
+public static String getClassAnnotation(Class cl) {
+ return (null); // We don't yet do this.
+}
+
+/**
+ * @deprecated
+ */
+public static Object getSecurityContext(ClassLoader loader) {
+ throw new Error("Not implemented");
+}
+
+}
diff --git a/libjava/java/rmi/server/RMIClientSocketFactory.java b/libjava/java/rmi/server/RMIClientSocketFactory.java
new file mode 100644
index 0000000..1eda8da
--- /dev/null
+++ b/libjava/java/rmi/server/RMIClientSocketFactory.java
@@ -0,0 +1,37 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.net.Socket;
+import java.io.IOException;
+
+public interface RMIClientSocketFactory {
+
+public Socket createSocket(String host, int port) throws IOException;
+
+}
diff --git a/libjava/java/rmi/server/RMIFailureHandler.java b/libjava/java/rmi/server/RMIFailureHandler.java
new file mode 100644
index 0000000..e729593
--- /dev/null
+++ b/libjava/java/rmi/server/RMIFailureHandler.java
@@ -0,0 +1,34 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+public interface RMIFailureHandler {
+
+public boolean failure(Exception ex);
+
+}
diff --git a/libjava/java/rmi/server/RMIServerSocketFactory.java b/libjava/java/rmi/server/RMIServerSocketFactory.java
new file mode 100644
index 0000000..46245bd
--- /dev/null
+++ b/libjava/java/rmi/server/RMIServerSocketFactory.java
@@ -0,0 +1,37 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.net.ServerSocket;
+import java.io.IOException;
+
+public interface RMIServerSocketFactory {
+
+public ServerSocket createServerSocket(int port) throws IOException;
+
+}
diff --git a/libjava/java/rmi/server/RMISocketFactory.java b/libjava/java/rmi/server/RMISocketFactory.java
new file mode 100644
index 0000000..bc7f8c3
--- /dev/null
+++ b/libjava/java/rmi/server/RMISocketFactory.java
@@ -0,0 +1,74 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.net.Socket;
+import java.net.ServerSocket;
+import java.io.IOException;
+import gnu.java.rmi.server.RMIDefaultSocketFactory;
+
+public abstract class RMISocketFactory
+ implements RMIClientSocketFactory, RMIServerSocketFactory {
+
+static private RMISocketFactory defaultFactory;
+static private RMISocketFactory currentFactory;
+static private RMIFailureHandler currentHandler;
+
+static {
+ defaultFactory = new RMIDefaultSocketFactory();
+ currentFactory = defaultFactory;
+}
+
+public RMISocketFactory() {
+}
+
+public abstract Socket createSocket(String host, int port) throws IOException;
+
+public abstract ServerSocket createServerSocket(int port) throws IOException;
+
+public static void setSocketFactory(RMISocketFactory fac) throws IOException {
+ currentFactory = fac;
+}
+
+public static RMISocketFactory getSocketFactory() {
+ return (currentFactory);
+}
+
+public static RMISocketFactory getDefaultSocketFactory() {
+ return (defaultFactory);
+}
+
+public static void setFailureHandler(RMIFailureHandler fh) {
+ currentHandler = fh;
+}
+
+public static RMIFailureHandler getFailureHandler() {
+ return (currentHandler);
+}
+
+}
diff --git a/libjava/java/rmi/server/RemoteCall.java b/libjava/java/rmi/server/RemoteCall.java
new file mode 100644
index 0000000..ceb8abe
--- /dev/null
+++ b/libjava/java/rmi/server/RemoteCall.java
@@ -0,0 +1,46 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.lang.Exception;
+import java.io.IOException;
+import java.io.ObjectOutput;
+import java.io.ObjectInput;
+import java.io.StreamCorruptedException;
+
+public interface RemoteCall {
+
+public ObjectOutput getOutputStream() throws IOException;
+public void releaseOutputStream() throws IOException;
+public ObjectInput getInputStream() throws IOException;
+public void releaseInputStream() throws IOException;
+public ObjectOutput getResultStream(boolean success) throws IOException, StreamCorruptedException;
+public void executeCall() throws Exception;
+public void done() throws IOException;
+
+}
diff --git a/libjava/java/rmi/server/RemoteObject.java b/libjava/java/rmi/server/RemoteObject.java
new file mode 100644
index 0000000..6f12866
--- /dev/null
+++ b/libjava/java/rmi/server/RemoteObject.java
@@ -0,0 +1,119 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.io.Serializable;
+import java.rmi.Remote;
+import java.rmi.NoSuchObjectException;
+import java.rmi.UnmarshalException;
+import java.rmi.server.RemoteRef;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.IOException;
+import java.lang.ClassNotFoundException;
+import java.lang.InstantiationException;
+import java.lang.IllegalAccessException;
+
+public abstract class RemoteObject
+ implements Remote, Serializable {
+
+public static final long serialVersionUID = -3215090123894869218l;
+
+protected transient RemoteRef ref;
+
+protected RemoteObject() {
+ this(null);
+}
+
+protected RemoteObject(RemoteRef newref) {
+ ref = newref;
+}
+
+public RemoteRef getRef() {
+ return (ref);
+}
+
+public static Remote toStub(Remote obj) throws NoSuchObjectException {
+ throw new Error("Not implemented");
+}
+
+public int hashCode() {
+ if (ref == null) {
+ return (0);
+ }
+ else {
+ return (ref.hashCode());
+ }
+}
+
+public boolean equals(Object obj) {
+ // We only compare references.
+ return (this == obj);
+}
+
+public String toString() {
+ return (ref.toString());
+}
+
+private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
+ String cname = in.readUTF();
+ if (!cname.equals("")) {
+ cname = RemoteRef.packagePrefix + '.' + cname;
+ try {
+ Class cls = Class.forName(cname);
+ ref = (RemoteRef)cls.newInstance();
+ }
+ catch (InstantiationException e1) {
+ throw new UnmarshalException("failed to create ref");
+ }
+ catch (IllegalAccessException e2) {
+ throw new UnmarshalException("failed to create ref");
+ }
+ ref.readExternal(in);
+ }
+ else {
+ ref = (RemoteRef)in.readObject();
+ }
+}
+
+private void writeObject(ObjectOutputStream out) throws IOException, ClassNotFoundException {
+ if (ref == null) {
+ throw new UnmarshalException("no ref to serialize");
+ }
+ String cname = ref.getRefClass(out);
+ if (cname != null && cname.length() > 0) {
+ out.writeUTF(cname);
+ ref.writeExternal(out);
+ }
+ else {
+ out.writeUTF("");
+ out.writeObject(ref);
+ }
+}
+
+}
diff --git a/libjava/java/rmi/server/RemoteRef.java b/libjava/java/rmi/server/RemoteRef.java
new file mode 100644
index 0000000..f9e57ce
--- /dev/null
+++ b/libjava/java/rmi/server/RemoteRef.java
@@ -0,0 +1,51 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.lang.reflect.Method;
+import java.io.Externalizable;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.io.ObjectOutput;
+
+public interface RemoteRef
+ extends Externalizable {
+
+public static final long serialVersionUID = 0;
+public static final String packagePrefix = "gnu.java.rmi.server";
+
+public void invoke(RemoteCall call) throws Exception;
+public Object invoke(Remote obj, Method method, Object[] params, long opnum) throws Exception;
+public RemoteCall newCall(RemoteObject obj, Operation[] op, int opnum, long hash) throws RemoteException;
+public void done(RemoteCall call) throws RemoteException;
+public boolean remoteEquals(RemoteRef ref);
+public int remoteHashCode();
+public String getRefClass(ObjectOutput out);
+public String remoteToString();
+
+}
diff --git a/libjava/java/rmi/server/RemoteServer.java b/libjava/java/rmi/server/RemoteServer.java
new file mode 100644
index 0000000..24a564a
--- /dev/null
+++ b/libjava/java/rmi/server/RemoteServer.java
@@ -0,0 +1,56 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+public abstract class RemoteServer
+ extends RemoteObject {
+
+protected RemoteServer() {
+ super();
+}
+
+protected RemoteServer(RemoteRef ref) {
+ super(ref);
+}
+
+public static String getClientHost() throws ServerNotActiveException {
+ throw new Error("Not implemented");
+}
+
+public static void setLog(OutputStream out) {
+ throw new Error("Not implemented");
+}
+
+public static PrintStream getLog() {
+ throw new Error("Not implemented");
+}
+
+}
diff --git a/libjava/java/rmi/server/RemoteStub.java b/libjava/java/rmi/server/RemoteStub.java
new file mode 100644
index 0000000..c364cd8
--- /dev/null
+++ b/libjava/java/rmi/server/RemoteStub.java
@@ -0,0 +1,47 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+public abstract class RemoteStub
+ extends RemoteObject {
+
+public static final long serialVersionUID = -1585587260594494182l;
+
+protected RemoteStub() {
+ super();
+}
+
+protected RemoteStub(RemoteRef ref) {
+ super(ref);
+}
+
+protected static void setRef(RemoteStub stub, RemoteRef ref) {
+ stub.ref = ref;
+}
+
+}
diff --git a/libjava/java/rmi/server/ServerCloneException.java b/libjava/java/rmi/server/ServerCloneException.java
new file mode 100644
index 0000000..3912168
--- /dev/null
+++ b/libjava/java/rmi/server/ServerCloneException.java
@@ -0,0 +1,76 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.lang.CloneNotSupportedException;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+
+public class ServerCloneException
+ extends CloneNotSupportedException {
+
+public Exception detail;
+
+public ServerCloneException(String s) {
+ super(s);
+ detail = null;
+}
+
+public ServerCloneException(String s, Exception e) {
+ super(s);
+ detail = e;
+}
+
+public String getMessage() {
+ if (detail != null) {
+ return (super.getMessage() + ":" + detail.getMessage());
+ }
+ else {
+ return (super.getMessage());
+ }
+}
+
+public void printStackTrace(PrintStream s) {
+ if (detail != null) {
+ detail.printStackTrace(s);
+ }
+ super.printStackTrace(s);
+}
+
+public void printStackTrace() {
+ printStackTrace(System.err);
+}
+
+public void printStackTrace(PrintWriter s) {
+ if (detail != null) {
+ detail.printStackTrace(s);
+ }
+ super.printStackTrace(s);
+}
+
+}
diff --git a/libjava/java/rmi/server/ServerNotActiveException.java b/libjava/java/rmi/server/ServerNotActiveException.java
new file mode 100644
index 0000000..90747f7
--- /dev/null
+++ b/libjava/java/rmi/server/ServerNotActiveException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.lang.Exception;
+
+public class ServerNotActiveException
+ extends Exception {
+
+public ServerNotActiveException() {
+ super();
+}
+
+public ServerNotActiveException(String s) {
+ super(s);
+}
+
+}
diff --git a/libjava/java/rmi/server/ServerRef.java b/libjava/java/rmi/server/ServerRef.java
new file mode 100644
index 0000000..fc75669d
--- /dev/null
+++ b/libjava/java/rmi/server/ServerRef.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.rmi.server.RemoteStub;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.rmi.server.ServerNotActiveException;
+
+public interface ServerRef
+ extends RemoteRef {
+
+public static final long serialVersionUID = 0;
+
+public RemoteStub exportObject(Remote obj, Object data) throws RemoteException;
+public String getClientHost() throws ServerNotActiveException;
+
+}
diff --git a/libjava/java/rmi/server/Skeleton.java b/libjava/java/rmi/server/Skeleton.java
new file mode 100644
index 0000000..99339d5
--- /dev/null
+++ b/libjava/java/rmi/server/Skeleton.java
@@ -0,0 +1,39 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.rmi.Remote;
+import java.lang.Exception;
+import java.rmi.server.RemoteCall;
+
+public interface Skeleton {
+
+public void dispatch(Remote obj, RemoteCall theCall, int opnum, long hash) throws Exception;
+public Operation[] getOperations();
+
+}
diff --git a/libjava/java/rmi/server/SkeletonMismatchException.java b/libjava/java/rmi/server/SkeletonMismatchException.java
new file mode 100644
index 0000000..e74ae51
--- /dev/null
+++ b/libjava/java/rmi/server/SkeletonMismatchException.java
@@ -0,0 +1,41 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.rmi.RemoteException;
+
+public class SkeletonMismatchException
+ extends RemoteException {
+
+public static final long serialVersionUID = -7780460454818859281l;
+
+public SkeletonMismatchException(String s) {
+ super(s);
+}
+
+}
diff --git a/libjava/java/rmi/server/SkeletonNotFoundException.java b/libjava/java/rmi/server/SkeletonNotFoundException.java
new file mode 100644
index 0000000..26dfe88
--- /dev/null
+++ b/libjava/java/rmi/server/SkeletonNotFoundException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.rmi.RemoteException;
+
+public class SkeletonNotFoundException
+ extends RemoteException {
+
+public SkeletonNotFoundException(String s) {
+ super(s);
+}
+
+public SkeletonNotFoundException(String s, Exception e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/server/SocketSecurityException.java b/libjava/java/rmi/server/SocketSecurityException.java
new file mode 100644
index 0000000..10b0b80
--- /dev/null
+++ b/libjava/java/rmi/server/SocketSecurityException.java
@@ -0,0 +1,43 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.rmi.server.ExportException;
+
+public class SocketSecurityException
+ extends ExportException {
+
+public SocketSecurityException(String s) {
+ super(s);
+}
+
+public SocketSecurityException(String s, Exception e) {
+ super(s, e);
+}
+
+}
diff --git a/libjava/java/rmi/server/UID.java b/libjava/java/rmi/server/UID.java
new file mode 100644
index 0000000..49d256e
--- /dev/null
+++ b/libjava/java/rmi/server/UID.java
@@ -0,0 +1,120 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.io.Serializable;
+import java.io.DataOutput;
+import java.io.DataInput;
+import java.io.IOException;
+import java.util.Random;
+import java.lang.Thread;
+import java.lang.InterruptedException;
+
+public final class UID
+ implements Serializable {
+
+public static final long serialVersionUID = 1086053664494604050L;
+
+private static final Object lock = UID.class;
+private static long baseTime = System.currentTimeMillis();
+private static short nextCount = Short.MIN_VALUE;
+// This is sun's algorithm - don't ask me why ...
+private static final int uniqueNr = (new Object()).hashCode();
+
+private int unique;
+private long time;
+private short count;
+
+/**
+ * This is sun's algorithm - don't ask me why ...
+ */
+public UID() {
+ synchronized (lock) {
+ if (count == Short.MAX_VALUE) {
+ long newtime;
+ for (;;) {
+ newtime = System.currentTimeMillis();
+ if (newtime - baseTime > 1000) {
+ break;
+ }
+ try {
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException _) {
+ }
+ }
+ baseTime = newtime;
+ nextCount = Short.MIN_VALUE;
+ }
+ count = nextCount++;
+ unique = uniqueNr;
+ time = baseTime;
+ }
+}
+
+public UID(short num) {
+ unique = (int)num;
+ time = 0;
+ count = 0;
+}
+
+public int hashCode() {
+ return (unique);
+}
+
+public boolean equals(Object obj) {
+ if (obj instanceof UID) {
+ UID uid = (UID)obj;
+ if (this.unique == uid.unique &&
+ this.time == uid.time &&
+ this.count == uid.count) {
+ return (true);
+ }
+ }
+ return (false);
+}
+
+public String toString() {
+ return ("[UID: " + unique + "," + time + "," + count + "]");
+}
+
+public void write(DataOutput out) throws IOException {
+ out.writeInt(unique);
+ out.writeLong(time);
+ out.writeShort(count);
+}
+
+public static UID read(DataInput in) throws IOException {
+ UID id = new UID();
+ id.unique = in.readInt();
+ id.time = in.readLong();
+ id.count = in.readShort();
+ return (id);
+}
+
+}
diff --git a/libjava/java/rmi/server/UnicastRemoteObject.java b/libjava/java/rmi/server/UnicastRemoteObject.java
new file mode 100644
index 0000000..3f78893
--- /dev/null
+++ b/libjava/java/rmi/server/UnicastRemoteObject.java
@@ -0,0 +1,76 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+import java.rmi.RemoteException;
+import java.rmi.Remote;
+import java.rmi.server.RemoteRef;
+import java.rmi.NoSuchObjectException;
+import gnu.java.rmi.server.UnicastServerRef;
+
+public class UnicastRemoteObject
+ extends RemoteServer {
+
+protected UnicastRemoteObject() throws RemoteException {
+ this(0);
+}
+
+protected UnicastRemoteObject(int port) throws RemoteException {
+ this(port, RMISocketFactory.getSocketFactory(), RMISocketFactory.getSocketFactory());
+}
+
+protected UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException {
+ super(new UnicastServerRef(new ObjID(), port, ssf));
+}
+
+protected UnicastRemoteObject(RemoteRef ref) throws RemoteException {
+ super((UnicastServerRef)ref);
+}
+
+public Object clone() throws CloneNotSupportedException {
+ throw new Error("Not implemented");
+}
+
+public static RemoteStub exportObject(Remote obj) throws RemoteException {
+ UnicastServerRef sref = (UnicastServerRef)((RemoteObject)obj).getRef();
+ return (sref.exportObject(obj));
+}
+
+public static Remote exportObject(Remote obj, int port) throws RemoteException {
+ return (exportObject(obj));
+}
+
+public static Remote exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException {
+ return (exportObject(obj));
+}
+
+public static boolean unexportObject(Remote obj, boolean force) throws NoSuchObjectException {
+ throw new Error("Not implemented");
+}
+
+}
diff --git a/libjava/java/rmi/server/Unreferenced.java b/libjava/java/rmi/server/Unreferenced.java
new file mode 100644
index 0000000..20678d1
--- /dev/null
+++ b/libjava/java/rmi/server/Unreferenced.java
@@ -0,0 +1,34 @@
+/*
+ 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., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+ */
+
+package java.rmi.server;
+
+public interface Unreferenced {
+
+public void unreferenced();
+
+}