OSDN Git Service

2002-02-14 Mark Wielaard <mark@klomp.org>
authormark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Feb 2002 23:16:11 +0000 (23:16 +0000)
committermark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Feb 2002 23:16:11 +0000 (23:16 +0000)
    * java/math/BigInteger.java: import gnu.java.math.MPN not the whole
    package as a workaround for gcj 3.0.x

2002-02-14  Mark Wielaard <mark@klomp.org>

    * java/security/BasicPermission.java: extends with fully qualified
    classname as workaround for gcj 3.0.4.

2002-02-14  Eric Blake  <ebb9@email.byu.edu>

    * java/net/DatagramSocketImpl.java (setOption, getOption): Work
    around gcj bug of wrong emitted qualifier for inherited method.
    * java/net/SocketImpl.java (setOption, getOption): Ditto.
    * java/util/WeakHashMap.java (WeakEntrySet): Add non-private
    constructor to reduce amount of emitted bytecode. While this
    happens to work around a jikes 1.15 bug, it is still a useful
    patch even for correct compilers.
    * java/rmi/server/RMIClassLoader.java (MyClassLoader): Ditto.
    * gnu/java/rmi/server/UnicastRemoteCall.java
    (DummyObjectOutputStream, DummyObjectInputStream): Ditto.

2002-02-14  Eric Blake  <ebb9@email.byu.edu>

    * java/net/DatagramSocketImpl.java: Reformat (no code changes).
    * java/net/SocketImpl.java: Ditto.
    * java/rmi/server/RMIClassLoader.java: Ditto.
    * gnu/java/rmi/server/UnicastRemoteCall.java: Ditto.

2002-02-14  Mark Wielaard <mark@klomp.org>

    Thanks to Takashi Okamoto
    * java/util/Arrays.java (ArrayList.indexOf()): this.equals().
    * java/util/Arrays.java (ArrayList.lastIndexOf()): Likewise.
    * java/util/WeakHashMap.java (WeakEntry.getEntry()): this.get().

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49778 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/gnu/java/rmi/server/UnicastRemoteCall.java
libjava/java/math/BigInteger.java
libjava/java/net/DatagramSocketImpl.java
libjava/java/net/SocketImpl.java
libjava/java/rmi/server/RMIClassLoader.java
libjava/java/security/BasicPermission.java
libjava/java/util/Arrays.java
libjava/java/util/WeakHashMap.java

index 9688503..3a63171 100644 (file)
@@ -1,3 +1,40 @@
+2002-02-14  Mark Wielaard  <mark@klomp.org>
+
+       * java/math/BigInteger.java: import gnu.java.math.MPN not the whole
+       package as a workaround for gcj 3.0.x
+
+2002-02-14  Mark Wielaard <mark@klomp.org>
+
+       * java/security/BasicPermission.java: extends with fully qualified
+       classname as workaround for gcj 3.0.4.
+
+2002-02-14  Eric Blake  <ebb9@email.byu.edu>
+
+       * java/net/DatagramSocketImpl.java (setOption, getOption): Work
+       around gcj bug of wrong emitted qualifier for inherited method.
+       * java/net/SocketImpl.java (setOption, getOption): Ditto.
+       * java/util/WeakHashMap.java (WeakEntrySet): Add non-private
+       constructor to reduce amount of emitted bytecode. While this
+       happens to work around a jikes 1.15 bug, it is still a useful
+       patch even for correct compilers.
+       * java/rmi/server/RMIClassLoader.java (MyClassLoader): Ditto.
+       * gnu/java/rmi/server/UnicastRemoteCall.java
+       (DummyObjectOutputStream, DummyObjectInputStream): Ditto.
+
+2002-02-14  Eric Blake  <ebb9@email.byu.edu>
+
+       * java/net/DatagramSocketImpl.java: Reformat (no code changes).
+       * java/net/SocketImpl.java: Ditto.
+       * java/rmi/server/RMIClassLoader.java: Ditto.
+       * gnu/java/rmi/server/UnicastRemoteCall.java: Ditto.
+
+2002-02-14  Mark Wielaard <mark@klomp.org>
+
+       Thanks to Takashi Okamoto
+       * java/util/Arrays.java (ArrayList.indexOf()): this.equals().
+       * java/util/Arrays.java (ArrayList.lastIndexOf()): Likewise.
+       * java/util/WeakHashMap.java (WeakEntry.getEntry()): this.get().
+
 2002-02-13  Todd Stock  <toddastock@yahoo.com>
 
        Fix for PR libgcj/5670:
