Imported GNU Classpath 0.90
Imported GNU Classpath 0.90 * scripts/makemake.tcl: LocaleData.java moved to gnu/java/locale. * sources.am: Regenerated. * gcj/javaprims.h: Regenerated. * Makefile.in: Regenerated. * gcj/Makefile.in: Regenerated. * include/Makefile.in: Regenerated. * testsuite/Makefile.in: Regenerated. * gnu/java/lang/VMInstrumentationImpl.java: New override. * gnu/java/net/local/LocalSocketImpl.java: Likewise. * gnu/classpath/jdwp/VMMethod.java: Likewise. * gnu/classpath/jdwp/VMVirtualMachine.java: Update to latest interface. * java/lang/Thread.java: Add UncaughtExceptionHandler. * java/lang/reflect/Method.java: Implements GenericDeclaration and isSynthetic(), * java/lang/reflect/Field.java: Likewise. * java/lang/reflect/Constructor.java * java/lang/Class.java: Implements Type, GenericDeclaration, getSimpleName() and getEnclosing*() methods. * java/lang/Class.h: Add new public methods. * java/lang/Math.java: Add signum(), ulp() and log10(). * java/lang/natMath.cc (log10): New function. * java/security/VMSecureRandom.java: New override. * java/util/logging/Logger.java: Updated to latest classpath version. * java/util/logging/LogManager.java: New override. From-SVN: r113887
This commit is contained in:
parent
eaec4980e1
commit
4f9533c772
1640 changed files with 126485 additions and 104808 deletions
|
@ -0,0 +1,94 @@
|
|||
/* DefaultContentHandlerFactory.java
|
||||
Copyright (C) 2004 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., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.net;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.ContentHandler;
|
||||
import java.net.ContentHandlerFactory;
|
||||
import java.net.URLConnection;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
|
||||
/** Content Handler for Image types, using the AWT Toolkit's image decoder. */
|
||||
class ImageHandler extends ContentHandler
|
||||
{
|
||||
static ImageHandler instance = new ImageHandler();
|
||||
|
||||
public Object getContent(URLConnection urlc) throws IOException
|
||||
{
|
||||
// FIXME: implement using ImageIO
|
||||
// ClasspathToolkit tk = (ClasspathToolkit) Toolkit.getDefaultToolkit();
|
||||
// java.awt.image.ImageProducer ip = tk.createImageProducer(urlc.getURL());
|
||||
// return ip;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public class DefaultContentHandlerFactory implements ContentHandlerFactory
|
||||
{
|
||||
/** For now, hard code the list of types that we assume should
|
||||
* be supported by the Toolkit. ClasspathToolkit should perhaps provide
|
||||
* an API to express what Image MIME types the Toolkit understands.
|
||||
*/
|
||||
private static String[] known_image_types =
|
||||
{
|
||||
"image/bmp",
|
||||
"image/gif",
|
||||
"image/jpeg",
|
||||
"image/png",
|
||||
"image/tiff",
|
||||
"image/x-portable-anymap",
|
||||
"image/x-cmu-raster",
|
||||
"image/x-xbitmap",
|
||||
"image/x-xpixmap"
|
||||
};
|
||||
|
||||
private static HashSet imageTypes
|
||||
= new HashSet(Arrays.asList(known_image_types));
|
||||
|
||||
public ContentHandler createContentHandler(String mimeType)
|
||||
{
|
||||
if (imageTypes.contains(mimeType))
|
||||
return ImageHandler.instance;
|
||||
// Currently, only image types are handled.
|
||||
return null;
|
||||
}
|
||||
}
|
172
libjava/classpath/gnu/java/net/local/LocalServerSocket.java
Normal file
172
libjava/classpath/gnu/java/net/local/LocalServerSocket.java
Normal file
|
@ -0,0 +1,172 @@
|
|||
/* LocalServerSocket.java -- a unix domain server socket.
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is a 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 of the License, 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; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
||||
USA
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.net.local;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
import java.net.SocketAddress;
|
||||
import java.net.SocketException;
|
||||
|
||||
public final class LocalServerSocket extends ServerSocket
|
||||
{
|
||||
|
||||
// Fields.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private LocalSocketImpl myImpl;
|
||||
private boolean closed;
|
||||
|
||||
// Constructors.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public LocalServerSocket () throws IOException
|
||||
{
|
||||
myImpl = new LocalSocketImpl ();
|
||||
}
|
||||
|
||||
public LocalServerSocket (SocketAddress bindPoint) throws IOException
|
||||
{
|
||||
this ();
|
||||
bind (bindPoint);
|
||||
}
|
||||
|
||||
// Instance methods.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public void bind (SocketAddress bindPoint) throws IOException
|
||||
{
|
||||
bind (bindPoint, 0);
|
||||
}
|
||||
|
||||
public void bind (SocketAddress bindPoint, int backlog) throws IOException
|
||||
{
|
||||
myImpl.doCreate ();
|
||||
myImpl.bind (bindPoint);
|
||||
myImpl.listen (backlog);
|
||||
}
|
||||
|
||||
public InetAddress getInetAddress ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getLocalPort ()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
public SocketAddress getLocalSocketAddress ()
|
||||
{
|
||||
return myImpl.getLocalAddress ();
|
||||
}
|
||||
|
||||
public Socket accept () throws IOException
|
||||
{
|
||||
LocalSocket s = new LocalSocket (true);
|
||||
myImpl.accept (s.getLocalImpl());
|
||||
s.localConnected = true;
|
||||
return s;
|
||||
}
|
||||
|
||||
public void close () throws IOException
|
||||
{
|
||||
myImpl.close ();
|
||||
myImpl.unlink ();
|
||||
closed = true;
|
||||
}
|
||||
|
||||
public boolean isBound ()
|
||||
{
|
||||
return myImpl.getLocalAddress () != null;
|
||||
}
|
||||
|
||||
public boolean isClosed ()
|
||||
{
|
||||
return closed;
|
||||
}
|
||||
|
||||
public void setSoTimeout (int timeout)
|
||||
{
|
||||
throw new UnsupportedOperationException ("local sockets do not support timeouts");
|
||||
}
|
||||
|
||||
public int getSoTimeout ()
|
||||
{
|
||||
throw new UnsupportedOperationException ("local sockets do not support timeouts");
|
||||
}
|
||||
|
||||
public void setReuseAddress (boolean b)
|
||||
{
|
||||
throw new UnsupportedOperationException ("local sockets do not support reuse address");
|
||||
}
|
||||
|
||||
public boolean getReuseAddress ()
|
||||
{
|
||||
throw new UnsupportedOperationException ("local sockets do not support reuse address");
|
||||
}
|
||||
|
||||
public String toString ()
|
||||
{
|
||||
return LocalServerSocket.class.getName() + " [ address="
|
||||
+ myImpl.getLocalAddress() + " ]";
|
||||
}
|
||||
|
||||
public void setReceiveBufferSize (int size)
|
||||
{
|
||||
throw new UnsupportedOperationException ("local sockets do not support buffer size");
|
||||
}
|
||||
|
||||
public int getReceiveBufferSize ()
|
||||
{
|
||||
throw new UnsupportedOperationException ("local sockets do not support buffer size");
|
||||
}
|
||||
|
||||
public void setSendBufferSize (int size)
|
||||
{
|
||||
throw new UnsupportedOperationException ("local sockets do not support buffer size");
|
||||
}
|
||||
|
||||
public int getSendBufferSize ()
|
||||
{
|
||||
throw new UnsupportedOperationException ("local sockets do not support buffer size");
|
||||
}
|
||||
}
|
312
libjava/classpath/gnu/java/net/local/LocalSocket.java
Normal file
312
libjava/classpath/gnu/java/net/local/LocalSocket.java
Normal file
|
@ -0,0 +1,312 @@
|
|||
/* LocalSocket.java -- a unix domain client socket.
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is a 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 of the License, 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; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
||||
USA
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.net.local;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
import java.net.SocketAddress;
|
||||
import java.net.SocketException;
|
||||
import java.net.SocketImpl;
|
||||
|
||||
import java.nio.channels.IllegalBlockingModeException;
|
||||
import java.nio.channels.SocketChannel;
|
||||
|
||||
/**
|
||||
* A local, or unix-domain socket. Unix domain sockets are connected on the
|
||||
* local filesystem itself, rather than a remote address.
|
||||
*/
|
||||
public final class LocalSocket extends Socket
|
||||
{
|
||||
|
||||
// Fields.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private final LocalSocketImpl localimpl;
|
||||
boolean localClosed;
|
||||
boolean localConnected;
|
||||
|
||||
// Constructors.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public LocalSocket () throws SocketException
|
||||
{
|
||||
super ();
|
||||
localimpl = new LocalSocketImpl ();
|
||||
}
|
||||
|
||||
public LocalSocket (LocalSocketAddress addr) throws SocketException
|
||||
{
|
||||
this ();
|
||||
try
|
||||
{
|
||||
connect (addr);
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
SocketException se = new SocketException ();
|
||||
se.initCause (ioe);
|
||||
throw se;
|
||||
}
|
||||
}
|
||||
|
||||
LocalSocket (boolean nocreate) throws IOException
|
||||
{
|
||||
super ();
|
||||
localimpl = new LocalSocketImpl (nocreate);
|
||||
}
|
||||
|
||||
// Instance methods.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public void bind (SocketAddress bindpoint) throws IOException
|
||||
{
|
||||
throw new SocketException ("binding local client sockets is nonsensical");
|
||||
}
|
||||
|
||||
public void connect (SocketAddress endpoint, int timeout) throws IOException
|
||||
{
|
||||
if (isClosed ())
|
||||
{
|
||||
throw new SocketException ("socket is closed");
|
||||
}
|
||||
if (! (endpoint instanceof LocalSocketAddress))
|
||||
{
|
||||
throw new IllegalArgumentException ("socket address is not a local address");
|
||||
}
|
||||
if (getChannel() != null && !getChannel().isBlocking())
|
||||
{
|
||||
throw new IllegalBlockingModeException ();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
localimpl.doCreate ();
|
||||
localimpl.localConnect ((LocalSocketAddress) endpoint);
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
close ();
|
||||
throw ioe;
|
||||
}
|
||||
localConnected = true;
|
||||
}
|
||||
|
||||
public InetAddress getInetAddress ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public InetAddress getLocalAddress ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getPort ()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int getLocalPort ()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
public SocketChannel getChannel ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public SocketAddress getLocalSocketAddress ()
|
||||
{
|
||||
return localimpl.getLocalAddress ();
|
||||
}
|
||||
|
||||
public SocketAddress getRemoteSocketAddress ()
|
||||
{
|
||||
return localimpl.getRemoteAddress ();
|
||||
}
|
||||
|
||||
public InputStream getInputStream () throws IOException
|
||||
{
|
||||
return localimpl.getInputStream ();
|
||||
}
|
||||
|
||||
public OutputStream getOutputStream () throws IOException
|
||||
{
|
||||
return localimpl.getOutputStream ();
|
||||
}
|
||||
|
||||
public void sendUrgentData (int b) throws IOException
|
||||
{
|
||||
localimpl.sendUrgentData (b);
|
||||
}
|
||||
|
||||
public synchronized void close () throws IOException
|
||||
{
|
||||
localimpl.close ();
|
||||
localClosed = true;
|
||||
}
|
||||
|
||||
public void shutdownInput () throws IOException
|
||||
{
|
||||
localimpl.shutdownInput ();
|
||||
}
|
||||
|
||||
public void shutdownOutput () throws IOException
|
||||
{
|
||||
localimpl.shutdownOutput ();
|
||||
}
|
||||
|
||||
public boolean isClosed ()
|
||||
{
|
||||
return localClosed;
|
||||
}
|
||||
|
||||
public boolean isBound ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isConnected ()
|
||||
{
|
||||
return localConnected;
|
||||
}
|
||||
|
||||
// Unsupported methods.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public void setTcpNoDelay (boolean b) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public boolean getTcpNoDelay() throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public void setSoLinger (boolean b, int i) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public int getSoLinger () throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public void setOOBInline (boolean b) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public boolean getOOBInline () throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public void setSoTimeout (int i) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public int getSoTimeout () throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public void setSendBufferSize (int i) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public int getSendBufferSize() throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public void setReceiveBufferSize (int i) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public int getReceiveBufferSize () throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public void setKeepAlive (boolean b) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public boolean getKeepAlive () throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public void setTrafficClass (int i) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public int getTrafficClass () throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public void setReuseAddress (boolean b) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
public boolean getReuseAddress () throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support this option");
|
||||
}
|
||||
|
||||
LocalSocketImpl getLocalImpl ()
|
||||
{
|
||||
return localimpl;
|
||||
}
|
||||
}
|
100
libjava/classpath/gnu/java/net/local/LocalSocketAddress.java
Normal file
100
libjava/classpath/gnu/java/net/local/LocalSocketAddress.java
Normal file
|
@ -0,0 +1,100 @@
|
|||
/* LocalSocketAddress.java -- unix-domain socket address.
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is a 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 of the License, 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; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
||||
USA
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.net.local;
|
||||
|
||||
import java.net.SocketAddress;
|
||||
|
||||
public final class LocalSocketAddress extends SocketAddress
|
||||
{
|
||||
|
||||
// Fields.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private final String path;
|
||||
|
||||
// Constructor.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Creates a new unix domain socket address.
|
||||
*
|
||||
* @param path The path to the socket.
|
||||
* @throws NullPointerException If <i>path</i> is <tt>null</tt>.
|
||||
*/
|
||||
public LocalSocketAddress (String path)
|
||||
{
|
||||
if (path == null)
|
||||
{
|
||||
throw new NullPointerException ();
|
||||
}
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
// Instance methods.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Returns the path of the socket.
|
||||
*
|
||||
* @return The path.
|
||||
*/
|
||||
public String getPath ()
|
||||
{
|
||||
return path;
|
||||
}
|
||||
|
||||
public boolean equals (Object o)
|
||||
{
|
||||
if (!(o instanceof LocalSocketAddress))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return getPath ().equals (((LocalSocketAddress) o).getPath ());
|
||||
}
|
||||
|
||||
public int hashCode ()
|
||||
{
|
||||
return path.hashCode();
|
||||
}
|
||||
|
||||
public String toString ()
|
||||
{
|
||||
return super.toString() + " [ " + path + " ]";
|
||||
}
|
||||
}
|
322
libjava/classpath/gnu/java/net/local/LocalSocketImpl.java
Normal file
322
libjava/classpath/gnu/java/net/local/LocalSocketImpl.java
Normal file
|
@ -0,0 +1,322 @@
|
|||
/* LocalSocketImpl.java -- a unix domain client socket implementation.
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is a 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 of the License, 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; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
|
||||
USA
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.net.local;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.InputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.SocketAddress;
|
||||
import java.net.SocketException;
|
||||
import java.net.SocketImpl;
|
||||
|
||||
final class LocalSocketImpl extends SocketImpl
|
||||
{
|
||||
|
||||
// Fields.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private boolean created;
|
||||
private InputStream in;
|
||||
private OutputStream out;
|
||||
private int socket_fd;
|
||||
private LocalSocketAddress local;
|
||||
private LocalSocketAddress remote;
|
||||
|
||||
static
|
||||
{
|
||||
try
|
||||
{
|
||||
System.loadLibrary ("javanet");
|
||||
}
|
||||
catch (Exception x)
|
||||
{
|
||||
x.printStackTrace ();
|
||||
}
|
||||
}
|
||||
|
||||
// Constructor.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
LocalSocketImpl ()
|
||||
{
|
||||
this (false);
|
||||
}
|
||||
|
||||
LocalSocketImpl (boolean nocreate)
|
||||
{
|
||||
created = nocreate;
|
||||
socket_fd = -1;
|
||||
fd = new FileDescriptor ();
|
||||
}
|
||||
|
||||
// Instance methods.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public void setOption (int opt, Object value) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support options");
|
||||
}
|
||||
|
||||
public Object getOption (int opt) throws SocketException
|
||||
{
|
||||
throw new SocketException ("local sockets do not support options");
|
||||
}
|
||||
|
||||
protected native void create (boolean stream) throws IOException;
|
||||
protected native void listen (int timeout) throws IOException;
|
||||
protected native void accept (LocalSocketImpl socket) throws IOException;
|
||||
protected native int available () throws IOException;
|
||||
protected native void close () throws IOException;
|
||||
protected native void sendUrgentData (int data) throws IOException;
|
||||
protected native void shutdownInput () throws IOException;
|
||||
protected native void shutdownOutput () throws IOException;
|
||||
|
||||
native void unlink () throws IOException;
|
||||
native void localBind (LocalSocketAddress addr) throws IOException;
|
||||
native void localConnect (LocalSocketAddress addr) throws IOException;
|
||||
native int read (byte[] buf, int off, int len) throws IOException;
|
||||
native void write (byte[] buf, int off, int len) throws IOException;
|
||||
|
||||
void doCreate () throws IOException
|
||||
{
|
||||
if (!created)
|
||||
{
|
||||
create (true);
|
||||
}
|
||||
}
|
||||
|
||||
LocalSocketAddress getLocalAddress ()
|
||||
{
|
||||
return local;
|
||||
}
|
||||
|
||||
LocalSocketAddress getRemoteAddress ()
|
||||
{
|
||||
return remote;
|
||||
}
|
||||
|
||||
protected InputStream getInputStream()
|
||||
{
|
||||
if (in == null)
|
||||
{
|
||||
in = new LocalInputStream (this);
|
||||
}
|
||||
|
||||
return in;
|
||||
}
|
||||
|
||||
protected OutputStream getOutputStream()
|
||||
{
|
||||
if (out == null)
|
||||
{
|
||||
out = new LocalOutputStream (this);
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
protected void accept (SocketImpl impl) throws IOException
|
||||
{
|
||||
if (! (impl instanceof LocalSocketImpl))
|
||||
{
|
||||
throw new IllegalArgumentException ("not a local socket");
|
||||
}
|
||||
accept ((LocalSocketImpl) impl);
|
||||
}
|
||||
|
||||
protected void connect (String host, int port) throws IOException
|
||||
{
|
||||
throw new SocketException ("this is a local socket");
|
||||
}
|
||||
|
||||
protected void connect (InetAddress addr, int port) throws IOException
|
||||
{
|
||||
throw new SocketException ("this is a local socket");
|
||||
}
|
||||
|
||||
protected void connect(SocketAddress addr, int timeout) throws IOException
|
||||
{
|
||||
if (! (addr instanceof LocalSocketAddress))
|
||||
{
|
||||
throw new SocketException ("address is not local");
|
||||
}
|
||||
localConnect ((LocalSocketAddress) addr);
|
||||
}
|
||||
|
||||
protected void bind (InetAddress addr, int port) throws IOException
|
||||
{
|
||||
throw new SocketException ("this is a local socket");
|
||||
}
|
||||
|
||||
protected void bind (SocketAddress addr) throws IOException
|
||||
{
|
||||
if (! (addr instanceof LocalSocketAddress))
|
||||
{
|
||||
throw new SocketException ("address is not local");
|
||||
}
|
||||
localBind ((LocalSocketAddress) addr);
|
||||
}
|
||||
|
||||
// Inner classes.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
class LocalInputStream extends InputStream
|
||||
{
|
||||
|
||||
// Field.
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
private final LocalSocketImpl impl;
|
||||
|
||||
// Constructor.
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
LocalInputStream (LocalSocketImpl impl)
|
||||
{
|
||||
this.impl = impl;
|
||||
}
|
||||
|
||||
// Instance methods.
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
public int available () throws IOException
|
||||
{
|
||||
return impl.available();
|
||||
}
|
||||
|
||||
public boolean markSupported ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public void mark (int readLimit)
|
||||
{
|
||||
}
|
||||
|
||||
public void reset () throws IOException
|
||||
{
|
||||
throw new IOException ("mark/reset not supported");
|
||||
}
|
||||
|
||||
public void close () throws IOException
|
||||
{
|
||||
impl.close();
|
||||
}
|
||||
|
||||
public int read () throws IOException
|
||||
{
|
||||
byte[] buf = new byte[1];
|
||||
int ret = read (buf);
|
||||
if (ret != -1)
|
||||
{
|
||||
return buf[0] & 0xFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public int read (byte[] buf) throws IOException
|
||||
{
|
||||
return read (buf, 0, buf.length);
|
||||
}
|
||||
|
||||
public int read (byte[] buf, int off, int len) throws IOException
|
||||
{
|
||||
int ret = impl.read (buf, off, len);
|
||||
|
||||
if (ret == 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
class LocalOutputStream extends OutputStream
|
||||
{
|
||||
|
||||
// Field.
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
private final LocalSocketImpl impl;
|
||||
|
||||
// Constructor.
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
LocalOutputStream (LocalSocketImpl impl)
|
||||
{
|
||||
this.impl = impl;
|
||||
}
|
||||
|
||||
// Instance methods.
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
public void close () throws IOException
|
||||
{
|
||||
impl.close ();
|
||||
}
|
||||
|
||||
public void flush () throws IOException
|
||||
{
|
||||
}
|
||||
|
||||
public void write (int b) throws IOException
|
||||
{
|
||||
byte[] buf = new byte [1];
|
||||
buf[0] = (byte) b;
|
||||
write (buf);
|
||||
}
|
||||
|
||||
public void write (byte[] buf) throws IOException
|
||||
{
|
||||
write (buf, 0, buf.length);
|
||||
}
|
||||
|
||||
public void write (byte[] buf, int off, int len) throws IOException
|
||||
{
|
||||
impl.write (buf, off, len);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -160,7 +160,9 @@ public class Connection extends URLConnection
|
|||
else if (c > 127) {
|
||||
try {
|
||||
byte [] c_as_bytes = Character.toString(c).getBytes("utf-8");
|
||||
System.arraycopy(c_as_bytes, 0, buf, pos, c_as_bytes.length);
|
||||
final int c_length = c_as_bytes.length;
|
||||
System.arraycopy(c_as_bytes, 0, buf, pos, c_length);
|
||||
pos += c_length;
|
||||
}
|
||||
catch (java.io.UnsupportedEncodingException x2) {
|
||||
throw (Error) new InternalError().initCause(x2);
|
||||
|
|
|
@ -429,6 +429,9 @@ public class FTPConnection
|
|||
public boolean changeWorkingDirectory(String path)
|
||||
throws IOException
|
||||
{
|
||||
// Do nothing if the path is empty.
|
||||
if (path.length() == 0)
|
||||
return true;
|
||||
String cmd = CWD + ' ' + path;
|
||||
send(cmd);
|
||||
FTPResponse response = getResponse();
|
||||
|
|
|
@ -48,12 +48,8 @@ import java.io.OutputStream;
|
|||
import java.net.ProtocolException;
|
||||
import java.net.URL;
|
||||
import java.security.cert.Certificate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.net.ssl.HandshakeCompletedEvent;
|
||||
|
@ -271,6 +267,8 @@ public class HTTPURLConnection
|
|||
secure = false;
|
||||
start = 7;
|
||||
int end = location.indexOf('/', start);
|
||||
if (end == -1)
|
||||
end = location.length();
|
||||
host = location.substring(start, end);
|
||||
int ci = host.lastIndexOf(':');
|
||||
if (ci != -1)
|
||||
|
@ -292,6 +290,8 @@ public class HTTPURLConnection
|
|||
secure = true;
|
||||
start = 8;
|
||||
int end = location.indexOf('/', start);
|
||||
if (end == -1)
|
||||
end = location.length();
|
||||
host = location.substring(start, end);
|
||||
int ci = host.lastIndexOf(':');
|
||||
if (ci != -1)
|
||||
|
@ -410,10 +410,7 @@ public class HTTPURLConnection
|
|||
}
|
||||
|
||||
public String getRequestProperty(String key)
|
||||
{
|
||||
if (key == null)
|
||||
return null;
|
||||
|
||||
{
|
||||
return requestHeaders.getValue(key);
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,6 @@ import java.util.Date;
|
|||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* A collection of HTTP header names and associated values. The
|
||||
|
@ -65,12 +64,18 @@ class Headers
|
|||
{
|
||||
/**
|
||||
* A list of HeaderElements
|
||||
*
|
||||
*/
|
||||
private final ArrayList headers = new ArrayList();
|
||||
|
||||
static final DateFormat dateFormat = new HTTPDateFormat();
|
||||
/**
|
||||
* The HTTP dateformat used to parse date header fields.
|
||||
*/
|
||||
private static final DateFormat dateFormat = new HTTPDateFormat();
|
||||
|
||||
/**
|
||||
* Class for a Header element consisting of
|
||||
* a name and value String.
|
||||
*/
|
||||
static class HeaderElement
|
||||
{
|
||||
String name;
|
||||
|
@ -83,8 +88,12 @@ class Headers
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public Headers()
|
||||
{
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -99,8 +108,11 @@ class Headers
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the specified header as a string. If
|
||||
* Returns the value of the specified header as a string. If
|
||||
* multiple values are present, the last one is returned.
|
||||
*
|
||||
* @param header the header name (case insensitive search)
|
||||
* @return The header value or <code>null</code> if not found.
|
||||
*/
|
||||
public String getValue(String header)
|
||||
{
|
||||
|
@ -116,8 +128,12 @@ class Headers
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the specified header as an integer,
|
||||
* or -1 if the header is not present or not an integer.
|
||||
* Returns the value of the specified header as an integer. If
|
||||
* multiple values are present, the last one is returned.
|
||||
*
|
||||
* @param header the header name (case insensitive search)
|
||||
* @return The header value or <code>-1</code> if not present or
|
||||
* not an integer value.
|
||||
*/
|
||||
public int getIntValue(String header)
|
||||
{
|
||||
|
@ -132,13 +148,18 @@ class Headers
|
|||
}
|
||||
catch (NumberFormatException e)
|
||||
{
|
||||
// fall through
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the specified header as a long, or -1 if the
|
||||
* header is not present or cannot be parsed as a long.
|
||||
* Returns the value of the specified header as a long. If
|
||||
* multiple values are present, the last one is returned.
|
||||
*
|
||||
* @param header the header name (case insensitive search)
|
||||
* @return The header value or <code>-1</code> if not present or
|
||||
* not a long value.
|
||||
*/
|
||||
public long getLongValue(String header)
|
||||
{
|
||||
|
@ -153,13 +174,18 @@ class Headers
|
|||
}
|
||||
catch (NumberFormatException e)
|
||||
{
|
||||
// fall through
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the specified header as a date,
|
||||
* or <code>null</code> if the header is not present or not a date.
|
||||
* Returns the value of the specified header as a date. If
|
||||
* multiple values are present, the last one is returned.
|
||||
*
|
||||
* @param header the header name (case insensitive search)
|
||||
* @return The header value or <code>null</code> if not present or
|
||||
* not a date value.
|
||||
*/
|
||||
public Date getDateValue(String header)
|
||||
{
|
||||
|
@ -180,23 +206,35 @@ class Headers
|
|||
|
||||
/**
|
||||
* Add a header to this set of headers. If there is an existing
|
||||
* header with the same name, it is discarded.
|
||||
* header with the same name it's value is replaced with the new value.
|
||||
* If multiple headers of the same name exist only the last one's value
|
||||
* is replaced.
|
||||
*
|
||||
* @param name the header name
|
||||
* @param value the header value
|
||||
*
|
||||
* @see #addValue
|
||||
* @see #addValue(String, String)
|
||||
*/
|
||||
public void put(String name, String value)
|
||||
{
|
||||
remove(name);
|
||||
headers.add(headers.size(), new HeaderElement(name, value));
|
||||
{
|
||||
for (int i = headers.size() - 1; i >= 0; i--)
|
||||
{
|
||||
HeaderElement e = (HeaderElement)headers.get(i);
|
||||
if (e.name.equalsIgnoreCase(name))
|
||||
{
|
||||
e.value = value;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// nothing was replaced so add it as new HeaderElement
|
||||
addValue(name, value);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add all headers from a set of headers to this set. If any of the
|
||||
* headers to be added have the same name as existing headers, the
|
||||
* existing headers will be discarded.
|
||||
* Add all headers from a set of headers to this set. Any existing header
|
||||
* with the same (case insensitive) name as one of the new headers will
|
||||
* be overridden.
|
||||
*
|
||||
* @param o the headers to be added
|
||||
*/
|
||||
|
@ -206,10 +244,6 @@ class Headers
|
|||
{
|
||||
HeaderElement e = (HeaderElement)it.next();
|
||||
remove(e.name);
|
||||
}
|
||||
for (Iterator it = o.iterator(); it.hasNext(); )
|
||||
{
|
||||
HeaderElement e = (HeaderElement)it.next();
|
||||
addValue(e.name, e.value);
|
||||
}
|
||||
}
|
||||
|
@ -234,6 +268,7 @@ class Headers
|
|||
* Parse the specified InputStream, adding headers to this collection.
|
||||
*
|
||||
* @param in the InputStream.
|
||||
* @throws IOException if I/O error occured.
|
||||
*/
|
||||
public void parse(InputStream in)
|
||||
throws IOException
|
||||
|
@ -303,7 +338,7 @@ class Headers
|
|||
* @param name the header name
|
||||
* @param value the header value
|
||||
*
|
||||
* @see #put
|
||||
* @see #put(String, String)
|
||||
*/
|
||||
public void addValue(String name, String value)
|
||||
{
|
||||
|
@ -312,13 +347,14 @@ class Headers
|
|||
|
||||
/**
|
||||
* Get a new Map containing all the headers. The keys of the Map
|
||||
* are Strings (the header names). The values of the Map are
|
||||
* are Strings (the header names). The headers will be included
|
||||
* case-sensitive in the map so that querying must be done with the
|
||||
* correct case of the needed header name. The values of the Map are
|
||||
* unmodifiable Lists containing Strings (the header values).
|
||||
*
|
||||
* <p>
|
||||
*
|
||||
* The returned map is modifiable. Changing it will not effect this
|
||||
* collection of Headers in any way.
|
||||
* <p>
|
||||
* The returned map is modifiable. Changing it will not effect this
|
||||
* collection of Headers in any way.</p>
|
||||
*
|
||||
* @return a Map containing all the headers.
|
||||
*/
|
||||
|
@ -352,9 +388,9 @@ class Headers
|
|||
*
|
||||
* @param i the header index.
|
||||
*
|
||||
* @return the header name.
|
||||
* @return The header name, or <code>null</code> if index outside of range.
|
||||
*
|
||||
* @see #getHeaderValue
|
||||
* @see #getHeaderValue(int)
|
||||
*/
|
||||
public String getHeaderName(int i)
|
||||
{
|
||||
|
@ -369,9 +405,9 @@ class Headers
|
|||
*
|
||||
* @param i the header index.
|
||||
*
|
||||
* @return the header value.
|
||||
* @return the header value, or <code>null</code> if index outside of range.
|
||||
*
|
||||
* @see #getHeaderName
|
||||
* @see #getHeaderName(int)
|
||||
*/
|
||||
public String getHeaderValue(int i)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue