This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

java.net compile fixes and more


Hello List, hello Richard,


Sorry Richard, I was to blind, I fixed natPlainDatagramSocketImpl.cc
(Thx Tom for the patch)

Furthermore I commited already some more of my changes.
The attachment tells it all.


Michael
-- 
Homepage: http://www.worldforge.org/
GPG-key: http://konqueror.dyndns.org/~mkoch/michael.gpg
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.1451
diff -u -b -r1.1451 ChangeLog
--- ChangeLog	25 Sep 2002 13:04:53 -0000	1.1451
+++ ChangeLog	25 Sep 2002 17:12:41 -0000
@@ -1,5 +1,50 @@
 2002-09-25  Michael Koch  <konqueror@gmx.de>
 
+	* java/net/DatagramSocket.java
+	(DatagramSocket): Initialize new instance variables.
+	(close): Reset new instance variables.
+	(getLocalAddress): Remove unneeded SecurityManager usage.
+	(getLocalPort): Check if socket is already bound.
+	(isConnected): New method.
+	(getInetAddress): Implemented.
+	(getPort): Better Implementation, documentation fixed.
+	(getRemoteSocketAddress): New method.
+	* java/net/JarURLConnection.java
+	(element): Typo fixed.
+	(getMainAttributes): New method.
+	(getAttributes): New method (stub only).
+	(getManifest): New method (stub only).
+	* java/net/NetPermission.java: Added serialVersionsUID.
+	* java/net/Socket.java
+	(connect): Check blocking mode of associated channel,
+	documentation added.
+	(getLocalSocketAddress): Better implementation.
+	(getRemoteSocketAddress): Implemented.
+	(isBound): New method.
+	(setSendBufferSize): Documentation added.
+	* java/net/SocketAddress.java: Added serialVersionsUID.
+	* java/net/SocketPermission.java: Added serialVersionsUID.
+	* java/net/URL.java
+	(URL): Wrap for shorter lines, initialize new instance variables,
+	documentation added.
+	(equals): Check new instance variables too.
+	(getContent): Documentation added.
+	(getPath): Documentation added.
+	(getAuthority): New method.
+	(getHost): Documentation added.
+	(getPort): Documentation added.
+	(getDefaultPort): New method.
+	(getProtocol): Documentation added.
+	(getUserInfo): Documentation added.
+	(set): Initialize new instance variables, documentation added.
+	* java/net/URLStreamHandler.java
+	(setURL): New method.
+	* java/net/natPlainDatagramSocketImpl.cc
+	(connect): Fix exception name.
+	(disconnect): Fix exception name.
+
+2002-09-25  Michael Koch  <konqueror@gmx.de>
+
 	* java/nio/channels/spi/AbstractSelectableChannel.java: New file.
 	* java/nio/channels/DatagramChannel.java:
 	extends AbstractSelectableChannel
Index: java/net/DatagramSocket.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/DatagramSocket.java,v
retrieving revision 1.14
diff -u -b -r1.14 DatagramSocket.java
--- java/net/DatagramSocket.java	25 Sep 2002 09:05:53 -0000	1.14
+++ java/net/DatagramSocket.java	25 Sep 2002 17:12:41 -0000
@@ -37,6 +37,9 @@
 
   DatagramChannel ch;
 