index 3ea0734..200538d 100644 (file)
@@ -1,5 +1,5 @@
-/*
-  Copyright (c) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* UnicastRemoteCall.java
+  Copyright (c) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -7,7 +7,7 @@ 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
@@ -45,267 +45,331 @@ 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 {
-}
-
-}
+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();
+    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
+  {
+    /**
+     * Non-private constructor to reduce bytecode emitted.
+     */
+    DummyObjectOutputStream()
+    {
+    }
+
+    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
+    {
+    }
+  } // class DummyObjectOutputStream
+
+  /**
+   * Dummy object input class.
+   */
+  private class DummyObjectInputStream implements ObjectInput
+  {
+    /**
+     * Non-private constructor to reduce bytecode emitted.
+     */
+    DummyObjectInputStream()
+    {
+    }
+
+    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
+    {
+    }
+  } // class DummyObjectInputStream
 
 }
index c6eaf55..e8c6b1d 100644 (file)
@@ -37,7 +37,7 @@ exception statement from your version. */
 
 package java.math;
 
-import gnu.java.math.*;
+import gnu.java.math.MPN;
 import java.util.Random;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
index c8d5452..df6e1ec 100644 (file)
@@ -1,5 +1,5 @@
 /* DatagramSocketImpl.java -- Abstract class for UDP socket implementations
-   Copyright (C) 1998, 1999 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999 2000, 2001, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -7,7 +7,7 @@ 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
@@ -45,10 +45,8 @@ import java.io.FileDescriptor;
  * Written using on-line Java Platform 1.2 API Specification, as well
  * as "The Java Class Libraries", 2nd edition (Addison-Wesley, 1998).
  * Status:  Believed complete and correct.
- */
-
-/**
- * This abstract class models a datagram socket implementation.  An
+ *
+ * <p>This abstract class models a datagram socket implementation.  An
  * actual implementation class would implement these methods, probably
  * via redirecting them to native code.
  *
@@ -64,7 +62,7 @@ public abstract class DatagramSocketImpl implements SocketOptions
   protected int localPort;
 
   /**
-   * The FileDescriptor object for this object. 
+   * The FileDescriptor object for this object.
    */
   protected FileDescriptor fd;
 
@@ -84,7 +82,7 @@ public abstract class DatagramSocketImpl implements SocketOptions
    * @exception SocketException If an error occurs
    */
   protected abstract void bind(int lport, InetAddress laddr)
-       throws SocketException;
+    throws SocketException;
 
   /**
    * This methods closes the socket
@@ -123,7 +121,7 @@ public abstract class DatagramSocketImpl implements SocketOptions
 
   /**
    * Receives a packet of data from the network  Will block until a packet
-   * arrives.  The packet info in populated into the passed in 
+   * arrives.  The packet info in populated into the passed in
    * DatagramPacket object.
    *
    * @param p A place to store the incoming packet.
@@ -152,7 +150,7 @@ public abstract class DatagramSocketImpl implements SocketOptions
    */
   protected abstract byte getTTL() throws IOException;
 
- /**
 /**
    * Sets the Time to Live (TTL) setting on this socket to the specified
    * value.
    *
@@ -179,7 +177,7 @@ public abstract class DatagramSocketImpl implements SocketOptions
    */
   protected abstract void join(InetAddress inetaddr) throws IOException;
 
- /**
 /**
    * Causes the socket to leave the specified multicast group.
    *
    * @param inetaddr The multicast address to leave
@@ -203,4 +201,36 @@ public abstract class DatagramSocketImpl implements SocketOptions
   {
     return localPort;
   }
+
+  /**
+   * Sets the specified option on a socket to the passed in object.  For
+   * options that take an integer argument, the passed in object is an
+   * <code>Integer</code>.  For options that are set to on or off, the
+   * value passed will be a <code>Boolean</code>.   The <code>option_id</code> 
+   * parameter is one of the defined constants in the superinterface.
+   *
+   * @param option_id The identifier of the option
+   * @param val The value to set the option to
+   *
+   * @exception SocketException If an error occurs
+   * @XXX This redeclaration from SocketOptions is a workaround to a gcj bug.
+   */
+  public abstract void setOption(int option_id, Object val)
+    throws SocketException;
+
+  /**
+   * Returns the current setting of the specified option.  The 
+   * <code>Object</code> returned will be an <code>Integer</code> for options 
+   * that have integer values.  For options that are set to on or off, a 
+   * <code>Boolean</code> will be returned.   The <code>option_id</code>
+   * is one of the defined constants in the superinterface.
+   *
+   * @param option_id The option identifier
+   *
+   * @return The current value of the option
+   *
+   * @exception SocketException If an error occurs
+   * @XXX This redeclaration from SocketOptions is a workaround to a gcj bug.
+   */
+  public abstract Object getOption(int option_id) throws SocketException;
 }
index af410ed..fb5a60c 100644 (file)
@@ -1,5 +1,5 @@
 /* SocketImpl.java -- Abstract socket implementation class
-   Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -7,7 +7,7 @@ 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
@@ -39,37 +39,35 @@ package java.net;
 
 import java.io.*;
 
- /* Written using on-line Java Platform 1.2 API Specification.
 * Believed complete and correct.
 */
+/* Written using on-line Java Platform 1.2 API Specification.
+ * Believed complete and correct.
+ */
 
-  /**
  * This abstract class serves as the parent class for socket implementations.
  * The implementation class serves an intermediary to native routines that
  * perform system specific socket operations.
  * <p>
  * A default implementation is provided by the system, but this can be
-   * changed via installing a <code>SocketImplFactory</code> (through a call 
-   * to the static method <code>Socket.setSocketImplFactory</code>).  A 
  * subclass of <code>Socket</code> can also pass in a <code>SocketImpl</code>
-   * to the <code>Socket(SocketImpl)</code> constructor to use an 
  * implementation different from the system default without installing
  * a factory.
  *
  * @author Aaron M. Renn (arenn@urbanophile.com)
  * @author Per Bothner <bothner@cygnus.com>
  */