+  private InetAddress remoteAddress;
+  private int remotePort;
+
   /**
    * Creates a DatagramSocket
    *
@@ -59,6 +62,8 @@
   protected DatagramSocket (DatagramSocketImpl impl)
   {
     this.impl = impl;
+    this.remoteAddress = null;
+    this.remotePort = -1;
   }
 
   /**
@@ -134,6 +139,9 @@
       impl.setOption(SocketOptions.SO_REUSEADDR, new Boolean(true));
 
     impl.bind(port, laddr == null ? InetAddress.ANY_IF : laddr);
+    
+    remoteAddress = null;
+    remotePort = -1;
   }
 
   /**
@@ -169,6 +177,8 @@
   public void close()
   {
     impl.close();
+    remoteAddress = null;
+    remotePort = -1;
   }
 
   /**
@@ -198,7 +208,6 @@
    */
   public InetAddress getLocalAddress()
   {
-    SecurityManager s = System.getSecurityManager();
     // FIXME: JCL p. 510 says this should call checkConnect.  But what
     // string should be used as the hostname?  Maybe this is just a side
     // effect of calling InetAddress.getLocalHost.
@@ -241,6 +250,9 @@
    */
   public int getLocalPort()
   {
+    if (!isBound ())
+      return -1;
+
     return impl.getLocalPort();
   }
 
@@ -417,6 +429,16 @@
   }
 
   /**
+   * Returns the connection state of the socket
+   * 
+   * @since 1.4
+   */
+  public boolean isConnected()
+  {
+    return remoteAddress != null;
+  }
+
+  /**
    * Returns the InetAddress the socket is connected to
    * or null if the socket is not connected
    * 
@@ -424,18 +446,37 @@
    */
   public InetAddress getInetAddress()
   {
-    // FIXME:
+    if (!isConnected ())
     return null;
+
+    return remoteAddress;
   }
 
   /**
-   * Returns the local port number of the socket
+   * Returns the port number the socket is connected to or -1 if not connected
    * 
    * @since 1.2
    */
   public int getPort()
   {
-    return impl.localPort;
+    if (!isConnected ())
+      return -1;
+    
+    return remotePort;
+  }
+
+  /**
+   * Returns the SocketAddress of the host this socket is conneted to
+   * or null if this socket is not connected
+   * 
+   * @since 1.4
+   */
+  public SocketAddress getRemoteSocketAddress()
+  {
+    if (!isConnected ())
+      return null;
+
+    return new InetSocketAddress (remoteAddress, remotePort);
   }
 
   /**
Index: java/net/JarURLConnection.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/JarURLConnection.java,v
retrieving revision 1.9
diff -u -b -r1.9 JarURLConnection.java
--- java/net/JarURLConnection.java	25 Sep 2002 09:05:53 -0000	1.9
+++ java/net/JarURLConnection.java	25 Sep 2002 17:12:41 -0000
@@ -34,7 +34,7 @@
    *  either case this describes just the jar file itself. */
   protected URLConnection jarFileURLConnection;
 
-  // If this is a connection to a jar file element this is set, otherwose null.
+  // If this is a connection to a jar file element this is set, otherwise null.
   private final String element;
 
   // Cached JarURLConnection's 
@@ -348,5 +348,40 @@
   public Certificate[] getCertificates() throws IOException
   {
     return getJarEntry().getCertificates();
+  }
+
+  /**
+   * Returns the main Attributes for the JAR file for this connection
+   *
+   * @exception IOException If an error occurs
+   */
+  public Attributes getMainAttributes () throws IOException
+  {
+    return getManifest ().getMainAttributes ();
+  }
+
+  /**
+   * Return the Attributes object for this connection if the URL for it points
+   * to a JAR file entry, null otherwise
+   *
+   * @exception IOException If an error occurs
+   */
+  public Attributes getAttributes () throws IOException
+  {
+    // FIXME: implement this
+    return null;
+  }
+
+  /**
+   * Returns the Manifest for this connection, or null if none
+   *
+   * @exception IOException If an error occurs
+   */
+  public Manifest getManifest () throws IOException
+  {
+    JarFile file = getJarFile ();
+
+    // FIXME: implement this
+    return null;
   }
 }
Index: java/net/NetPermission.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/NetPermission.java,v
retrieving revision 1.2
diff -u -b -r1.2 NetPermission.java
--- java/net/NetPermission.java	22 Jan 2002 22:40:23 -0000	1.2
+++ java/net/NetPermission.java	25 Sep 2002 17:12:41 -0000
@@ -50,6 +50,8 @@
 public final class NetPermission extends BasicPermission
   implements java.io.Serializable
 {
+  static final long serialVersionUID = -8343910153355041693L;
+
   /**
    * Initializes a new instance of <code>NetPermission</code> with the
    * specified name.
Index: java/net/Socket.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/Socket.java,v
retrieving revision 1.14
diff -u -b -r1.14 Socket.java
--- java/net/Socket.java	25 Sep 2002 09:05:53 -0000	1.14
+++ java/net/Socket.java	25 Sep 2002 17:12:42 -0000
@@ -39,6 +39,7 @@
 
 import java.io.*;
 import java.nio.channels.SocketChannel;
+import java.nio.channels.IllegalBlockingModeException;
 
 /* Written using on-line Java Platform 1.2 API Specification.
  * Status:  I believe all methods are implemented.
@@ -310,7 +311,8 @@
    *
    * @exception IOException If an error occurs
    * @exception IllegalArgumentException If the addess type is not supported
-   * @exception IllegalBlockingModeException FIXME
+   * @exception IllegalBlockingModeException If this socket has an associated
+   * channel, and the channel is in non-blocking mode
    * 
    * @since 1.4
    */
@@ -320,6 +322,9 @@
     if (! (endpoint instanceof InetSocketAddress))
       throw new IllegalArgumentException ("Address type not supported");
 
+    if (ch != null && !ch.isBlocking ())
+      throw new IllegalBlockingModeException ();
+    
     impl.connect (endpoint, 0);
   }
 