+/**
+ * This abstract class serves as the parent class for socket implementations.
+ * The implementation class serves an intermediary to native routines that
+ * perform system specific socket operations.
+ * <p>
+ * A default implementation is provided by the system, but this can be
+ * changed via installing a <code>SocketImplFactory</code> (through a call
+ * to the static method <code>Socket.setSocketImplFactory</code>).  A
+ * subclass of <code>Socket</code> can also pass in a <code>SocketImpl</code>
+ * to the <code>Socket(SocketImpl)</code> constructor to use an
+ * implementation different from the system default without installing
+ * a factory.
+ *
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Per Bothner <bothner@cygnus.com>
+ */
 public abstract class SocketImpl implements SocketOptions
 {
-
-
   /**
    * The address of the remote end of the socket connection
    */
   protected InetAddress address;
 
   /**
-   * A FileDescriptor object representing this socket connection.  
+   * A FileDescriptor object representing this socket connection.
    */
   protected FileDescriptor fd;
 
@@ -86,7 +84,7 @@ public abstract class SocketImpl implements SocketOptions
   /**
    * Default, no-argument constructor for use by subclasses.
    */
-  public SocketImpl ()
+  public SocketImpl()
   {
   }
 
@@ -98,7 +96,7 @@ public abstract class SocketImpl implements SocketOptions
    *
    * @param stream true for a stream socket, false for a datagram socket
    */
-  protected abstract void create (boolean stream) throws IOException;
+  protected abstract void create(boolean stream) throws IOException;
 
   /**
    * Connects to the remote hostname and port specified as arguments.
@@ -108,7 +106,7 @@ public abstract class SocketImpl implements SocketOptions
    *
    * @exception IOException If an error occurs
    */
-  protected abstract void connect (String host, int port) throws IOException;
+  protected abstract void connect(String host, int port) throws IOException;
 
   /**
    * Connects to the remote address and port specified as arguments.
@@ -118,7 +116,7 @@ public abstract class SocketImpl implements SocketOptions
    *
    * @exception IOException If an error occurs
    */
-  protected abstract void connect (InetAddress host, int port)
+  protected abstract void connect(InetAddress host, int port)
     throws IOException;
 
   /**
@@ -133,7 +131,7 @@ public abstract class SocketImpl implements SocketOptions
    *
    * @exception IOException If an error occurs
    */
-  protected abstract void bind (InetAddress host, int port) throws IOException;
+  protected abstract void bind(InetAddress host, int port) throws IOException;
 
   /**
    * Starts listening for connections on a socket. The backlog parameter
@@ -142,10 +140,10 @@ public abstract class SocketImpl implements SocketOptions
    * number, additional connections will be refused.
    *
    * @param backlog The length of the pending connection queue
-   * 
+   *
    * @exception IOException If an error occurs
    */
-  protected abstract void listen (int backlog) throws IOException;
+  protected abstract void listen(int backlog) throws IOException;
 
   /**
    * Accepts a connection on this socket.
@@ -154,7 +152,7 @@ public abstract class SocketImpl implements SocketOptions
    *
    * @exception IOException If an error occurs
    */
-  protected abstract void accept (SocketImpl s) throws IOException;
+  protected abstract void accept(SocketImpl s) throws IOException;
 
   /**
    * Returns an <code>InputStream</code> object for reading from this socket.
@@ -167,7 +165,7 @@ public abstract class SocketImpl implements SocketOptions
 
   /**
    * Returns an <code>OutputStream</code> object for writing to this socket
-   * 
+   *
    * @return An <code>OutputStream</code> for writing to this socket.
    *
    * @exception IOException If an error occurs.
@@ -182,7 +180,7 @@ public abstract class SocketImpl implements SocketOptions
    *
    * @exception IOException If an error occurs
    */
-  protected abstract int available () throws IOException;
+  protected abstract int available() throws IOException;
 
   /**
    * Closes the socket.  This will normally cause any resources, such as the
@@ -193,45 +191,77 @@ public abstract class SocketImpl implements SocketOptions
    *
    * @exception IOException If an error occurs
    */
-  protected abstract void close () throws IOException;
+  protected abstract void close() throws IOException;
 
   /**
    * Returns the FileDescriptor objects for this socket.
    *
    * @return A FileDescriptor for this socket.
    */
-  protected FileDescriptor getFileDescriptor () { return fd; }
+  protected FileDescriptor getFileDescriptor() { return fd; }
 
   /**
    * Returns the remote address this socket is connected to
    *
    * @return The remote address
    */
-  protected InetAddress getInetAddress () { return address; }
+  protected InetAddress getInetAddress() { return address; }
 
   /**
    * Returns the remote port this socket is connected to
    *
    * @return The remote port
    */
-  protected int getPort () { return port; }
+  protected int getPort() { return port; }
 
   /**
    * Returns the local port this socket is bound to
    *
    * @return The local port
    */
-  protected int getLocalPort () { return localport; }
+  protected int getLocalPort() { return localport; }
 
   /**
-   * Returns a <code>String</code> representing the remote host and port of this
-   * socket.
+   * Returns a <code>String</code> representing the remote host and port of
+   * this socket.
    *
    * @return A <code>String</code> for this socket.
    */
-  public String toString ()
+  public String toString()
   {
-    return "[addr=" + address.toString() + ",port=" + Integer.toString(port) +
-      ",localport=" + Integer.toString(localport) + "]";
+    return "[addr=" + address.toString() + ",port=" + Integer.toString(port)
+      ",localport=" + Integer.toString(localport) + "]";
   }
+
+  /**
+   * Sets the specified option on a socket to the passed in object.  For
+   * options that take an integer argument, the passed in object is an
+   * <code>Integer</code>.  For options that are set to on or off, the
+   * value passed will be a <code>Boolean</code>.   The <code>option_id</code> 
+   * parameter is one of the defined constants in the superinterface.
+   *
+   * @param option_id The identifier of the option
+   * @param val The value to set the option to
+   *
+   * @exception SocketException If an error occurs
+   * @XXX This redeclaration from SocketOptions is a workaround to a gcj bug.
+   */
+  public abstract void setOption(int option_id, Object val)
+    throws SocketException;
+
+  /**
+   * Returns the current setting of the specified option.  The 
+   * <code>Object</code> returned will be an <code>Integer</code> for options 
+   * that have integer values.  For options that are set to on or off, a 
+   * <code>Boolean</code> will be returned.   The <code>option_id</code>
+   * is one of the defined constants in the superinterface.
+   *
+   * @param option_id The option identifier
+   *
+   * @return The current value of the option
+   *
+   * @exception SocketException If an error occurs
+   * @XXX This redeclaration from SocketOptions is a workaround to a gcj bug.
+   */
+  public abstract Object getOption(int option_id) throws SocketException;
 }