@@ -332,7 +337,8 @@
    *
    * @exception IOException If an error occurs
    * @exception IllegalArgumentException If the address type is not supported
-   * @exception IllegalBlockingModeException FIXME
+   * @exception IllegalBlockingModeException If this socket has an associated
+   * channel, and the channel is in non-blocking mode
    * @exception SocketTimeoutException If the timeout is reached
    * 
    * @since 1.4
@@ -343,6 +349,9 @@
     if (! (endpoint instanceof InetSocketAddress))
       throw new IllegalArgumentException ("Address type not supported");
 
+    if (ch != null && !ch.isBlocking ())
+      throw new IllegalBlockingModeException ();
+    
     impl.connect (endpoint, timeout);
   }
 
@@ -432,16 +441,10 @@
    */
   public SocketAddress getLocalSocketAddress()
   {
-    InetAddress addr;
+    InetAddress addr = getLocalAddress ();
 
-    try
-      {
-        addr = (InetAddress) impl.getOption (SocketOptions.SO_BINDADDR);
-      }
-    catch (SocketException e)
-      {
+    if (addr == null)
 	return null;
-      }
     
     return new InetSocketAddress (addr, impl.getLocalPort());
   }
@@ -454,8 +457,7 @@
    */
   public SocketAddress getRemoteSocketAddress()
   {
-    // FIXME: Implement this
-    return null;
+    return new InetSocketAddress (impl.getInetAddress (), impl.getPort ());
   }
 
   /**
@@ -701,7 +703,7 @@
    * @param size The new send buffer size.
    *
    * @exception SocketException If an error occurs or Socket not connected
-   * @exception IllegalArgumentException FIXME
+   * @exception IllegalArgumentException If size is 0 or negative
    *
    * @since 1.2
    */
@@ -989,5 +991,13 @@
       throw new IllegalArgumentException();
 
     impl.setOption (SocketOptions.IP_TOS, new Integer (tc));
+  }
+
+  /**
+   * Checks if the socket is already bound.
+   */
+  public boolean isBound ()
+  {
+    return getLocalAddress () != null;
   }
 }
Index: java/net/SocketAddress.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/SocketAddress.java,v
retrieving revision 1.1
diff -u -b -r1.1 SocketAddress.java
--- java/net/SocketAddress.java	21 Aug 2002 18:54:07 -0000	1.1
+++ java/net/SocketAddress.java	25 Sep 2002 17:12:42 -0000
@@ -47,6 +47,8 @@
 
 public abstract class SocketAddress implements Serializable
 {
+  static final long serialVersionUID = 5215720748342549866L;
+
     public SocketAddress()
     {
     }
Index: java/net/SocketPermission.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/SocketPermission.java,v
retrieving revision 1.4
diff -u -b -r1.4 SocketPermission.java
--- java/net/SocketPermission.java	13 Sep 2002 11:39:47 -0000	1.4
+++ java/net/SocketPermission.java	25 Sep 2002 17:12:42 -0000
@@ -37,6 +37,7 @@
 
 package java.net;
 
+import java.io.Serializable;
 import java.security.Permission;
 import java.security.PermissionCollection;
 
@@ -100,8 +101,9 @@
  * @author Aaron M. Renn (arenn@urbanophile.com)
  */
 public final class SocketPermission extends Permission
-  implements java.io.Serializable
+  implements Serializable
 {
+  static final long serialVersionUID = -7204263841984476862L;
 
 // FIXME: Needs serialization work, including readObject/writeObject methods.
   /**
Index: java/net/URL.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/URL.java,v
retrieving revision 1.11
diff -u -b -r1.11 URL.java
--- java/net/URL.java	30 Aug 2002 18:16:00 -0000	1.11
+++ java/net/URL.java	25 Sep 2002 17:12:42 -0000
@@ -28,9 +28,12 @@
 public final class URL implements Serializable
 {
   private String protocol;
+  private String authority;
+  private String userInfo;
   private String host;
   private int port = -1;	// Initialize for constructor using context.
   private String file;
+  private String query;
   private String ref;
   private int hashCode = 0;
   transient private URLStreamHandler handler;
@@ -39,19 +42,50 @@
 
   private static final long serialVersionUID = -7627629688361524110L;
 
+  /**
+   * Creates an URL object from the given arguments
+   *
+   * @param protocol The protocol of the URL
+   * @param host The host of the URL
+   * @param port The port of the URL
+   * @param file The file of the URL
+   *
+   * @exception MalformedURLException If an error occurs
+   */
   public URL(String protocol, String host, int port, String file)
     throws MalformedURLException
   {
     this(protocol, host, port, file, null);
   }
 
+  /**
+   * Creates an URL object from the given arguments
+   *
+   * @param protocol The protocol of the URL
+   * @param host The host of the URL
+   * @param file The file of the URL
+   *
+   * @exception MalformedURLException If an error occurs
+   */
   public URL(String protocol, String host, String file)
     throws MalformedURLException
   {
     this(protocol, host, -1, file, null);
   }
 
-  // JDK1.2
+  /**
+   * Creates an URL object from the given arguments
+   *
+   * @param protocol The protocol of the URL
+   * @param host The host of the URL
+   * @param port The port of the URL
+   * @param file The file of the URL
+   * @param handler The stream handler for the URL
+   *
+   * @exception MalformedURLException If an error occurs
+   *
+   * @since 1.2
+   */
   public URL(String protocol, String host, int port, String file,
     URLStreamHandler handler) throws MalformedURLException
   {
@@ -76,11 +110,14 @@
       this.handler = setURLStreamHandler(protocol);
 
     if (this.handler == null)
-      throw new MalformedURLException("Protocol handler not found: " + protocol);
+      throw new MalformedURLException (
+		      "Protocol handler not found: " + protocol);
 
     this.host = host;
-
     this.port = port;
+    this.userInfo = null;
+    this.authority = null;
+    this.query = null;
 
     int hashAt = file.indexOf('#');
     if (hashAt < 0)
@@ -96,17 +133,42 @@
     hashCode = hashCode();			// Used for serialization.
   }
 
+  /**
+   * Creates an URL object from the given arguments
+   * 
+   * @param spec The string to parse an URL
+   *
+   * @exception MalformedURLException If an error occurs
+   */
   public URL(String spec) throws MalformedURLException
   {
     this((URL) null, spec, (URLStreamHandler) null);
   }
 
+  /**
+   * Creates an URL object from the given arguments
+   * 
+   * @param context The context on which to parse the specification
+   * @param spec The string to parse an URL
+   *
+   * @exception MalformedURLException If an error occurs
+   */
   public URL(URL context, String spec) throws MalformedURLException
   {
     this(context, spec, (URLStreamHandler) null);
   }
 
-  // JDK1.2
+  /**
+   * Creates an URL from given arguments
+   *
+   * @param context The context in which to parse the specification
+   * @param spec The string to parse as an URL
+   * @param handler The stream handler for the URL
+   *
+   * @exception MalformedURLException If an error occurs
+   * 
+   * @since 1.2
+   */
   public URL(URL context, String spec, URLStreamHandler handler)
     throws MalformedURLException
   {
@@ -142,6 +204,9 @@
 	    host = context.host;
 	    port = context.port;
 	    file = context.file;
+	    userInfo = context.userInfo;
+	    authority = context.authority;
+	    query = context.query;
 	  }
       }
     else if (context != null)
@@ -153,6 +218,9 @@
 	host = context.host;
 	port = context.port;
 	file = context.file;
+        userInfo = context.userInfo;
+        authority = context.authority;
+        query = context.query;
       }
     else	// Protocol NOT specified in spec. and no context available.
       throw new
@@ -202,14 +270,25 @@
     return (port == uObj.port
 	    && ((protocol == null && uObj.protocol == null)
 		|| (protocol != null && protocol.equals(uObj.protocol)))
+	    && ((userInfo == null && uObj.userInfo == null)
+                || (userInfo != null && userInfo.equals(uObj.userInfo)))
+	    && ((authority == null && uObj.authority == null)
+                || (authority != null && authority.equals(uObj.authority)))
 	    && ((host == null && uObj.host == null)
 		|| (host != null && host.equals(uObj.host)))
 	    && ((file == null && uObj.file == null)
 		|| (file != null && file.equals(uObj.file)))
+	    && ((query == null && uObj.query == null)
+                || (query != null && query.equals(uObj.query)))
 	    && ((ref == null && uObj.ref == null)
 		|| (ref != null && ref.equals(uObj.ref))));
   }
 