index d6eb13f..cde97b0 100644 (file)
@@ -1,5 +1,5 @@
-/*
-  Copyright (c) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* RMIClassLoader.java
+  Copyright (c) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -7,7 +7,7 @@ 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
@@ -44,59 +44,82 @@ 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");
-}
+public class RMIClassLoader
+{
+
+  static private class MyClassLoader extends ClassLoader
+  {
+    /**
+     * Non-private constructor to reduce bytecode emitted.
+     */
+    MyClassLoader()
+    {
+    }
+
+    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");
+  }
 
 }
index 20f1273..7e7d09d 100644 (file)
@@ -61,8 +61,9 @@ import java.util.Enumeration;
  *
  * @author Aaron M. Renn (arenn@urbanophile.com)
  */
-public abstract class BasicPermission extends Permission implements
-  Serializable
+public abstract class BasicPermission extends java.security.Permission
+  implements Serializable
+  // FIXME extends with fully qualified classname as workaround for gcj 3.0.4
 {
   /**
    * This method initializes a new instance of <code>BasicPermission</code>
index 1285501..13f9be0 100644 (file)
@@ -1,5 +1,5 @@
 /* Arrays.java -- Utility class with methods to operate on arrays
-   Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -2430,7 +2430,7 @@ public class Arrays
     {
       int size = a.length;
       for (int i = 0; i < size; i++)
-        if (equals(o, a[i]))
+        if (this.equals(o, a[i]))
           return i;
       return -1;
     }
@@ -2439,7 +2439,7 @@ public class Arrays
     {
       int i = a.length;
       while (--i >= 0)
-        if (equals(o, a[i]))
+        if (this.equals(o, a[i]))
           return i;
       return -1;
     }
index d86ec26..8c55ae0 100644 (file)
@@ -1,6 +1,6 @@
 /* java.util.WeakHashMap -- a hashtable that keeps only weak references
    to its keys, allowing the virtual machine to reclaim them
-   Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -170,6 +170,13 @@ public class WeakHashMap extends AbstractMap implements Map
   private final class WeakEntrySet extends AbstractSet
   {
     /**
+     * Non-private constructor to reduce bytecode emitted.
+     */
+    WeakEntrySet()
+    {
+    }
+
+    /**
      * Returns the size of this set.
      *
      * @return the set size
@@ -483,7 +490,7 @@ public class WeakHashMap extends AbstractMap implements Map
      */
     WeakEntry getEntry()
     {
-      final Object key = get();
+      final Object key = this.get();
       if (key == null)
         return null;
       return new WeakEntry(key);