+  /**
+   * Gets the contents of this URL
+   *
+   * @since 1.3
+   */
   public final Object getContent() throws IOException
   {
     return openConnection().getContent();
@@ -220,22 +299,54 @@
     return file;
   }
 
+  /**
+   * Returns the path of the URL
+   *
+   * @since 1.3
+   */
   public String getPath()
   {
     int quest = file.indexOf('?');
     return quest < 0 ? file : file.substring(0, quest);
   }
 
+  /**
+   * Returns the authority of the URL
+   * 
+   * @since 1.3
+   */
+  public String getAuthority()
+  {
+    return authority;
+  }
+
+  /**
+   * Returns the host of the URL
+   */
   public String getHost()
   {
     return host;
   }
 
+  /**
+   * Returns of port of the URL
+   */
   public int getPort()
   {
     return port;
   }
 
+  /**
+   * Returns the default port of the URL
+   */
+  public int getDefaultPort()
+  {
+    return 0;
+  }
+
+  /**
+   * Returns the protocol of the URL
+   */
   public String getProtocol()
   {
     return protocol;
@@ -246,6 +357,9 @@
     return ref;
   }
 
+  /**
+   * Returns the user information of the URL
+   */
   public String getUserInfo ()
   {
     int at = host.indexOf('@');
@@ -290,6 +404,11 @@
     return handler.sameFile(this, other);
   }
 
+  /**
+   * Sets the specified fields of the URL. This is not a public method so
+   * that only URLStreamHandlers can modify URL fields. URLs are otherwise
+   * constant
+   */
   protected void set(String protocol, String host, int port, String file,
 		     String ref)
   {
@@ -299,14 +418,23 @@
     // be aware of this.
     this.handler = setURLStreamHandler(protocol);
     this.protocol = protocol;
+    this.authority = null;
+    this.userInfo = null;
     this.port = port;
     this.host = host;
     this.file = file;
+    this.query = null;
     this.ref = ref;
     hashCode = hashCode();			// Used for serialization.
   }
 
-  /** @since 1.3 */
+  /**
+   * Sets the specified fields of the URL. This is not a public method so
+   * that only URLStreamHandlers can modify URL fields. URLs are otherwise
+   * constant
+   *
+   * @since 1.3
+   */
   protected void set(String protocol, String host, int port,
 		     String authority, String userInfo,
 		     String path, String query, String ref)
Index: java/net/URLStreamHandler.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/URLStreamHandler.java,v
retrieving revision 1.8
diff -u -b -r1.8 URLStreamHandler.java
--- java/net/URLStreamHandler.java	25 Sep 2002 09:05:53 -0000	1.8
+++ java/net/URLStreamHandler.java	25 Sep 2002 17:12:42 -0000
@@ -184,6 +184,29 @@
   }
 
   /**
+   * Sets the fields of the URL argument to the indicated values
+   *
+   * @param u The URL to modify
+   * @param protocol The protocol to set
+   * @param host The host name to set
+   * @param port The port number to set
+   * @param authority The authority to set
+   * @param userInfo The user information to set
+   * @param path The path/filename to set
+   * @param query The query part to set
+   * @param ref The reference
+   *
+   * @exception SecurityException If the protocol handler of the URL is
+   * different from this one
+   */
+  protected void setURL(URL u, String protocol, String host, int port,
+			String authority, String userInfo, String path,
+			String query, String ref)
+  {
+    u.set(protocol, host, port, authority, userInfo, path, query, ref);
+  }
+
+  /**
    * Converts an URL of a specific protocol to a string
    *
    * @param u The URL to convert
Index: java/net/natPlainDatagramSocketImpl.cc
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/net/natPlainDatagramSocketImpl.cc,v
retrieving revision 1.47
diff -u -b -r1.47 natPlainDatagramSocketImpl.cc
--- java/net/natPlainDatagramSocketImpl.cc	25 Sep 2002 05:05:06 -0000	1.47
+++ java/net/natPlainDatagramSocketImpl.cc	25 Sep 2002 17:12:42 -0000
@@ -89,14 +89,14 @@
 void
 java::net::PlainDatagramSocketImpl::connect (java::net::InetAddress *, jint)
 {
-  throw new java::io::SocketException (
+  throw new SocketException (
     JvNewStringLatin1 ("DatagramSocketImpl.connect: unimplemented"));
 }
 
 void
 java::net::PlainDatagramSocketImpl::disconnect ()
 {
-  throw new java::io::SocketException (
+  throw new SocketException (
     JvNewStringLatin1 ("DatagramSocketImpl.disconnect: unimplemented"));
 }
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]