This commit is contained in:
J. Duke 2017-07-05 17:19:21 +02:00
commit 8053bdbf2d
146 changed files with 3363 additions and 1675 deletions

View File

@ -78,3 +78,4 @@ b218a53ec7d3d42be61d31d6917a6c5c037b6f56 jdk7-b100
4193eaf5f1b82794c6a0fb1a8d11af43d1b1d611 jdk7-b101
a136a51f5113da4dad3853b74a8536ab583ab112 jdk7-b102
be2aedc4e3b1751c1310f334242ba69e90867f38 jdk7-b103
f8be576feefce0c6695f188ef97ec16b73ad9cfd jdk7-b104

View File

@ -109,3 +109,4 @@ ad1977f08c4d69162a0775fe3f9576b9fd521d10 hs19-b03
c5cadf1a07717955cf60dbaec16e35b529fd2cb0 jdk7-b102
cb4250ef73b21de6c487ea14e2b0b99eed67b4b6 jdk7-b103
e55900b5c1b865cac17e18abc639c7dc50de7fd8 hs19-b04
b4acf10eb134fe930802c97e36db65e7ccb544b5 jdk7-b104

View File

@ -78,3 +78,4 @@ b1903d7528d33b521df42bc9291bdcdd2f444a29 jdk7-b97
d58354a69011f3d3354765fa3167567c4c4a9612 jdk7-b101
13029a61b16bec06535d4f0aa98229b358684128 jdk7-b102
6488b70a23cc6dc4b7e00809bc503c2884bafb28 jdk7-b103
1a92820132a0221c5bdedd42d0888c57ce4cbb34 jdk7-b104

View File

@ -571,6 +571,16 @@ $(NOT_RT_JAR_LIST): FRC
$(ECHO) "META-INF/services/com.sun.tools.xjc.Plugin" >> $@
$(ECHO) "com/sun/tools/" >> $@
$(ECHO) "sun/jvmstat/" >> $@
$(ECHO) "sun/nio/cs/ext/" >> $@
$(ECHO) "sun/awt/HKSCS.class" >> $@
$(ECHO) "sun/awt/motif/X11GB2312$Decoder.class" >> $@
$(ECHO) "sun/awt/motif/X11GB2312$Encoder.class" >> $@
$(ECHO) "sun/awt/motif/X11GB2312.class" >> $@
$(ECHO) "sun/awt/motif/X11GBK$Encoder.class" >> $@
$(ECHO) "sun/awt/motif/X11GBK.class" >> $@
$(ECHO) "sun/awt/motif/X11KSC5601$Decoder.class" >> $@
$(ECHO) "sun/awt/motif/X11KSC5601$Encoder.class" >> $@
$(ECHO) "sun/awt/motif/X11KSC5601.class" >> $@
$(ECHO) "sun/rmi/rmic/" >> $@
$(ECHO) "sun/tools/asm/" >> $@
$(ECHO) "sun/tools/java/" >> $@

View File

@ -119,6 +119,7 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_ServerSocketChannelImpl_accept0;
Java_sun_nio_ch_ServerSocketChannelImpl_initIDs;
Java_sun_nio_ch_SocketChannelImpl_checkConnect;
Java_sun_nio_ch_SocketChannelImpl_sendOutOfBandData;
Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_accept0;
Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_initIDs;
Java_sun_nio_ch_UnixAsynchronousSocketChannelImpl_checkConnect;

View File

@ -106,6 +106,7 @@ SUNWprivate_1.1 {
Java_sun_nio_ch_ServerSocketChannelImpl_accept0;
Java_sun_nio_ch_ServerSocketChannelImpl_initIDs;
Java_sun_nio_ch_SocketChannelImpl_checkConnect;
Java_sun_nio_ch_SocketChannelImpl_sendOutOfBandData;
Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_accept0;
Java_sun_nio_ch_UnixAsynchronousServerSocketChannelImpl_initIDs;
Java_sun_nio_ch_UnixAsynchronousSocketChannelImpl_checkConnect;

View File

@ -57,6 +57,25 @@ CHARSETS_JAR = $(LIBDIR)/charsets.jar
# extcs
FILES_genout_extcs = $(FILES_gen_extcs:%.java=$(GENSRCDIR)/%.java)
#
# These sun.awt charsets use sun/nio/cs/ext charsets that only exist
# in JDK7 charsets.jar, which causes problem when build the symbol
# table for rt.jar in Release.gmk. They are now removed from the
# rt.jar when building jdk/jre image (in Release.gmk), so add them
# into charsets.jar here
#
ifeq ($(PLATFORM), windows)
FILES_src += \
sun/awt/HKSCS.java
else
# Solaris/Linux
FILES_src += \
sun/awt/HKSCS.java \
sun/awt/motif/X11GB2312.java \
sun/awt/motif/X11GBK.java \
sun/awt/motif/X11KSC5601.java
endif # PLATFORM
#
# Rules
#

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -132,7 +132,7 @@ public class DnsContextFactory implements InitialContextFactory {
throw new ConfigurationException("DNS pseudo-URL required");
}
List servers = new ArrayList();
List<String> servers = new ArrayList<>();
for (int i = 0; i < urls.length; i++) {
String server = urls[i].getHost();
@ -142,7 +142,7 @@ public class DnsContextFactory implements InitialContextFactory {
// No server or port given, so look to underlying platform.
// ResolverConfiguration does some limited caching, so the
// following is reasonably efficient even if called rapid-fire.
List platformServers =
List<String> platformServers =
ResolverConfiguration.open().nameservers();
if (!platformServers.isEmpty()) {
servers.addAll(platformServers);
@ -157,8 +157,7 @@ public class DnsContextFactory implements InitialContextFactory {
? server
: server + ":" + port);
}
return (String[]) servers.toArray(
new String[servers.size()]);
return servers.toArray(new String[servers.size()]);
}
/*

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -658,6 +658,11 @@ public final class Connection implements Runnable {
}
}
if (nparent) {
LdapRequest ldr = pendingRequests;
while (ldr != null) {
ldr.notify();
ldr = ldr.next;
}
parent.processConnectionClosure();
}
}

View File

@ -803,8 +803,7 @@ final class Filter {
//
////////////////////////////////////////////////////////////////////////////
// private static final boolean dbg = false;
private static final boolean dbg = true;
private static final boolean dbg = false;
private static int dbgIndent = 0;
private static void dprint(String msg) {

View File

@ -81,7 +81,7 @@ public class RegistryContext implements Context, Referenceable {
}
RMIClientSocketFactory socketFactory =
(RMIClientSocketFactory) env.get(SOCKET_FACTORY);
(RMIClientSocketFactory) environment.get(SOCKET_FACTORY);
registry = getRegistry(host, port, socketFactory);
this.host = host;
this.port = port;

View File

@ -41,6 +41,13 @@ public interface AutoCloseable {
* be declared to throw more specific exceptions (or no exception
* at all, if the close cannot fail).
*
* <p>Note that unlike the {@link java.io.Closeable#close close}
* method of {@link java.io.Closeable}, this {@code close} method
* is <em>not</em> required to be idempotent. In other words,
* calling this {@code close} method more than once may have some
* visible side effect, unlike {@code Closeable.close} which is
* required to have no effect if called more than once.
*
* @throws Exception if this resource cannot be closed
*/
void close() throws Exception;

View File

@ -28,12 +28,12 @@ import java.io.*;
import java.util.*;
/**
* The <code>Throwable</code> class is the superclass of all errors and
* The {@code Throwable} class is the superclass of all errors and
* exceptions in the Java language. Only objects that are instances of this
* class (or one of its subclasses) are thrown by the Java Virtual Machine or
* can be thrown by the Java <code>throw</code> statement. Similarly, only
* can be thrown by the Java {@code throw} statement. Similarly, only
* this class or one of its subclasses can be the argument type in a
* <code>catch</code> clause.
* {@code catch} clause.
*
* For the purposes of compile-time checking of exceptions, {@code
* Throwable} and any subclass of {@code Throwable} that is not also a
@ -73,11 +73,11 @@ import java.util.*;
* permit the method to throw the cause directly. For example, suppose
* a persistent collection conforms to the {@link java.util.Collection
* Collection} interface, and that its persistence is implemented atop
* <tt>java.io</tt>. Suppose the internals of the <tt>add</tt> method
* {@code java.io}. Suppose the internals of the {@code add} method
* can throw an {@link java.io.IOException IOException}. The implementation
* can communicate the details of the <tt>IOException</tt> to its caller
* while conforming to the <tt>Collection</tt> interface by wrapping the
* <tt>IOException</tt> in an appropriate unchecked exception. (The
* can communicate the details of the {@code IOException} to its caller
* while conforming to the {@code Collection} interface by wrapping the
* {@code IOException} in an appropriate unchecked exception. (The
* specification for the persistent collection should indicate that it is
* capable of throwing such exceptions.)
*
@ -86,7 +86,7 @@ import java.util.*;
* {@link #initCause(Throwable)} method. New throwable classes that
* wish to allow causes to be associated with them should provide constructors
* that take a cause and delegate (perhaps indirectly) to one of the
* <tt>Throwable</tt> constructors that takes a cause. For example:
* {@code Throwable} constructors that takes a cause. For example:
* <pre>
* try {
* lowLevelOp();
@ -94,10 +94,10 @@ import java.util.*;
* throw new HighLevelException(le); // Chaining-aware constructor
* }
* </pre>
* Because the <tt>initCause</tt> method is public, it allows a cause to be
* Because the {@code initCause} method is public, it allows a cause to be
* associated with any throwable, even a "legacy throwable" whose
* implementation predates the addition of the exception chaining mechanism to
* <tt>Throwable</tt>. For example:
* {@code Throwable}. For example:
* <pre>
* try {
* lowLevelOp();
@ -121,28 +121,28 @@ import java.util.*;
* use the standard exception chaining mechanism, while continuing to
* implement their "legacy" chaining mechanisms for compatibility.
*
* <p>Further, as of release 1.4, many general purpose <tt>Throwable</tt>
* <p>Further, as of release 1.4, many general purpose {@code Throwable}
* classes (for example {@link Exception}, {@link RuntimeException},
* {@link Error}) have been retrofitted with constructors that take
* a cause. This was not strictly necessary, due to the existence of the
* <tt>initCause</tt> method, but it is more convenient and expressive to
* {@code initCause} method, but it is more convenient and expressive to
* delegate to a constructor that takes a cause.
*
* <p>By convention, class <code>Throwable</code> and its subclasses have two
* <p>By convention, class {@code Throwable} and its subclasses have two
* constructors, one that takes no arguments and one that takes a
* <code>String</code> argument that can be used to produce a detail message.
* {@code String} argument that can be used to produce a detail message.
* Further, those subclasses that might likely have a cause associated with
* them should have two more constructors, one that takes a
* <code>Throwable</code> (the cause), and one that takes a
* <code>String</code> (the detail message) and a <code>Throwable</code> (the
* {@code Throwable} (the cause), and one that takes a
* {@code String} (the detail message) and a {@code Throwable} (the
* cause).
*
* <p>Also introduced in release 1.4 is the {@link #getStackTrace()} method,
* which allows programmatic access to the stack trace information that was
* previously available only in text form, via the various forms of the
* {@link #printStackTrace()} method. This information has been added to the
* <i>serialized representation</i> of this class so <tt>getStackTrace</tt>
* and <tt>printStackTrace</tt> will operate properly on a throwable that
* <i>serialized representation</i> of this class so {@code getStackTrace}
* and {@code printStackTrace} will operate properly on a throwable that
* was obtained by deserialization.
*
* @author unascribed
@ -162,7 +162,7 @@ public class Throwable implements Serializable {
/**
* Specific details about the Throwable. For example, for
* <tt>FileNotFoundException</tt>, this contains the name of
* {@code FileNotFoundException}, this contains the name of
* the file that could not be found.
*
* @serial
@ -212,7 +212,7 @@ public class Throwable implements Serializable {
private static final String SUPPRESSED_CAPTION = "Suppressed: ";
/**
* Constructs a new throwable with <code>null</code> as its detail message.
* Constructs a new throwable with {@code null} as its detail message.
* The cause is not initialized, and may subsequently be initialized by a
* call to {@link #initCause}.
*
@ -242,7 +242,7 @@ public class Throwable implements Serializable {
/**
* Constructs a new throwable with the specified detail message and
* cause. <p>Note that the detail message associated with
* <code>cause</code> is <i>not</i> automatically incorporated in
* {@code cause} is <i>not</i> automatically incorporated in
* this throwable's detail message.
*
* <p>The {@link #fillInStackTrace()} method is called to initialize
@ -251,7 +251,7 @@ public class Throwable implements Serializable {
* @param message the detail message (which is saved for later retrieval
* by the {@link #getMessage()} method).
* @param cause the cause (which is saved for later retrieval by the
* {@link #getCause()} method). (A <tt>null</tt> value is
* {@link #getCause()} method). (A {@code null} value is
* permitted, and indicates that the cause is nonexistent or
* unknown.)
* @since 1.4
@ -264,8 +264,8 @@ public class Throwable implements Serializable {
/**
* Constructs a new throwable with the specified cause and a detail
* message of <tt>(cause==null ? null : cause.toString())</tt> (which
* typically contains the class and detail message of <tt>cause</tt>).
* message of {@code (cause==null ? null : cause.toString())} (which
* typically contains the class and detail message of {@code cause}).
* This constructor is useful for throwables that are little more than
* wrappers for other throwables (for example, {@link
* java.security.PrivilegedActionException}).
@ -274,7 +274,7 @@ public class Throwable implements Serializable {
* the stack trace data in the newly created throwable.
*
* @param cause the cause (which is saved for later retrieval by the
* {@link #getCause()} method). (A <tt>null</tt> value is
* {@link #getCause()} method). (A {@code null} value is
* permitted, and indicates that the cause is nonexistent or
* unknown.)
* @since 1.4
@ -288,8 +288,8 @@ public class Throwable implements Serializable {
/**
* Returns the detail message string of this throwable.
*
* @return the detail message string of this <tt>Throwable</tt> instance
* (which may be <tt>null</tt>).
* @return the detail message string of this {@code Throwable} instance
* (which may be {@code null}).
*/
public String getMessage() {
return detailMessage;
@ -300,7 +300,7 @@ public class Throwable implements Serializable {
* Subclasses may override this method in order to produce a
* locale-specific message. For subclasses that do not override this
* method, the default implementation returns the same result as
* <code>getMessage()</code>.
* {@code getMessage()}.
*
* @return The localized description of this throwable.
* @since JDK1.1
@ -310,22 +310,22 @@ public class Throwable implements Serializable {
}
/**
* Returns the cause of this throwable or <code>null</code> if the
* Returns the cause of this throwable or {@code null} if the
* cause is nonexistent or unknown. (The cause is the throwable that
* caused this throwable to get thrown.)
*
* <p>This implementation returns the cause that was supplied via one of
* the constructors requiring a <tt>Throwable</tt>, or that was set after
* the constructors requiring a {@code Throwable}, or that was set after
* creation with the {@link #initCause(Throwable)} method. While it is
* typically unnecessary to override this method, a subclass can override
* it to return a cause set by some other means. This is appropriate for
* a "legacy chained throwable" that predates the addition of chained
* exceptions to <tt>Throwable</tt>. Note that it is <i>not</i>
* necessary to override any of the <tt>PrintStackTrace</tt> methods,
* all of which invoke the <tt>getCause</tt> method to determine the
* exceptions to {@code Throwable}. Note that it is <i>not</i>
* necessary to override any of the {@code PrintStackTrace} methods,
* all of which invoke the {@code getCause} method to determine the
* cause of a throwable.
*
* @return the cause of this throwable or <code>null</code> if the
* @return the cause of this throwable or {@code null} if the
* cause is nonexistent or unknown.
* @since 1.4
*/
@ -345,11 +345,11 @@ public class Throwable implements Serializable {
* even once.
*
* @param cause the cause (which is saved for later retrieval by the
* {@link #getCause()} method). (A <tt>null</tt> value is
* {@link #getCause()} method). (A {@code null} value is
* permitted, and indicates that the cause is nonexistent or
* unknown.)
* @return a reference to this <code>Throwable</code> instance.
* @throws IllegalArgumentException if <code>cause</code> is this
* @return a reference to this {@code Throwable} instance.
* @throws IllegalArgumentException if {@code cause} is this
* throwable. (A throwable cannot be its own cause.)
* @throws IllegalStateException if this throwable was
* created with {@link #Throwable(Throwable)} or
@ -375,7 +375,7 @@ public class Throwable implements Serializable {
* <li> the result of invoking this object's {@link #getLocalizedMessage}
* method
* </ul>
* If <tt>getLocalizedMessage</tt> returns <tt>null</tt>, then just
* If {@code getLocalizedMessage} returns {@code null}, then just
* the class name is returned.
*
* @return a string representation of this throwable.
@ -389,8 +389,8 @@ public class Throwable implements Serializable {
/**
* Prints this throwable and its backtrace to the
* standard error stream. This method prints a stack trace for this
* <code>Throwable</code> object on the error output stream that is
* the value of the field <code>System.err</code>. The first line of
* {@code Throwable} object on the error output stream that is
* the value of the field {@code System.err}. The first line of
* output contains the result of the {@link #toString()} method for
* this object. Remaining lines represent data previously recorded by
* the method {@link #fillInStackTrace()}. The format of this
@ -435,7 +435,7 @@ public class Throwable implements Serializable {
* at Junk.c(Junk.java:21)
* ... 3 more
* </pre>
* Note the presence of lines containing the characters <tt>"..."</tt>.
* Note the presence of lines containing the characters {@code "..."}.
* These lines indicate that the remainder of the stack trace for this
* exception matches the indicated number of frames from the bottom of the
* stack trace of the exception that was caused by this exception (the
@ -542,14 +542,17 @@ public class Throwable implements Serializable {
/**
* Prints this throwable and its backtrace to the specified print stream.
*
* @param s <code>PrintStream</code> to use for output
* @param s {@code PrintStream} to use for output
*/
public void printStackTrace(PrintStream s) {
printStackTrace(new WrappedPrintStream(s));
}
private void printStackTrace(PrintStreamOrWriter s) {
Set<Throwable> dejaVu = new HashSet<Throwable>();
// Guard against malicious overrides of Throwable.equals by
// using a Set with identity equality semantics.
Set<Throwable> dejaVu =
Collections.newSetFromMap(new IdentityHashMap<Throwable, Boolean>());
dejaVu.add(this);
synchronized (s.lock()) {
@ -616,7 +619,7 @@ public class Throwable implements Serializable {
* Prints this throwable and its backtrace to the specified
* print writer.
*
* @param s <code>PrintWriter</code> to use for output
* @param s {@code PrintWriter} to use for output
* @since JDK1.1
*/
public void printStackTrace(PrintWriter s) {
@ -669,10 +672,10 @@ public class Throwable implements Serializable {
/**
* Fills in the execution stack trace. This method records within this
* <code>Throwable</code> object information about the current state of
* {@code Throwable} object information about the current state of
* the stack frames for the current thread.
*
* @return a reference to this <code>Throwable</code> instance.
* @return a reference to this {@code Throwable} instance.
* @see java.lang.Throwable#printStackTrace()
*/
public synchronized native Throwable fillInStackTrace();
@ -694,7 +697,7 @@ public class Throwable implements Serializable {
* this throwable is permitted to return a zero-length array from this
* method. Generally speaking, the array returned by this method will
* contain one element for every frame that would be printed by
* <tt>printStackTrace</tt>.
* {@code printStackTrace}.
*
* @return an array of stack trace elements representing the stack trace
* pertaining to this throwable.
@ -727,14 +730,14 @@ public class Throwable implements Serializable {
* read from a serialization stream.
*
* @param stackTrace the stack trace elements to be associated with
* this <code>Throwable</code>. The specified array is copied by this
* this {@code Throwable}. The specified array is copied by this
* call; changes in the specified array after the method invocation
* returns will have no affect on this <code>Throwable</code>'s stack
* returns will have no affect on this {@code Throwable}'s stack
* trace.
*
* @throws NullPointerException if <code>stackTrace</code> is
* <code>null</code>, or if any of the elements of
* <code>stackTrace</code> are <code>null</code>
* @throws NullPointerException if {@code stackTrace} is
* {@code null}, or if any of the elements of
* {@code stackTrace} are {@code null}
*
* @since 1.4
*/
@ -761,8 +764,8 @@ public class Throwable implements Serializable {
* package-protection for use by SharedSecrets.
*
* @param index index of the element to return.
* @throws IndexOutOfBoundsException if <tt>index &lt; 0 ||
* index &gt;= getStackTraceDepth() </tt>
* @throws IndexOutOfBoundsException if {@code index < 0 ||
* index >= getStackTraceDepth() }
*/
native StackTraceElement getStackTraceElement(int index);
@ -794,14 +797,27 @@ public class Throwable implements Serializable {
* were suppressed, typically by the automatic resource management
* statement, in order to deliver this exception.
*
* <p>Note that when one exception {@linkplain
* #initCause(Throwable) causes} another exception, the first
* exception is usually caught and then the second exception is
* thrown in response. In contrast, when one exception suppresses
* another, two exceptions are thrown in sibling code blocks, such
* as in a {@code try} block and in its {@code finally} block, and
* control flow can only continue with one exception so the second
* is recorded as a suppressed exception of the first.
*
* @param exception the exception to be added to the list of
* suppressed exceptions
* @throws NullPointerException if {@code exception} is null
* @throws IllegalArgumentException if {@code exception} is this
* throwable; a throwable cannot suppress itself.
* @since 1.7
*/
public synchronized void addSuppressedException(Throwable exception) {
if (exception == null)
throw new NullPointerException(NULL_CAUSE_MESSAGE);
if (exception == this)
throw new IllegalArgumentException("Self-suppression not permitted");
if (suppressedExceptions.size() == 0)
suppressedExceptions = new ArrayList<Throwable>();

View File

@ -596,6 +596,9 @@ class Bits { // package-private
return pageSize;
}
static int pageCount(long size) {
return (int)(size + (long)pageSize() - 1L) / pageSize();
}
private static boolean unaligned;
private static boolean unalignedKnown = false;

View File

@ -25,6 +25,8 @@
package java.nio;
import sun.misc.Unsafe;
/**
* A direct byte buffer whose content is a memory-mapped region of a file.
@ -93,6 +95,22 @@ public abstract class MappedByteBuffer
throw new UnsupportedOperationException();
}
// Returns the distance (in bytes) of the buffer from the page aligned address
// of the mapping. Computed each time to avoid storing in every direct buffer.
private long mappingOffset() {
int ps = Bits.pageSize();
long offset = address % ps;
return (offset >= 0) ? offset : (ps + offset);
}
private long mappingAddress(long mappingOffset) {
return address - mappingOffset;
}
private long mappingLength(long mappingOffset) {
return (long)capacity() + mappingOffset;
}
/**
* Tells whether or not this buffer's content is resident in physical
* memory.
@ -115,7 +133,9 @@ public abstract class MappedByteBuffer
checkMapped();
if ((address == 0) || (capacity() == 0))
return true;
return isLoaded0(((DirectByteBuffer)this).address(), capacity());
long offset = mappingOffset();
long length = mappingLength(offset);
return isLoaded0(mappingAddress(offset), length, Bits.pageCount(length));
}
/**
@ -132,7 +152,20 @@ public abstract class MappedByteBuffer
checkMapped();
if ((address == 0) || (capacity() == 0))
return this;
load0(((DirectByteBuffer)this).address(), capacity(), Bits.pageSize());
long offset = mappingOffset();
long length = mappingLength(offset);
load0(mappingAddress(offset), length);
// touch each page
Unsafe unsafe = Unsafe.getUnsafe();
int ps = Bits.pageSize();
int count = Bits.pageCount(length);
long a = mappingAddress(offset);
for (int i=0; i<count; i++) {
unsafe.getByte(a);
a += ps;
}
return this;
}
@ -156,14 +189,15 @@ public abstract class MappedByteBuffer
*/
public final MappedByteBuffer force() {
checkMapped();
if ((address == 0) || (capacity() == 0))
return this;
force0(((DirectByteBuffer)this).address(), capacity());
if ((address != 0) && (capacity() != 0)) {
long offset = mappingOffset();
force0(mappingAddress(offset), mappingLength(offset));
}
return this;
}
private native boolean isLoaded0(long address, long length);
private native int load0(long address, long length, int pageSize);
private native boolean isLoaded0(long address, long length, int pageCount);
private native void load0(long address, long length);
private native void force0(long address, long length);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -387,7 +387,7 @@ public abstract class X509CRL extends CRL implements X509Extension {
/**
* Gets the signature algorithm name for the CRL
* signature algorithm. An example is the string "SHA-1/DSA".
* signature algorithm. An example is the string "SHA256withRSA".
* The ASN.1 definition for this is:
* <pre>
* signatureAlgorithm AlgorithmIdentifier<p>

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -352,7 +352,7 @@ implements X509Extension {
/**
* Gets the signature algorithm name for the certificate
* signature algorithm. An example is the string "SHA-1/DSA".
* signature algorithm. An example is the string "SHA256withRSA".
* The ASN.1 definition for this is:
* <pre>
* signatureAlgorithm AlgorithmIdentifier<p>

View File

@ -26,18 +26,9 @@
package java.util;
/**
* Linked list implementation of the {@code List} interface. Implements all
* optional list operations, and permits all elements (including
* {@code null}). In addition to implementing the {@code List} interface,
* the {@code LinkedList} class provides uniformly named methods to
* {@code get}, {@code remove} and {@code insert} an element at the
* beginning and end of the list. These operations allow linked lists to be
* used as a stack, {@linkplain Queue queue}, or {@linkplain Deque
* double-ended queue}.
*
* <p>The class implements the {@code Deque} interface, providing
* first-in-first-out queue operations for {@code add},
* {@code poll}, along with other stack and deque operations.
* Linked list implementation of the {@link List} and {@link Deque} interfaces.
* Implements all optional operations, and permits all elements (including
* {@code null}).
*
* <p>All of the operations perform as could be expected for a doubly-linked
* list. Operations that index into the list will traverse the list from

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -113,7 +113,6 @@ public class BasicColorChooserUI extends ColorChooserUI
previewPanelHolder.setBorder(new TitledBorder(previewString));
}
previewPanelHolder.setInheritsPopupMenu(true);
chooser.add(previewPanelHolder, BorderLayout.SOUTH);
installPreviewPanel();
chooser.applyComponentOrientation(c.getComponentOrientation());
@ -126,13 +125,9 @@ public class BasicColorChooserUI extends ColorChooserUI
uninstallDefaultChoosers();
uninstallListeners();
uninstallPreviewPanel();
uninstallDefaults();
previewPanelHolder.remove(previewPanel);
if (previewPanel instanceof UIResource) {
chooser.setPreviewPanel(null);
}
previewPanelHolder = null;
previewPanel = null;
defaultChoosers = null;
@ -143,29 +138,37 @@ public class BasicColorChooserUI extends ColorChooserUI
}
protected void installPreviewPanel() {
if (previewPanel != null) {
previewPanelHolder.remove(previewPanel);
previewPanel.removeMouseListener(getHandler());
JComponent previewPanel = this.chooser.getPreviewPanel();
if (previewPanel == null) {
previewPanel = ColorChooserComponentFactory.getPreviewPanel();
}
previewPanel = chooser.getPreviewPanel();
Dimension layoutSize = new Dimension(); // fix for bug 4759306
if (previewPanel != null) {
layoutSize = new BorderLayout().minimumLayoutSize(previewPanel);
if ((previewPanelHolder != null) && (chooser != null) &&
(layoutSize.getWidth() + layoutSize.getHeight() == 0)) {
chooser.remove(previewPanelHolder);
return;
else {
Dimension size = new BorderLayout().minimumLayoutSize(previewPanel);
if ((size.width == 0) && (size.height == 0)) {
previewPanel = null;
}
}
if (previewPanel == null || previewPanel instanceof UIResource) {
previewPanel = ColorChooserComponentFactory.getPreviewPanel(); // get from table?
chooser.setPreviewPanel(previewPanel);
this.previewPanel = previewPanel;
if (previewPanel != null) {
chooser.add(previewPanelHolder, BorderLayout.SOUTH);
previewPanel.setForeground(chooser.getColor());
previewPanelHolder.add(previewPanel);
previewPanel.addMouseListener(getHandler());
previewPanel.setInheritsPopupMenu(true);
}
previewPanel.setForeground(chooser.getColor());
previewPanelHolder.add(previewPanel);
previewPanel.addMouseListener(getHandler());
previewPanel.setInheritsPopupMenu(true);
}
/**
* Removes installed preview panel from the UI delegate.
*
* @since 1.7
*/
protected void uninstallPreviewPanel() {
if (this.previewPanel != null) {
this.previewPanel.removeMouseListener(getHandler());
this.previewPanelHolder.remove(this.previewPanel);
}
this.chooser.remove(this.previewPanelHolder);
}
protected void installDefaults() {
@ -209,7 +212,6 @@ public class BasicColorChooserUI extends ColorChooserUI
chooser.removePropertyChangeListener( propertyChangeListener );
chooser.getSelectionModel().removeChangeListener(previewListener);
previewListener = null;
previewPanel.removeMouseListener(getHandler());
}
private void selectionChanged(ColorSelectionModel model) {
@ -312,9 +314,8 @@ public class BasicColorChooserUI extends ColorChooserUI
}
}
else if (prop == JColorChooser.PREVIEW_PANEL_PROPERTY) {
if (evt.getNewValue() != previewPanel) {
installPreviewPanel();
}
uninstallPreviewPanel();
installPreviewPanel();
}
else if (prop == JColorChooser.SELECTION_MODEL_PROPERTY) {
ColorSelectionModel oldModel = (ColorSelectionModel) evt.getOldValue();
@ -352,5 +353,4 @@ public class BasicColorChooserUI extends ColorChooserUI
super("color");
}
}
}

View File

@ -202,8 +202,8 @@ public class BasicComboPopup extends JPopupMenu implements ComboPopup {
* Implementation of ComboPopup.show().
*/
public void show() {
comboBox.firePopupMenuWillBecomeVisible();
setListSelection(comboBox.getSelectedIndex());
Point location = getPopupLocation();
show( comboBox, location.x, location.y );
}
@ -344,7 +344,8 @@ public class BasicComboPopup extends JPopupMenu implements ComboPopup {
protected void firePopupMenuWillBecomeVisible() {
super.firePopupMenuWillBecomeVisible();
comboBox.firePopupMenuWillBecomeVisible();
// comboBox.firePopupMenuWillBecomeVisible() is called from BasicComboPopup.show() method
// to let the user change the popup menu from the PopupMenuListener.popupMenuWillBecomeVisible()
}
protected void firePopupMenuWillBecomeInvisible() {

View File

@ -570,7 +570,9 @@ public class DefaultFormatter extends JFormattedTextField.AbstractFormatter
direction = -1;
}
if (getOverwriteMode() && rh.text != null) {
if (getOverwriteMode() && rh.text != null &&
getFormattedTextField().getSelectedText() == null)
{
rh.length = Math.min(Math.max(rh.length, rh.text.length()),
rh.fb.getDocument().getLength() - rh.offset);
}

View File

@ -622,18 +622,8 @@ public class InternationalFormatter extends DefaultFormatter {
/**
* Overriden in an attempt to honor the literals.
* <p>
* If we do
* not allow invalid values and are in overwrite mode, this does the
* following for each character in the replacement range:
* <ol>
* <li>If the character is a literal, add it to the string to replace
* with. If there is text to insert and it doesn't match the
* literal, then insert the literal in the the middle of the insert
* text. This allows you to either paste in literals or not and
* get the same behavior.
* <li>If there is no text to insert, replace it with ' '.
* </ol>
* <p>If we do not allow invalid values and are in overwrite mode, this
* {@code rh.length} is corrected as to preserve trailing literals.
* If not in overwrite mode, and there is text to insert it is
* inserted at the next non literal index going forward. If there
* is only text to remove, it is removed from the next non literal
@ -643,61 +633,27 @@ public class InternationalFormatter extends DefaultFormatter {
if (!getAllowsInvalid()) {
String text = rh.text;
int tl = (text != null) ? text.length() : 0;
JTextComponent c = getFormattedTextField();
if (tl == 0 && rh.length == 1 && getFormattedTextField().
getSelectionStart() != rh.offset) {
if (tl == 0 && rh.length == 1 && c.getSelectionStart() != rh.offset) {
// Backspace, adjust to actually delete next non-literal.
rh.offset = getNextNonliteralIndex(rh.offset, -1);
}
if (getOverwriteMode()) {
StringBuffer replace = null;
} else if (getOverwriteMode()) {
int pos = rh.offset;
int textPos = pos;
boolean overflown = false;
for (int counter = 0, textIndex = 0,
max = Math.max(tl, rh.length); counter < max;
counter++) {
if (isLiteral(rh.offset + counter)) {
if (replace != null) {
replace.append(getLiteral(rh.offset +
counter));
}
if (textIndex < tl && text.charAt(textIndex) ==
getLiteral(rh.offset + counter)) {
textIndex++;
}
else if (textIndex == 0) {
rh.offset++;
rh.length--;
counter--;
max--;
}
else if (replace == null) {
replace = new StringBuffer(max);
replace.append(text.substring(0, textIndex));
replace.append(getLiteral(rh.offset +
counter));
}
}
else if (textIndex < tl) {
if (replace != null) {
replace.append(text.charAt(textIndex));
}
textIndex++;
}
else {
// Nothing to replace it with, assume ' '
if (replace == null) {
replace = new StringBuffer(max);
if (textIndex > 0) {
replace.append(text.substring(0, textIndex));
}
}
if (replace != null) {
replace.append(' ');
}
for (int i = 0; i < rh.length; i++) {
while (isLiteral(pos)) pos++;
if (pos >= string.length()) {
pos = textPos;
overflown = true;
break;
}
textPos = ++pos;
}
if (replace != null) {
rh.text = replace.toString();
if (overflown || c.getSelectedText() == null) {
rh.length = pos - rh.offset;
}
}
else if (tl > 0) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -26,7 +26,6 @@
package sun.net.dns;
import java.util.List;
import java.io.IOException;
/**
* The configuration of the client resolver.
@ -68,7 +67,7 @@ public abstract class ResolverConfiguration {
*
* @return list of domain names
*/
public abstract List searchlist();
public abstract List<String> searchlist();
/**
* Returns a list of name servers used for host name lookup.
@ -78,7 +77,7 @@ public abstract class ResolverConfiguration {
*
* @return list of the name servers
*/
public abstract List nameservers();
public abstract List<String> nameservers();
/**

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -45,20 +45,21 @@ import sun.security.action.*;
public final class DNSNameService implements NameService {
// List of domains specified by property
private LinkedList domainList = null;
private LinkedList<String> domainList = null;
// JNDI-DNS URL for name servers specified via property
private String nameProviderUrl = null;
// Per-thread soft cache of the last temporary context
private static ThreadLocal contextRef = new ThreadLocal();
private static ThreadLocal<SoftReference<ThreadContext>> contextRef =
new ThreadLocal<>();
// Simple class to encapsulate the temporary context
private static class ThreadContext {
private DirContext dirCtxt;
private List nsList;
private List<String> nsList;
public ThreadContext(DirContext dirCtxt, List nsList) {
public ThreadContext(DirContext dirCtxt, List<String> nsList) {
this.dirCtxt = dirCtxt;
this.nsList = nsList;
}
@ -67,16 +68,16 @@ public final class DNSNameService implements NameService {
return dirCtxt;
}
public List nameservers() {
public List<String> nameservers() {
return nsList;
}
}
// Returns a per-thread DirContext
private DirContext getTemporaryContext() throws NamingException {
SoftReference ref = (SoftReference)contextRef.get();
SoftReference<ThreadContext> ref = contextRef.get();
ThreadContext thrCtxt = null;
List nsList = null;
List<String> nsList = null;
// if no property specified we need to obtain the list of servers
//
@ -87,7 +88,7 @@ public final class DNSNameService implements NameService {
// specified then we need to check if the DNS configuration
// has changed.
//
if ((ref != null) && ((thrCtxt = (ThreadContext)ref.get()) != null)) {
if ((ref != null) && ((thrCtxt = ref.get()) != null)) {
if (nameProviderUrl == null) {
if (!thrCtxt.nameservers().equals(nsList)) {
// DNS configuration has changed
@ -98,7 +99,7 @@ public final class DNSNameService implements NameService {
// new thread context needs to be created
if (thrCtxt == null) {
final Hashtable<String,Object> env = new Hashtable<String,Object>();
final Hashtable<String,Object> env = new Hashtable<>();
env.put("java.naming.factory.initial",
"com.sun.jndi.dns.DnsContextFactory");
@ -119,10 +120,9 @@ public final class DNSNameService implements NameService {
//
DirContext dirCtxt;
try {
dirCtxt = (DirContext)
java.security.AccessController.doPrivileged(
new java.security.PrivilegedExceptionAction() {
public Object run() throws NamingException {
dirCtxt = java.security.AccessController.doPrivileged(
new java.security.PrivilegedExceptionAction<DirContext>() {
public DirContext run() throws NamingException {
// Create the DNS context using NamingManager rather than using
// the initial context constructor. This avoids having the initial
// context constructor call itself.
@ -130,7 +130,7 @@ public final class DNSNameService implements NameService {
if (!(ctx instanceof DirContext)) {
return null; // cannot create a DNS context
}
return ctx;
return (DirContext)ctx;
}
});
} catch (java.security.PrivilegedActionException pae) {
@ -161,18 +161,18 @@ public final class DNSNameService implements NameService {
*
* @throws UnknownHostException if lookup fails or other error.
*/
private ArrayList resolve(final DirContext ctx, final String name, final String[] ids,
int depth) throws UnknownHostException
private ArrayList<String> resolve(final DirContext ctx, final String name,
final String[] ids, int depth)
throws UnknownHostException
{
ArrayList results = new ArrayList();
ArrayList<String> results = new ArrayList<>();
Attributes attrs;
// do the query
try {
attrs = (Attributes)
java.security.AccessController.doPrivileged(
new java.security.PrivilegedExceptionAction() {
public Object run() throws NamingException {
attrs = java.security.AccessController.doPrivileged(
new java.security.PrivilegedExceptionAction<Attributes>() {
public Attributes run() throws NamingException {
return ctx.getAttributes(name, ids);
}
});
@ -181,7 +181,7 @@ public final class DNSNameService implements NameService {
}
// non-requested type returned so enumeration is empty
NamingEnumeration ne = attrs.getAll();
NamingEnumeration<? extends Attribute> ne = attrs.getAll();
if (!ne.hasMoreElements()) {
throw new UnknownHostException("DNS record not found");
}
@ -190,7 +190,7 @@ public final class DNSNameService implements NameService {
UnknownHostException uhe = null;
try {
while (ne.hasMoreElements()) {
Attribute attr = (Attribute)ne.next();
Attribute attr = ne.next();
String attrID = attr.getID();
for (NamingEnumeration e = attr.getAll(); e.hasMoreElements();) {
@ -251,13 +251,12 @@ public final class DNSNameService implements NameService {
// no property specified so check host DNS resolver configured
// with at least one nameserver in dotted notation.
//
List nsList = ResolverConfiguration.open().nameservers();
if (nsList.size() == 0)
List<String> nsList = ResolverConfiguration.open().nameservers();
if (nsList.isEmpty()) {
throw new RuntimeException("no nameservers provided");
}
boolean found = false;
Iterator i = nsList.iterator();
while (i.hasNext()) {
String addr = (String)i.next();
for (String addr: nsList) {
if (IPAddressUtil.isIPv4LiteralAddress(addr) ||
IPAddressUtil.isIPv6LiteralAddress(addr)) {
found = true;
@ -308,8 +307,8 @@ public final class DNSNameService implements NameService {
// suffix if the list has one entry.
if (results == null) {
List searchList = null;
Iterator i;
List<String> searchList = null;
Iterator<String> i;
boolean usingSearchList = false;
if (domainList != null) {
@ -324,7 +323,7 @@ public final class DNSNameService implements NameService {
// iterator through each domain suffix
while (i.hasNext()) {
String parentDomain = (String)i.next();
String parentDomain = i.next();
int start = 0;
while ((start = parentDomain.indexOf(".")) != -1
&& start < parentDomain.length() -1) {
@ -407,7 +406,7 @@ public final class DNSNameService implements NameService {
String literalip = "";
String[] ids = { "PTR" };
DirContext ctx;
ArrayList results = null;
ArrayList<String> results = null;
try {
ctx = getTemporaryContext();
} catch (NamingException nx) {
@ -420,7 +419,7 @@ public final class DNSNameService implements NameService {
literalip += "IN-ADDR.ARPA.";
results = resolve(ctx, literalip, ids, 0);
host = (String)results.get(0);
host = results.get(0);
} else if (addr.length == 16) { // IPv6 Address
/**
* Because RFC 3152 changed the root domain name for reverse
@ -437,7 +436,7 @@ public final class DNSNameService implements NameService {
try {
results = resolve(ctx, ip6lit, ids, 0);
host = (String)results.get(0);
host = results.get(0);
} catch (UnknownHostException e) {
host = null;
}
@ -445,7 +444,7 @@ public final class DNSNameService implements NameService {
// IP6.ARPA lookup failed, let's try the older IP6.INT
ip6lit = literalip + "IP6.INT.";
results = resolve(ctx, ip6lit, ids, 0);
host = (String)results.get(0);
host = results.get(0);
}
}
} catch (Exception e) {
@ -478,11 +477,10 @@ public final class DNSNameService implements NameService {
* @return String containing the JNDI-DNS provider URL
* corresponding to the supplied List of nameservers.
*/
private static String createProviderURL(List nsList) {
Iterator i = nsList.iterator();
private static String createProviderURL(List<String> nsList) {
StringBuffer sb = new StringBuffer();
while (i.hasNext()) {
appendIfLiteralAddress((String)i.next(), sb);
for (String s: nsList) {
appendIfLiteralAddress(s, sb);
}
return sb.toString();
}

View File

@ -336,7 +336,12 @@ public class SocketAdaptor
}
public void sendUrgentData(int data) throws IOException {
throw new SocketException("Urgent data not supported");
synchronized (sc.blockingLock()) {
if (!sc.isBlocking())
throw new IllegalBlockingModeException();
int n = sc.sendOutOfBandData((byte)data);
assert n == 1;
}
}
public void setOOBInline(boolean on) throws SocketException {

View File

@ -498,6 +498,36 @@ class SocketChannelImpl
return write0(Util.subsequence(srcs, offset, length));
}
// package-private
int sendOutOfBandData(byte b) throws IOException {
synchronized (writeLock) {
ensureWriteOpen();
int n = 0;
try {
begin();
synchronized (stateLock) {
if (!isOpen())
return 0;
writerThread = NativeThread.current();
}
for (;;) {
n = sendOutOfBandData(fd, b);
if ((n == IOStatus.INTERRUPTED) && isOpen())
continue;
return IOStatus.normalize(n);
}
} finally {
writerCleanup();
end((n > 0) || (n == IOStatus.UNAVAILABLE));
synchronized (stateLock) {
if ((n <= 0) && (!isOutputOpen))
throw new AsynchronousCloseException();
}
assert IOStatus.check(n);
}
}
}
protected void implConfigureBlocking(boolean block) throws IOException {
IOUtil.configureBlocking(fd, block);
}
@ -957,6 +987,9 @@ class SocketChannelImpl
boolean block, boolean ready)
throws IOException;
private static native int sendOutOfBandData(FileDescriptor fd, byte data)
throws IOException;
static {
Util.load();
nd = new SocketDispatcher();

View File

@ -42,6 +42,8 @@ import java.util.Enumeration;
import java.util.StringTokenizer;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
import sun.net.dns.ResolverConfiguration;
import sun.security.krb5.internal.crypto.EType;
import sun.security.krb5.internal.ktab.*;
import sun.security.krb5.internal.Krb5;
@ -1180,6 +1182,33 @@ public class Config {
}
// get the domain realm mapping from the configuration
String mapRealm = PrincipalName.mapHostToRealm(hostName);
if (mapRealm == null) {
// No match. Try search and/or domain in /etc/resolv.conf
List<String> srchlist = ResolverConfiguration.open().searchlist();
for (String domain: srchlist) {
realm = checkRealm(domain);
if (realm != null) {
break;
}
}
} else {
realm = checkRealm(mapRealm);
}
if (realm == null) {
throw new KrbException(Krb5.KRB_ERR_GENERIC,
"Unable to locate Kerberos realm");
}
return realm;
}
/**
* Check if the provided realm is the correct realm
* @return the realm if correct, or null otherwise
*/
private static String checkRealm(String mapRealm) {
if (DEBUG) {
System.out.println("getRealmFromDNS: trying " + mapRealm);
}
String[] records = null;
String newRealm = mapRealm;
while ((records == null) && (newRealm != null)) {
@ -1188,23 +1217,14 @@ public class Config {
newRealm = Realm.parseRealmComponent(newRealm);
// if no DNS TXT records found, try again using sub-realm
}
if (records == null) {
// no DNS TXT records
throw new KrbException(Krb5.KRB_ERR_GENERIC,
"Unable to locate Kerberos realm");
}
boolean found = false;
for (int i = 0; i < records.length; i++) {
if (records[i].equals(mapRealm)) {
found = true;
realm = records[i];
if (records != null) {
for (int i = 0; i < records.length; i++) {
if (records[i].equalsIgnoreCase(mapRealm)) {
return records[i];
}
}
}
if (found == false) {
throw new KrbException(Krb5.KRB_ERR_GENERIC,
"Unable to locate Kerberos realm");
}
return realm;
return null;
}
/**
@ -1218,10 +1238,16 @@ public class Config {
String kdcs = null;
String[] srvs = null;
// locate DNS SRV record using UDP
srvs = KrbServiceLocator.getKerberosService(realm, "_udp.");
if (DEBUG) {
System.out.println("getKDCFromDNS using UDP");
}
srvs = KrbServiceLocator.getKerberosService(realm, "_udp");
if (srvs == null) {
// locate DNS SRV record using TCP
srvs = KrbServiceLocator.getKerberosService(realm, "_tcp.");
if (DEBUG) {
System.out.println("getKDCFromDNS using UDP");
}
srvs = KrbServiceLocator.getKerberosService(realm, "_tcp");
}
if (srvs == null) {
// no DNS SRV records

View File

@ -36,6 +36,7 @@ import sun.security.krb5.internal.ccache.CredentialsCache;
import sun.security.krb5.internal.crypto.EType;
import java.io.IOException;
import java.util.Date;
import java.util.Locale;
import java.net.InetAddress;
/**
@ -287,7 +288,7 @@ public class Credentials {
// The default ticket cache on Windows is not a file.
String os = java.security.AccessController.doPrivileged(
new sun.security.action.GetPropertyAction("os.name"));
if (os.toUpperCase().startsWith("WINDOWS")) {
if (os.toUpperCase(Locale.ENGLISH).startsWith("WINDOWS")) {
Credentials creds = acquireDefaultCreds();
if (creds == null) {
if (DEBUG) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -28,6 +28,7 @@ package sun.security.pkcs;
import java.io.IOException;
import java.io.OutputStream;
import java.security.cert.CertificateException;
import java.util.Locale;
import java.util.Date;
import java.util.Hashtable;
import sun.security.x509.CertificateExtensions;
@ -742,7 +743,7 @@ public class PKCS9Attribute implements DerEncoder {
* the name.
*/
public static ObjectIdentifier getOID(String name) {
return NAME_OID_TABLE.get(name.toLowerCase());
return NAME_OID_TABLE.get(name.toLowerCase(Locale.ENGLISH));
}
/**

View File

@ -26,6 +26,7 @@ package sun.security.pkcs11;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.Locale;
import java.security.*;
import java.security.spec.*;
@ -201,7 +202,7 @@ final class P11Cipher extends CipherSpi {
}
private int parseMode(String mode) throws NoSuchAlgorithmException {
mode = mode.toUpperCase();
mode = mode.toUpperCase(Locale.ENGLISH);
int result;
if (mode.equals("ECB")) {
result = MODE_ECB;
@ -222,7 +223,7 @@ final class P11Cipher extends CipherSpi {
throws NoSuchPaddingException {
paddingObj = null;
padBuffer = null;
padding = padding.toUpperCase();
padding = padding.toUpperCase(Locale.ENGLISH);
if (padding.equals("NOPADDING")) {
paddingType = PAD_NONE;
} else if (padding.equals("PKCS5PADDING")) {

View File

@ -29,6 +29,8 @@ import java.security.*;
import java.security.spec.AlgorithmParameterSpec;
import java.security.spec.*;
import java.util.Locale;
import javax.crypto.*;
import javax.crypto.spec.*;
@ -110,7 +112,7 @@ final class P11RSACipher extends CipherSpi {
protected void engineSetPadding(String padding)
throws NoSuchPaddingException {
String lowerPadding = padding.toLowerCase();
String lowerPadding = padding.toLowerCase(Locale.ENGLISH);
if (lowerPadding.equals("pkcs1Padding")) {
// empty
} else {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2006, 2010 Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -52,6 +52,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import sun.security.x509.AccessDescription;
import sun.security.x509.GeneralNameInterface;
import sun.security.x509.URIName;
@ -162,7 +163,7 @@ class URICertStore extends CertStoreSpi {
}
this.uri = ((URICertStoreParameters) params).uri;
// if ldap URI, use an LDAPCertStore to fetch certs and CRLs
if (uri.getScheme().toLowerCase().equals("ldap")) {
if (uri.getScheme().toLowerCase(Locale.ENGLISH).equals("ldap")) {
if (LDAP.helper() == null)
throw new NoSuchAlgorithmException("LDAP not present");
ldap = true;

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -28,6 +28,7 @@ package sun.security.util;
import java.math.BigInteger;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Locale;
/**
* A utility class for debuging.
@ -262,7 +263,7 @@ public class Debug {
source = left;
// convert the rest to lower-case characters
target.append(source.toString().toLowerCase());
target.append(source.toString().toLowerCase(Locale.ENGLISH));
return target.toString();
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -25,17 +25,16 @@
package sun.security.util;
import java.io.FilterOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.Vector;
import java.util.Comparator;
import java.util.Arrays;
import java.math.BigInteger;
import java.util.Locale;
/**
@ -501,7 +500,7 @@ extends ByteArrayOutputStream implements DerEncoder {
pattern = "yyyyMMddHHmmss'Z'";
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
SimpleDateFormat sdf = new SimpleDateFormat(pattern, Locale.US);
sdf.setTimeZone(tz);
byte[] time = (sdf.format(d)).getBytes("ISO-8859-1");

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -1227,7 +1227,7 @@ class AVAKeyword {
(String keyword, int standard, Map<String, String> extraKeywordMap)
throws IOException {
keyword = keyword.toUpperCase();
keyword = keyword.toUpperCase(Locale.ENGLISH);
if (standard == AVA.RFC2253) {
if (keyword.startsWith(" ") || keyword.endsWith(" ")) {
throw new IOException("Invalid leading or trailing space " +

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -553,9 +553,10 @@ public class AlgorithmId implements Serializable, DerEncoder {
for (Enumeration<Object> enum_ = provs[i].keys();
enum_.hasMoreElements(); ) {
String alias = (String)enum_.nextElement();
String upperCaseAlias = alias.toUpperCase(Locale.ENGLISH);
int index;
if (alias.toUpperCase().startsWith("ALG.ALIAS") &&
(index=alias.toUpperCase().indexOf("OID.", 0)) != -1) {
if (upperCaseAlias.startsWith("ALG.ALIAS") &&
(index=upperCaseAlias.indexOf("OID.", 0)) != -1) {
index += "OID.".length();
if (index == alias.length()) {
// invalid alias entry
@ -565,19 +566,26 @@ public class AlgorithmId implements Serializable, DerEncoder {
oidTable = new HashMap<String,ObjectIdentifier>();
}
oidString = alias.substring(index);
String stdAlgName
= provs[i].getProperty(alias).toUpperCase();
if (oidTable.get(stdAlgName) == null) {
String stdAlgName = provs[i].getProperty(alias);
if (stdAlgName != null) {
stdAlgName = stdAlgName.toUpperCase(Locale.ENGLISH);
}
if (stdAlgName != null &&
oidTable.get(stdAlgName) == null) {
oidTable.put(stdAlgName,
new ObjectIdentifier(oidString));
}
}
}
}
if (oidTable == null) {
oidTable = new HashMap<String,ObjectIdentifier>(1);
}
initOidTable = true;
}
return oidTable.get(name.toUpperCase());
return oidTable.get(name.toUpperCase(Locale.ENGLISH));
}
private static ObjectIdentifier oid(int ... values) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -26,6 +26,7 @@
package sun.security.x509;
import java.io.IOException;
import java.util.Locale;
import sun.security.util.*;
@ -198,8 +199,9 @@ public class DNSName implements GeneralNameInterface {
else if (inputName.getType() != NAME_DNS)
constraintType = NAME_DIFF_TYPE;
else {
String inName = (((DNSName)inputName).getName()).toLowerCase();
String thisName = name.toLowerCase();
String inName =
(((DNSName)inputName).getName()).toLowerCase(Locale.ENGLISH);
String thisName = name.toLowerCase(Locale.ENGLISH);
if (inName.equals(thisName))
constraintType = NAME_MATCH;
else if (thisName.endsWith(inName)) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -26,6 +26,7 @@
package sun.security.x509;
import java.io.IOException;
import java.util.Locale;
import sun.security.util.*;
@ -187,8 +188,9 @@ public class RFC822Name implements GeneralNameInterface
constraintType = NAME_DIFF_TYPE;
} else {
//RFC2459 specifies that case is not significant in RFC822Names
String inName = (((RFC822Name)inputName).getName()).toLowerCase();
String thisName = name.toLowerCase();
String inName =
(((RFC822Name)inputName).getName()).toLowerCase(Locale.ENGLISH);
String thisName = name.toLowerCase(Locale.ENGLISH);
if (inName.equals(thisName)) {
constraintType = NAME_MATCH;
} else if (thisName.endsWith(inName)) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -56,8 +56,11 @@ public class ResolverConfigurationImpl
// Parse /etc/resolv.conf to get the values for a particular
// keyword.
//
private LinkedList resolvconf(String keyword, int maxperkeyword, int maxkeywords) {
LinkedList ll = new LinkedList();
private LinkedList<String> resolvconf(String keyword,
int maxperkeyword,
int maxkeywords)
{
LinkedList<String> ll = new LinkedList<>();
try {
BufferedReader in =
@ -99,8 +102,8 @@ public class ResolverConfigurationImpl
return ll;
}
private LinkedList searchlist;
private LinkedList nameservers;
private LinkedList<String> searchlist;
private LinkedList<String> nameservers;
// Load DNS configuration from OS
@ -118,9 +121,9 @@ public class ResolverConfigurationImpl
// get the name servers from /etc/resolv.conf
nameservers =
(LinkedList)java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction() {
public Object run() {
java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<LinkedList<String>>() {
public LinkedList<String> run() {
// typically MAXNS is 3 but we've picked 5 here
// to allow for additional servers if required.
return resolvconf("nameserver", 1, 5);
@ -137,15 +140,15 @@ public class ResolverConfigurationImpl
// obtain search list or local domain
private LinkedList getSearchList() {
private LinkedList<String> getSearchList() {
LinkedList sl;
LinkedList<String> sl;
// first try the search keyword in /etc/resolv.conf
sl = (LinkedList)java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction() {
public Object run() {
sl = java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<LinkedList<String>>() {
public LinkedList<String> run() {
LinkedList ll;
// first try search keyword (max 6 domains)
@ -177,10 +180,10 @@ public class ResolverConfigurationImpl
// try domain keyword in /etc/resolv.conf
sl = (LinkedList)java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction() {
public Object run() {
LinkedList ll;
sl = java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<LinkedList<String>>() {
public LinkedList<String> run() {
LinkedList<String> ll;
ll = resolvconf("domain", 1, 1);
if (ll.size() > 0) {
@ -197,7 +200,7 @@ public class ResolverConfigurationImpl
// no local domain so try fallback (RPC) domain or
// hostname
sl = new LinkedList();
sl = new LinkedList<>();
String domain = fallbackDomain0();
if (domain != null && domain.length() > 0) {
sl.add(domain);
@ -213,7 +216,7 @@ public class ResolverConfigurationImpl
opts = new OptionsImpl();
}
public List searchlist() {
public List<String> searchlist() {
synchronized (lock) {
loadConfig();
@ -222,7 +225,7 @@ public class ResolverConfigurationImpl
}
}
public List nameservers() {
public List<String> nameservers() {
synchronized (lock) {
loadConfig();

View File

@ -131,7 +131,7 @@ static struct sockaddr *getBroadcast(JNIEnv *env, int sock, const char *name, s
static short getSubnet(JNIEnv *env, int sock, const char *ifname);
static int getIndex(int sock, const char *ifname);
static int getFlags(JNIEnv *env, int sock, const char *ifname);
static int getFlags(int sock, const char *ifname);
static int getMacAddress(JNIEnv *env, int sock, const char* ifname, const struct in_addr* addr, unsigned char *buf);
static int getMTU(JNIEnv *env, int sock, const char *ifname);
@ -550,7 +550,7 @@ static int getFlags0(JNIEnv *env, jstring name) {
name_utf = (*env)->GetStringUTFChars(env, name, &isCopy);
ret = getFlags(env, sock, name_utf);
ret = getFlags(sock, name_utf);
close(sock);
(*env)->ReleaseStringUTFChars(env, name, name_utf);
@ -753,19 +753,27 @@ static netif *enumInterfaces(JNIEnv *env) {
* If IPv6 is available then enumerate IPv6 addresses.
*/
#ifdef AF_INET6
sock = openSocket(env, AF_INET6);
if (sock < 0 && (*env)->ExceptionOccurred(env)) {
freeif(ifs);
return NULL;
}
ifs = enumIPv6Interfaces(env, sock, ifs);
close(sock);
/* User can disable ipv6 expicitly by -Djava.net.preferIPv4Stack=true,
* so we have to call ipv6_available()
*/
if (ipv6_available()) {
if ((*env)->ExceptionOccurred(env)) {
freeif(ifs);
return NULL;
}
sock = openSocket(env, AF_INET6);
if (sock < 0 && (*env)->ExceptionOccurred(env)) {
freeif(ifs);
return NULL;
}
ifs = enumIPv6Interfaces(env, sock, ifs);
close(sock);
if ((*env)->ExceptionOccurred(env)) {
freeif(ifs);
return NULL;
}
}
#endif
return ifs;
@ -877,7 +885,7 @@ netif *addif(JNIEnv *env, int sock, const char * if_name, netif *ifs, struct soc
* the 'parent' interface with the new records.
*/
*name_colonP = 0;
if (getFlags(env,sock,name) < 0) {
if (getFlags(sock, name) < 0) {
// failed to access parent interface do not create parent.
// We are a virtual interface with no parent.
isVirtual = 1;
@ -1249,7 +1257,7 @@ static int getMTU(JNIEnv *env, int sock, const char *ifname) {
return if2.ifr_mtu;
}
static int getFlags(JNIEnv *env, int sock, const char *ifname) {
static int getFlags(int sock, const char *ifname) {
struct ifreq if2;
int ret = -1;
@ -1625,13 +1633,12 @@ static int getMTU(JNIEnv *env, int sock, const char *ifname) {
}
static int getFlags(JNIEnv *env, int sock, const char *ifname) {
static int getFlags(int sock, const char *ifname) {
struct lifreq lifr;
memset((caddr_t)&lifr, 0, sizeof(lifr));
strcpy((caddr_t)&(lifr.lifr_name), ifname);
if (ioctl(sock, SIOCGLIFFLAGS, (char *)&lifr) < 0) {
NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException", "IOCTL SIOCGLIFFLAGS failed");
return -1;
}

View File

@ -32,14 +32,11 @@
#include <stddef.h>
#include <stdlib.h>
JNIEXPORT jboolean JNICALL
Java_java_nio_MappedByteBuffer_isLoaded0(JNIEnv *env, jobject obj,
jlong address, jlong len)
Java_java_nio_MappedByteBuffer_isLoaded0(JNIEnv *env, jobject obj, jlong address,
jlong len, jint numPages)
{
jboolean loaded = JNI_TRUE;
jint pageSize = sysconf(_SC_PAGESIZE);
jint numPages = (len + pageSize - 1) / pageSize;
int result = 0;
int i = 0;
void *a = (void *) jlong_to_ptr(address);
@ -55,9 +52,9 @@ Java_java_nio_MappedByteBuffer_isLoaded0(JNIEnv *env, jobject obj,
}
result = mincore(a, (size_t)len, vec);
if (result != 0) {
free(vec);
if (result == -1) {
JNU_ThrowIOExceptionWithLastError(env, "mincore failed");
free(vec);
return JNI_FALSE;
}
@ -72,23 +69,15 @@ Java_java_nio_MappedByteBuffer_isLoaded0(JNIEnv *env, jobject obj,
}
JNIEXPORT jint JNICALL
JNIEXPORT void JNICALL
Java_java_nio_MappedByteBuffer_load0(JNIEnv *env, jobject obj, jlong address,
jlong len, jint pageSize)
jlong len)
{
int pageIncrement = pageSize / sizeof(int);
int numPages = (len + pageSize - 1) / pageSize;
int *ptr = (int *)jlong_to_ptr(address);
int i = 0;
int j = 0;
int result = madvise((caddr_t)ptr, len, MADV_WILLNEED);
/* touch every page */
for (i=0; i<numPages; i++) {
j += *((volatile int *)ptr);
ptr += pageIncrement;
char *a = (char *)jlong_to_ptr(address);
int result = madvise((caddr_t)a, (size_t)len, MADV_WILLNEED);
if (result == -1) {
JNU_ThrowIOExceptionWithLastError(env, "madvise failed");
}
return j;
}
@ -96,13 +85,9 @@ JNIEXPORT void JNICALL
Java_java_nio_MappedByteBuffer_force0(JNIEnv *env, jobject obj, jlong address,
jlong len)
{
jlong pageSize = sysconf(_SC_PAGESIZE);
unsigned long lAddress = address;
jlong offset = lAddress % pageSize;
void *a = (void *) jlong_to_ptr(lAddress - offset);
int result = msync(a, (size_t)(len + offset), MS_SYNC);
if (result != 0) {
void* a = (void *)jlong_to_ptr(address);
int result = msync(a, (size_t)len, MS_SYNC);
if (result == -1) {
JNU_ThrowIOExceptionWithLastError(env, "msync failed");
}
}

View File

@ -84,3 +84,11 @@ Java_sun_nio_ch_SocketChannelImpl_checkConnect(JNIEnv *env, jobject this,
}
return 0;
}
JNIEXPORT jint JNICALL
Java_sun_nio_ch_SocketChannelImpl_sendOutOfBandData(JNIEnv* env, jclass this,
jobject fdo, jbyte b)
{
int n = send(fdval(env, fdo), (const void*)&b, 1, MSG_OOB);
return convertReturnVal(env, n, JNI_FALSE);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -28,7 +28,6 @@ package sun.net.dns;
import java.util.List;
import java.util.LinkedList;
import java.util.StringTokenizer;
import java.io.IOException;
/*
* An implementation of sun.net.ResolverConfiguration for Windows.
@ -63,8 +62,8 @@ public class ResolverConfigurationImpl
// Parse string that consists of token delimited by space or commas
// and return LinkedHashMap
private LinkedList stringToList(String str) {
LinkedList ll = new LinkedList();
private LinkedList<String> stringToList(String str) {
LinkedList<String> ll = new LinkedList<>();
// comma and space are valid delimites
StringTokenizer st = new StringTokenizer(str, ", ");
@ -112,7 +111,7 @@ public class ResolverConfigurationImpl
opts = new OptionsImpl();
}
public List searchlist() {
public List<String> searchlist() {
synchronized (lock) {
loadConfig();
@ -121,7 +120,7 @@ public class ResolverConfigurationImpl
}
}
public List nameservers() {
public List<String> nameservers() {
synchronized (lock) {
loadConfig();

View File

@ -31,8 +31,8 @@
#include <stdlib.h>
JNIEXPORT jboolean JNICALL
Java_java_nio_MappedByteBuffer_isLoaded0(JNIEnv *env, jobject obj,
jlong address, jlong len)
Java_java_nio_MappedByteBuffer_isLoaded0(JNIEnv *env, jobject obj, jlong address,
jlong len, jint numPages)
{
jboolean loaded = JNI_FALSE;
/* Information not available?
@ -43,22 +43,11 @@ Java_java_nio_MappedByteBuffer_isLoaded0(JNIEnv *env, jobject obj,
return loaded;
}
JNIEXPORT jint JNICALL
JNIEXPORT void JNICALL
Java_java_nio_MappedByteBuffer_load0(JNIEnv *env, jobject obj, jlong address,
jlong len, jint pageSize)
jlong len)
{
int *ptr = (int *) jlong_to_ptr(address);
int pageIncrement = pageSize / sizeof(int);
jlong numPages = (len + pageSize - 1) / pageSize;
int i = 0;
int j = 0;
/* touch every page */
for (i=0; i<numPages; i++) {
j += *((volatile int *)ptr);
ptr += pageIncrement;
}
return j;
// no madvise available
}
JNIEXPORT void JNICALL

View File

@ -139,3 +139,16 @@ Java_sun_nio_ch_SocketChannelImpl_checkConnect(JNIEnv *env, jobject this,
return 0;
}
JNIEXPORT jint JNICALL
Java_sun_nio_ch_SocketChannelImpl_sendOutOfBandData(JNIEnv* env, jclass this,
jobject fdo, jbyte b)
{
int n = send(fdval(env, fdo), (const char*)&b, 1, MSG_OOB);
if (n == SOCKET_ERROR) {
handleSocketError(env, WSAGetLastError());
return IOS_THROWN;
} else {
return n;
}
}

View File

@ -310,24 +310,32 @@ typedef JLocalRef<jclass> JLClass;
* Class to encapsulate the extraction of the java string contents
* into a buffer and the cleanup of the buffer
*/
class JavaStringBuffer
class JavaStringBuffer
{
protected:
LPWSTR m_pStr;
jsize m_dwSize;
LPWSTR getNonEmptyString() {
return (NULL==m_pStr)
? L""
: m_pStr;
}
public:
JavaStringBuffer(jsize cbTCharCount) {
m_dwSize = cbTCharCount;
m_pStr = (LPWSTR)safe_Malloc( (m_dwSize+1)*sizeof(WCHAR) );
m_pStr = (0 == m_dwSize)
? NULL
: (LPWSTR)safe_Malloc( (m_dwSize+1)*sizeof(WCHAR) );
}
JavaStringBuffer(JNIEnv *env, jstring text) {
if (NULL == text) {
m_pStr = L"";
m_dwSize = 0;
m_dwSize = (NULL == text)
? 0
: env->GetStringLength(text);
if (0 == m_dwSize) {
m_pStr = NULL;
} else {
m_dwSize = env->GetStringLength(text);
m_pStr = (LPWSTR)safe_Malloc( (m_dwSize+1)*sizeof(WCHAR) );
env->GetStringRegion(text, 0, m_dwSize, reinterpret_cast<jchar *>(m_pStr));
m_pStr[m_dwSize] = 0;
@ -341,12 +349,16 @@ public:
void Resize(jsize cbTCharCount) {
m_dwSize = cbTCharCount;
//It is ok to have non-null terminated string here.
//The function is used only for space reservation in staff buffer for
//followed data copying process. And that is the reason why we ignore
//the special case m_dwSize==0 here.
m_pStr = (LPWSTR)safe_Realloc(m_pStr, (m_dwSize+1)*sizeof(WCHAR) );
}
//we are in UNICODE now, so LPWSTR:=:LPTSTR
operator LPWSTR() { return m_pStr; }
operator LPARAM() { return (LPARAM)m_pStr; }
void *GetData() { return (void *)m_pStr; }
operator LPWSTR() { return getNonEmptyString(); }
operator LPARAM() { return (LPARAM)getNonEmptyString(); }
void *GetData() { return (void *)getNonEmptyString(); }
jsize GetSize() { return m_dwSize; }
};

View File

@ -366,139 +366,6 @@ javax/print/attribute/MediaMappingsTest.java generic-all
# jdk_net
# Suspect many of these tests auffer from using fixed ports, no concrete
# evidence.
# Times out on Windows X64
sun/net/www/http/KeepAliveStream/KeepAliveStreamCloseWithWrongContentLength.java generic-all
# Dies on Solaris 10 sparc and sparcv9, Linux -ea -esa with
# Interrupted or IO exception, maybe writing to non-unique named file?
com/sun/net/httpserver/bugs/B6373555.java generic-all
# Fails on OpenSolaris, times out
java/net/MulticastSocket/SetOutgoingIf.java generic-all
# Timed out on Solaris 10 X86.
com/sun/net/httpserver/Test3.java generic-all
# Exception in test on windows
com/sun/net/httpserver/bugs/B6373555.java windows-all
# One of these pollutes the samevm on Linux, too many open files, kills jtreg
com/sun/net/httpserver/bugs/B6339483.java generic-all
com/sun/net/httpserver/bugs/B6341616.java generic-all
# Suspects in cascading samevm problem, solaris 11 i586 (needs othervm?)
# Suspect use of setHttps*()?
com/sun/net/httpserver/SelCacheTest.java generic-all
com/sun/net/httpserver/Test1.java generic-all
com/sun/net/httpserver/Test12.java generic-all
com/sun/net/httpserver/Test13.java generic-all
com/sun/net/httpserver/Test6a.java generic-all
com/sun/net/httpserver/Test7a.java generic-all
com/sun/net/httpserver/Test8a.java generic-all
com/sun/net/httpserver/Test9.java generic-all
com/sun/net/httpserver/Test9a.java generic-all
# 10,000 connections, fails on Linux and makes tests&jtreg fail with samevm
com/sun/net/httpserver/bugs/B6361557.java generic-all
# Address already in use with samevm? Always? Solaris sparc, probably ports
java/net/Authenticator/B4933582.sh generic-all
java/net/DatagramSocket/SendSize.java generic-all
# Solaris 11: exception wrong address???
java/net/Inet6Address/B6558853.java generic-all
# Not closing stream on file i6a1, windows samevm problem
java/net/Inet6Address/serialize/Serialize.java generic-all
# Linux x64 fails "network unreachable"?
java/net/ipv6tests/TcpTest.java generic-all
# Linux i586, fails with unexpected output
java/net/MulticastSocket/NoLoopbackPackets.java linux-i586
# Address already in use
java/net/DatagramSocket/DatagramTimeout.java generic-all
# Fails on windows, takes too long and fails
# Solaris 10 sparcv9, samevm, java.lang.Exception: Takes too long. Dead lock
java/net/Socket/DeadlockTest.java generic-all
# Linux i586 address already in use or connection error, samevm issues
java/net/Socket/AccurateTimeout.java generic-all
java/net/Socket/asyncClose/BrokenPipe.java generic-all
java/net/Socket/CloseAvailable.java generic-all
# Linux X64 address already in use, samevm issues
java/net/Socket/LingerTest.java generic-all
java/net/Socket/LinkLocal.java generic-all
java/net/Socket/NullHost.java generic-all
java/net/Socket/ProxyCons.java generic-all
java/net/Socket/ReadTimeout.java generic-all
# Linux X64 address already in use, samevm issues
java/net/Socket/SetReceiveBufferSize.java generic-all
# Linux i586 address already in use or connection error, samevm issues
java/net/Socket/setReuseAddress/Basic.java generic-all
java/net/Socket/setReuseAddress/Restart.java generic-all
# Linux X64 address already in use, samevm issues
java/net/Socket/SetSoLinger.java generic-all
# Address already in use, windows samevm
java/net/Socket/Timeout.java generic-all
# Linux X64 address already in use, samevm issues
java/net/Socket/ShutdownBoth.java generic-all
java/net/Socket/SoTimeout.java generic-all
java/net/Socket/TestClose.java generic-all
java/net/Socket/UrgentDataTest.java generic-all
java/net/SocketInputStream/SocketClosedException.java generic-all
java/net/SocketInputStream/SocketTimeout.java generic-all
# Linux i586, address already in use or timeout, samevm issues
java/net/URLConnection/DisconnectAfterEOF.java generic-all
java/net/URLConnection/HandleContentTypeWithAttrs.java generic-all
java/net/URLConnection/Responses.java generic-all
java/net/URLConnection/TimeoutTest.java generic-all
java/net/URLConnection/ZeroContentLength.java generic-all
# Solaris 11 i586 fails with samevm, not sure why
java/net/ResponseCache/B6181108.java generic-all
java/net/ResponseCache/ResponseCacheTest.java generic-all
java/net/URL/GetContent.java generic-all
java/net/URLConnection/HttpContinueStackOverflow.java generic-all
java/net/URLConnection/Redirect307Test.java generic-all
java/net/URLConnection/RedirectLimit.java generic-all
java/net/URLConnection/ResendPostBody.java generic-all
java/net/URL/OpenStream.java generic-all
java/net/URLClassLoader/ClassLoad.java generic-all
java/net/URLConnection/SetIfModifiedSince.java generic-all
java/net/URLConnection/URLConnectionHeaders.java generic-all
# Linux i586 Connection refused or address already in use, samevm issues
sun/net/ftp/B6427768.java generic-all
sun/net/ftp/FtpGetContent.java generic-all
sun/net/ftp/FtpURL.java generic-all
# Failed on solaris 10 i586, Exception: should have gotten HttpRetryException?
sun/net/www/http/ChunkedOutputStream/Test.java generic-all
# Trouble cleaning up threads in samevm mode on solaris 11 i586
sun/net/www/http/HttpClient/ProxyTest.java generic-all
sun/net/www/http/ChunkedInputStream/ChunkedEncodingTest.java generic-all
sun/net/www/http/ChunkedInputStream/ChunkedEncodingWithProgressMonitorTest.java generic-all
sun/net/www/http/HttpClient/B6726695.java generic-all
sun/net/www/http/HttpClient/MultiThreadTest.java generic-all
sun/net/www/http/KeepAliveCache/KeepAliveTimerThread.java generic-all
# Connection refused, windows samevm
sun/net/www/protocol/http/DigestTest.java generic-all
############################################################################
# jdk_io

View File

@ -1,7 +1,7 @@
#!/bin/sh
#
# Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -141,7 +141,10 @@ topPid=$$
cleanup()
{
if [ -r "$failFile" ] ; then
cat $failFile >& 2
ls -l "$failFile" >&2
echo "<cleanup:_begin_failFile_contents>" >&2
cat "$failFile" >&2
echo "<cleanup:_end_failFile_contents>" >&2
fi
# Kill all processes that have our special
@ -337,6 +340,10 @@ EOF
failFile=$tmpFileDir/testFailed
debuggeepidFile=$tmpFileDir/debuggeepid
rm -f $failFile $debuggeepidFile
if [ -f "$failFile" ]; then
echo "ERROR: unable to delete existing failFile:" >&2
ls -l "$failFile" >&2
fi
if [ -z "$pkg" ] ; then
pkgSlash=
@ -524,6 +531,10 @@ cmd()
# See 6562090. Maybe there is a way that the exit
# can cause jdb to not get the quit.
sleep 5
# The exit code value here doesn't matter since this function
# is called as part of a pipeline and it is not the last command
# in the pipeline.
exit 1
fi
@ -938,6 +949,10 @@ waitForFinish()
done
if [ -r "$failFile" ] ; then
ls -l "$failFile" >&2
echo "<waitForFinish:_begin_failFile_contents>" >&2
cat "$failFile" >&2
echo "<waitForFinish:_end_failFile_contents>" >&2
exit 1
fi
}
@ -946,33 +961,45 @@ waitForFinish()
# $3 is the number of lines to search (from the end)
grepForString()
{
# See bug 6220903. Sometimes the jdb '> ' prompt chars
# get inserted into the string we are searching for
# so ignore those chars.
if [ -z "$3" ] ; then
theCmd=cat
else
theCmd="tail -$3"
fi
case "$2" in
*\>*)
# Target string contains a > so we better
# not ignore it
*\>*)
# Target string contains a '>' so we better not ignore it
$theCmd $1 | $grep -s "$2" > $devnull 2>&1
return $?
stat="$?"
;;
*)
# Target string does not contain a '>'.
# NOTE: if $1 does not end with a new line, piping it to sed
# doesn't include the chars on the last line. Detect this
# case, and add a new line.
theFile="$1"
if [ `tail -1 "$theFile" | wc -l | sed -e 's@ @@g'` = 0 ] ; then
# The target file doesn't end with a new line so we have
# add one to a copy of the target file so the sed command
# below can filter that last line.
cp "$theFile" "$theFile.tmp"
theFile="$theFile.tmp"
echo >> "$theFile"
fi
# See bug 6220903. Sometimes the jdb prompt chars ('> ') can
# get interleaved in the target file which can keep us from
# matching the target string.
$theCmd "$theFile" | sed -e 's@> @@g' -e 's@>@@g' \
| $grep -s "$2" > $devnull 2>&1
stat=$?
if [ "$theFile" != "$1" ]; then
# remove the copy of the target file
rm -f "$theFile"
fi
unset theFile
esac
# Target string does not contain a >.
# Ignore > and '> ' in the file.
# NOTE: if $1 does not end with a new line, piping it to sed doesn't include the
# chars on the last line. Detect this case, and add a new line.
cp $1 $1.tmp
if [ `tail -1 $1.tmp | wc -l | sed -e 's@ @@g'` = 0 ] ; then
echo >> $1.tmp
fi
$theCmd $1.tmp | sed -e 's@> @@g' -e 's@>@@g' | $grep -s "$2" > $devnull 2>&1
stat=$?
rm -f $1.tmp
return $stat
}
@ -1037,6 +1064,11 @@ pass()
echo
echo "--Done: test passed"
exit 0
else
ls -l "$failFile" >&2
echo "<pass:_begin_failFile_contents>" >&2
cat "$failFile" >&2
echo "<pass:_end_failFile_contents>" >&2
fi
}

View File

@ -0,0 +1,50 @@
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code 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
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 6676075
* @summary RegistryContext (com.sun.jndi.url.rmi.rmiURLContext) coding problem
*/
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import com.sun.jndi.rmi.registry.*;
public class ContextWithNullProperties {
public static void main(String[] args) throws Exception {
// Create registry on port 1099 if one is not already running.
try {
LocateRegistry.createRegistry(1099);
} catch (RemoteException e) {
}
System.out.println("Connecting to the default Registry...");
// Connect to the default Registry.
// Pass null as the JNDI environment properties (see final argument)
RegistryContext ctx = new RegistryContext(null, -1, null);
}
}

View File

@ -24,17 +24,15 @@
/**
* @test
* @bug 6270015
* @run main/othervm Test1
* @summary Light weight HTTP server
*/
import com.sun.net.httpserver.*;
import java.util.*;
import java.util.concurrent.*;
import java.io.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;
/* basic http/s connectivity test

View File

@ -28,7 +28,6 @@
*/
import java.net.*;
import java.util.*;
import java.util.concurrent.*;
import java.io.*;
import com.sun.net.httpserver.*;
@ -52,22 +51,25 @@ public class Test11 {
public static void main (String[] args) throws Exception {
System.out.print ("Test 11: ");
HttpServer server = HttpServer.create (new InetSocketAddress(0), 0);
HttpContext ctx = server.createContext (
"/foo/bar/", new Handler ()
);
ExecutorService s = Executors.newCachedThreadPool();
server.setExecutor (s);
server.start ();
URL url = new URL ("http://localhost:" + server.getAddress().getPort()+
"/Foo/bar/test.html");
HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
int r = urlc.getResponseCode();
System.out.println ("OK");
s.shutdown();
server.stop(5);
if (r == 200) {
throw new RuntimeException ("wrong response received");
HttpServer server = HttpServer.create(new InetSocketAddress(0), 0);
ExecutorService s = Executors.newCachedThreadPool();
try {
HttpContext ctx = server.createContext (
"/foo/bar/", new Handler ()
);
s = Executors.newCachedThreadPool();
server.start ();
URL url = new URL ("http://localhost:" + server.getAddress().getPort()+
"/Foo/bar/test.html");
HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
int r = urlc.getResponseCode();
if (r == 200) {
throw new RuntimeException ("wrong response received");
}
System.out.println ("OK");
} finally {
s.shutdown();
server.stop(2);
}
}
}

View File

@ -24,17 +24,15 @@
/**
* @test
* @bug 6270015
* @run main/othervm Test12
* @summary Light weight HTTP server
*/
import com.sun.net.httpserver.*;
import java.util.*;
import java.util.concurrent.*;
import java.io.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;
/* basic http/s connectivity test

View File

@ -24,17 +24,16 @@
/**
* @test
* @bug 6270015
* @run main/othervm Test13
* @summary Light weight HTTP server
*/
import com.sun.net.httpserver.*;
import java.util.*;
import java.util.concurrent.*;
import java.io.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;
/* basic http/s connectivity test

View File

@ -24,17 +24,15 @@
/**
* @test
* @bug 6270015
* @run main/othervm Test6a
* @summary Light weight HTTP server
*/
import com.sun.net.httpserver.*;
import java.util.*;
import java.util.concurrent.*;
import java.io.*;
import java.net.*;
import java.security.*;
import javax.security.auth.callback.*;
import javax.net.ssl.*;
/**

View File

@ -24,18 +24,15 @@
/**
* @test
* @bug 6270015
* @run main/othervm Test7a
* @summary Light weight HTTP server
*/
import com.sun.net.httpserver.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.logging.*;
import java.io.*;
import java.net.*;
import java.security.*;
import javax.security.auth.callback.*;
import javax.net.ssl.*;
/**

View File

@ -24,18 +24,15 @@
/**
* @test
* @bug 6270015
* @run main/othervm Test8a
* @summary Light weight HTTP server
*/
import com.sun.net.httpserver.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.logging.*;
import java.io.*;
import java.net.*;
import java.security.*;
import javax.security.auth.callback.*;
import javax.net.ssl.*;
/**
@ -50,46 +47,50 @@ public class Test8a extends Test {
//h.setLevel (Level.INFO);
//log.addHandler (h);
//log.setLevel (Level.INFO);
Handler handler = new Handler();
InetSocketAddress addr = new InetSocketAddress (0);
HttpsServer server = HttpsServer.create (addr, 0);
HttpContext ctx = server.createContext ("/test", handler);
ExecutorService executor = Executors.newCachedThreadPool();
SSLContext ssl = new SimpleSSLContext(System.getProperty("test.src")).get();
server.setHttpsConfigurator(new HttpsConfigurator (ssl));
server.setExecutor (executor);
server.start ();
HttpsServer server = null;
ExecutorService executor = null;
try {
Handler handler = new Handler();
InetSocketAddress addr = new InetSocketAddress (0);
server = HttpsServer.create (addr, 0);
HttpContext ctx = server.createContext ("/test", handler);
executor = Executors.newCachedThreadPool();
SSLContext ssl = new SimpleSSLContext(System.getProperty("test.src")).get();
server.setHttpsConfigurator(new HttpsConfigurator (ssl));
server.setExecutor (executor);
server.start ();
URL url = new URL ("https://localhost:"+server.getAddress().getPort()+"/test/foo.html");
System.out.print ("Test8a: " );
HttpsURLConnection urlc = (HttpsURLConnection)url.openConnection ();
urlc.setDoOutput (true);
urlc.setRequestMethod ("POST");
urlc.setHostnameVerifier (new DummyVerifier());
urlc.setSSLSocketFactory (ssl.getSocketFactory());
OutputStream os = new BufferedOutputStream (urlc.getOutputStream(), 8000);
for (int i=0; i<SIZE; i++) {
os.write (i % 250);
}
os.close();
int resp = urlc.getResponseCode();
if (resp != 200) {
throw new RuntimeException ("test failed response code");
}
InputStream is = urlc.getInputStream ();
for (int i=0; i<SIZE; i++) {
int f = is.read();
if (f != (i % 250)) {
System.out.println ("Setting error(" +f +")("+i+")" );
error = true;
break;
URL url = new URL ("https://localhost:"+server.getAddress().getPort()+"/test/foo.html");
System.out.print ("Test8a: " );
HttpsURLConnection urlc = (HttpsURLConnection)url.openConnection ();
urlc.setDoOutput (true);
urlc.setRequestMethod ("POST");
urlc.setHostnameVerifier (new DummyVerifier());
urlc.setSSLSocketFactory (ssl.getSocketFactory());
OutputStream os = new BufferedOutputStream (urlc.getOutputStream(), 8000);
for (int i=0; i<SIZE; i++) {
os.write (i % 250);
}
os.close();
int resp = urlc.getResponseCode();
if (resp != 200) {
throw new RuntimeException ("test failed response code");
}
InputStream is = urlc.getInputStream ();
for (int i=0; i<SIZE; i++) {
int f = is.read();
if (f != (i % 250)) {
System.out.println ("Setting error(" +f +")("+i+")" );
error = true;
break;
}
}
is.close();
} finally {
delay();
if (server != null) server.stop(2);
if (executor != null) executor.shutdown();
}
is.close();
delay();
server.stop(2);
executor.shutdown();
if (error) {
throw new RuntimeException ("test failed error");
}

View File

@ -24,17 +24,15 @@
/**
* @test
* @bug 6270015
* @run main/othervm Test9
* @summary Light weight HTTP server
*/
import com.sun.net.httpserver.*;
import java.util.*;
import java.util.concurrent.*;
import java.io.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;
/* Same as Test1 but requests run in parallel.

View File

@ -24,17 +24,15 @@
/**
* @test
* @bug 6270015
* @run main/othervm Test9a
* @summary Light weight HTTP server
*/
import com.sun.net.httpserver.*;
import java.util.*;
import java.util.concurrent.*;
import java.io.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;
/* Same as Test1 but requests run in parallel.

View File

@ -24,6 +24,7 @@
/**
* @test
* @bug 6361557
* @run main/othervm B6361557
* @summary Lightweight HTTP server quickly runs out of file descriptors on Linux
*/
@ -35,12 +36,9 @@ import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.net.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;
/**
* The test simply opens 10,000 separate connections
* The test simply opens 1,000 separate connections
* and invokes one http request on each. The client does
* not close any sockets until after they are closed
* by the server. This verifies the basic ability
@ -49,6 +47,7 @@ import javax.net.ssl.*;
public class B6361557 {
public static boolean error = false;
static final int NUM = 1000;
static class Handler implements HttpHandler {
int invocation = 1;
@ -65,6 +64,9 @@ public class B6361557 {
}
}
final static String request = "GET /test/foo.html HTTP/1.1\r\nContent-length: 0\r\n\r\n";
final static ByteBuffer requestBuf = ByteBuffer.allocate(64).put(request.getBytes());
public static void main (String[] args) throws Exception {
Handler handler = new Handler();
InetSocketAddress addr = new InetSocketAddress (0);
@ -75,49 +77,72 @@ public class B6361557 {
server.setExecutor (executor);
server.start ();
final int NUM = 10000;
ByteBuffer buf = ByteBuffer.allocate (4096);
InetSocketAddress destaddr = new InetSocketAddress (
"127.0.0.1", server.getAddress().getPort()
);
System.out.println ("destaddr " + destaddr);
Selector selector = Selector.open ();
int i = 0;
int requests = 0;
int responses = 0;
while (true) {
i ++;
int selres = selector.select (1);
Set<SelectionKey> selkeys = selector.selectedKeys();
for (SelectionKey key : selkeys) {
if (key.isReadable()) {
SocketChannel chan = (SocketChannel)key.channel();
buf.clear();
ByteBuffer buf = (ByteBuffer)key.attachment();
try {
int x = chan.read (buf);
if (x == -1) {
int x = chan.read(buf);
if (x == -1 || responseComplete(buf)) {
key.attach(null);
chan.close();
responses++;
}
} catch (IOException e) {}
}
}
if (i< NUM) {
SocketChannel schan = SocketChannel.open (destaddr);
String cmd = "GET /test/foo.html HTTP/1.1\r\nContent-length: 0\r\n\r\n";
buf.rewind ();
buf.put (cmd.getBytes());
buf.flip();
if (requests < NUM) {
SocketChannel schan = SocketChannel.open(destaddr);
requestBuf.rewind();
int c = 0;
while (buf.remaining() > 0) {
c += schan.write (buf);
while (requestBuf.remaining() > 0) {
c += schan.write(requestBuf);
}
schan.configureBlocking (false);
schan.register (selector, SelectionKey.OP_READ, null);
} else {
schan.configureBlocking(false);
schan.register(selector, SelectionKey.OP_READ, ByteBuffer.allocate(100));
requests++;
}
if (responses == NUM) {
System.out.println ("Finished clients");
server.stop (1);
executor.shutdown ();
return;
break;
}
}
server.stop (1);
selector.close();
executor.shutdown ();
}
/* Look for CR LF CR LF */
static boolean responseComplete(ByteBuffer buf) {
int pos = buf.position();
buf.flip();
byte[] lookingFor = new byte[] {'\r', '\n', '\r', '\n' };
int lookingForCount = 0;
while (buf.hasRemaining()) {
byte b = buf.get();
if (b == lookingFor[lookingForCount]) {
lookingForCount++;
if (lookingForCount == 4) {
return true;
}
} else {
lookingForCount = 0;
}
}
buf.position(pos);
buf.limit(buf.capacity());
return false;
}
}

View File

@ -46,7 +46,7 @@ public class B6373555 {
private static Object lock;
static HttpServer httpServer;
static ExecutorService pool, execs;
static int NUM = 4000;
static int NUM = 1000;
public static void main(String[] args) throws Exception {
try {
@ -125,7 +125,7 @@ public class B6373555 {
}
}
catch(Exception e) {
//e.printStackTrace();
e.printStackTrace();
System.out.print (".");
error = true;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -23,7 +23,7 @@
/*
* @test
* @bug 4631471
* @bug 4631471 6972468
* @summary Tests DefaultTreeModel encoding
* @author Sergey Malenkov, Mark Davidson
*/
@ -37,6 +37,12 @@ import javax.swing.tree.TreeNode;
public abstract class Test4631471 extends AbstractTest {
public static void main(String[] args) throws Exception {
main();
System.setSecurityManager(new SecurityManager());
main();
}
private static void main() throws Exception {
// the DefaultMutableTreeNode will archive correctly
new Test4631471() {
protected Object getObject() {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -23,7 +23,7 @@
/*
* @test
* @bug 4903007
* @bug 4903007 6972468
* @summary Tests encoding of container with boxes and BoxLayout
* @author Sergey Malenkov, Mark Davidson
*/
@ -36,7 +36,7 @@ import javax.swing.JPanel;
public class Test4903007 extends AbstractTest<JPanel> {
public static void main(String[] args) throws Exception {
new Test4903007().test(false); // TODO: could not encode with security manager
new Test4903007().test(true);
}
protected JPanel getObject() {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -23,7 +23,7 @@
/*
* @test
* @bug 5023552
* @bug 5023552 6972468
* @summary Tests JLayeredPane encoding
* @author Sergey Malenkov
*/
@ -35,7 +35,7 @@ import javax.swing.JPanel;
public final class javax_swing_JLayeredPane extends AbstractTest<JLayeredPane> {
public static void main(String[] args) {
new javax_swing_JLayeredPane().test(false); // TODO: could not encode with security manager
new javax_swing_JLayeredPane().test(true);
}
private static void init(JLayeredPane pane, int layer, int x, int y, int w, int h, Color color) {

View File

@ -26,7 +26,7 @@ import java.util.*;
/*
* @test
* @bug 6911258 6962571
* @bug 6911258 6962571 6963622
* @summary Basic tests of suppressed exceptions
* @author Joseph D. Darcy
*/
@ -35,11 +35,22 @@ public class SuppressedExceptions {
private static String message = "Bad suppressed exception information";
public static void main(String... args) throws Exception {
noSelfSuppression();
basicSupressionTest();
serializationTest();
selfReference();
}
private static void noSelfSuppression() {
Throwable throwable = new Throwable();
try {
throwable.addSuppressedException(throwable);
throw new RuntimeException("IllegalArgumentException for self-suppresion not thrown.");
} catch (IllegalArgumentException iae) {
; // Expected
}
}
private static void basicSupressionTest() {
Throwable throwable = new Throwable();
RuntimeException suppressed = new RuntimeException("A suppressed exception.");
@ -156,9 +167,8 @@ public class SuppressedExceptions {
throwable1.printStackTrace();
throwable1.addSuppressedException(throwable1);
throwable1.addSuppressedException(throwable2);
throwable2.addSuppressedException(throwable1);
throwable1.printStackTrace();
}

View File

@ -27,25 +27,25 @@
* @summary test to see if timeout hangs
* @run main/timeout=15 DatagramTimeout
*/
import java.net.*;
import java.io.*;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketTimeoutException;
public class DatagramTimeout {
public static ServerSocket sock;
public static void main(String[] args) throws Exception {
boolean success = false;
DatagramSocket sock = new DatagramSocket();
try {
DatagramSocket sock;
DatagramPacket p;
byte[] buffer = new byte[50];
p = new DatagramPacket(buffer, buffer.length);
sock = new DatagramSocket(2333);
sock.setSoTimeout(2);
sock.receive(p);
} catch (SocketTimeoutException e) {
success = true;
} finally {
sock.close();
}
if (!success)
throw new RuntimeException("Socket timeout failure.");

View File

@ -32,35 +32,26 @@
* @author Benjamin Renaud
*/
import java.io.*;
import java.net.*;
import java.util.*;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class SendSize {
static final int clientPort = 8989;
static final int serverPort = 9999;
static final int bufferLength = 512;
static final int packetLength = 256;
public static void main(String[] args) throws Exception {
new ServerThread().start();
new ClientThread().start();
DatagramSocket serverSocket = new DatagramSocket();
new ServerThread(serverSocket).start();
new ClientThread(serverSocket.getLocalPort()).start();
}
static class ServerThread extends Thread {
int port;
DatagramSocket server;
ServerThread(int port) throws IOException {
this.port = port;
this.server = new DatagramSocket(port);
}
ServerThread() throws IOException {
this(SendSize.serverPort);
ServerThread(DatagramSocket server) {
this.server = server;
}
public void run() {
@ -85,33 +76,22 @@ public class SendSize {
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("caugth: " + e);
} finally {
if (server != null) { server.close(); }
}
}
}
static class ClientThread extends Thread {
int port;
int serverPort;
int bufferLength;
int packetLength;
DatagramSocket client;
InetAddress host;
ClientThread(int port, int serverPort,
int bufferLength, int packetLength) throws IOException {
this.port = port;
ClientThread(int serverPort)throws IOException {
this.serverPort = serverPort;
this.host = InetAddress.getLocalHost();
this.bufferLength = bufferLength;
this.packetLength = packetLength;
this.client = new DatagramSocket(port, host);
}
ClientThread() throws IOException {
this(SendSize.clientPort, SendSize.serverPort,
SendSize.bufferLength, SendSize.packetLength);
this.client = new DatagramSocket();
}
public void run() {
@ -129,6 +109,8 @@ public class SendSize {
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("caught: " + e);
} finally {
if (client != null) { client.close(); }
}
}
}

View File

@ -43,6 +43,9 @@ public class B6558853 implements Runnable {
InetAddress dest = null;
while (l.hasMoreElements() && dest == null) {
NetworkInterface nif = l.nextElement();
if (!nif.isUp())
continue;
for (InterfaceAddress a : nif.getInterfaceAddresses()) {
if (a.getAddress() instanceof Inet6Address) {
Inet6Address a6 = (Inet6Address) a.getAddress();
@ -53,6 +56,7 @@ public class B6558853 implements Runnable {
}
}
}
System.out.println("Using " + dest);
if (dest != null) {
B6558853 test = new B6558853(dest, port);
Thread thread = new Thread(test);

View File

@ -72,6 +72,7 @@ public class Serialize {
File file = new File (System.getProperty("test.src"), "serial1.4.2.ser");
ois = new ObjectInputStream(new FileInputStream(file));
nobj = (Inet6Address) ois.readObject();
ois.close();
if (!nobj.equals (InetAddress.getByName ("::1"))) {
throw new RuntimeException ("old ::1 not deserialized right");
}
@ -90,6 +91,8 @@ public class Serialize {
nobj = (Inet6Address) ois.readObject();
} catch (NullPointerException e) {
throw new RuntimeException("6656849 Not fixed: NullPointer when deserializing");
} finally {
ois.close();
}
System.out.println(nobj);
System.out.println("All tests passed");
@ -102,6 +105,7 @@ public class Serialize {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("i6a1.ser"));
Inet6Address nobj = (Inet6Address) ois.readObject();
ois.close();
if (nobj.equals(obj)) {
return true;

View File

@ -56,6 +56,8 @@ public class CheckJNI {
while (ifs.hasMoreElements()) {
NetworkInterface nif = (NetworkInterface)ifs.nextElement();
if (!nif.isUp())
continue;
Enumeration addrs = nif.getInetAddresses();
while (addrs.hasMoreElements()) {
InetAddress addr = (InetAddress) addrs.nextElement();

View File

@ -76,6 +76,10 @@ public class SetOutgoingIf {
// now determine what (if any) type of addresses are assigned to this interface
for (InetAddress addr : Collections.list(nic.getInetAddresses())) {
if (addr.isAnyLocalAddress())
continue;
System.out.println(" addr " + addr);
if (addr instanceof Inet4Address) {
netIf.ipv4Address(true);
} else if (addr instanceof Inet6Address) {

View File

@ -0,0 +1,51 @@
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code 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
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/* @test
* @bug 6964714
* @run main/othervm IPv4Only
* @summary Test the networkinterface listing with java.net.preferIPv4Stack=true.
*/
import java.net.*;
import java.util.*;
public class IPv4Only {
public static void main(String[] args) throws Exception {
System.setProperty("java.net.preferIPv4Stack","true");
Enumeration<NetworkInterface> nifs = NetworkInterface.getNetworkInterfaces();
while (nifs.hasMoreElements()) {
NetworkInterface nif = nifs.nextElement();
Enumeration<InetAddress> addrs = nif.getInetAddresses();
while (addrs.hasMoreElements()) {
InetAddress hostAddr = addrs.nextElement();
if ( hostAddr instanceof Inet6Address ){
throw new RuntimeException( "NetworkInterfaceV6List failed - found v6 address " + hostAddr.getHostAddress() );
}
}
}
}
}

View File

@ -67,9 +67,10 @@ public class B6181108 implements Runnable {
out.flush();
s.close();
ss.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try { ss.close(); } catch (IOException unused) {}
}
}
@ -100,6 +101,7 @@ public class B6181108 implements Runnable {
URLConnection urlc = url.openConnection();
int i = ((HttpURLConnection)(urlc)).getResponseCode();
System.out.println ("response code = " + i);
ResponseCache.setDefault(null);
}
public static void main(String args[]) throws Exception {

View File

@ -30,7 +30,6 @@
import java.net.*;
import java.util.*;
import java.io.*;
import java.nio.*;
import sun.net.www.ParseUtil;
import javax.net.ssl.*;
@ -43,11 +42,16 @@ public class ResponseCacheTest implements Runnable {
static URL url1;
static URL url2;
static String FNPrefix, OutFNPrefix;
static List<Closeable> streams = new ArrayList<>();
static List<File> files = new ArrayList<>();
/*
* Our "http" server to return a 404 */
public void run() {
Socket s = null;
FileInputStream fis = null;
try {
Socket s = ss.accept();
s = ss.accept();
InputStream is = s.getInputStream ();
BufferedReader r = new BufferedReader(new InputStreamReader(is));
@ -68,7 +72,7 @@ public class ResponseCacheTest implements Runnable {
out.print("Content-Length: "+file2.length()+"\r\n");
out.print("Connection: close\r\n");
out.print("\r\n");
FileInputStream fis = new FileInputStream(file2);
fis = new FileInputStream(file2);
byte[] buf = new byte[(int)file2.length()];
int len;
while ((len = fis.read(buf)) != -1) {
@ -81,6 +85,10 @@ public class ResponseCacheTest implements Runnable {
ss.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try { ss.close(); } catch (IOException unused) {}
try { s.close(); } catch (IOException unused) {}
try { fis.close(); } catch (IOException unused) {}
}
}
static class NameVerifier implements HostnameVerifier {
@ -144,11 +152,14 @@ static class NameVerifier implements HostnameVerifier {
// assert (headers1 == headers2 && file1 == file2.2)
File file1 = new File(OutFNPrefix+"file1");
File file2 = new File(OutFNPrefix+"file2.2");
files.add(file1);
files.add(file2);
System.out.println("headers1"+headers1+"\nheaders2="+headers2);
if (!headers1.equals(headers2) || file1.length() != file2.length()) {
throw new RuntimeException("test failed");
}
}
public static void main(String args[]) throws Exception {
try {
ResponseCache.setDefault(new MyResponseCache());
@ -157,6 +168,12 @@ static class NameVerifier implements HostnameVerifier {
new ResponseCacheTest();
} finally{
ResponseCache.setDefault(null);
for (Closeable c: streams) {
try { c.close(); } catch (IOException unused) {}
}
for (File f: files) {
f.delete();
}
}
}
@ -184,6 +201,7 @@ static class NameVerifier implements HostnameVerifier {
public MyCacheResponse(String filename) {
try {
fis = new FileInputStream(new File(filename));
streams.add(fis);
ObjectInputStream ois = new ObjectInputStream(fis);
headers = (Map<String,List<String>>)ois.readObject();
} catch (Exception ex) {
@ -206,6 +224,8 @@ static class NameVerifier implements HostnameVerifier {
try {
File file = new File(filename);
fos = new FileOutputStream(file);
streams.add(fos);
files.add(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(rspHeaders);
} catch (Exception ex) {

View File

@ -39,6 +39,7 @@ import java.io.*;
public class getResponseCode {
static URL url;
static String FNPrefix;
static List<Closeable> resources = new ArrayList<>();
getResponseCode() throws Exception {
url = new URL("http://localhost/file1.cache");
@ -57,6 +58,9 @@ public class getResponseCode {
new getResponseCode();
} finally{
ResponseCache.setDefault(null);
for (Closeable c : resources) {
try { c.close(); } catch (IOException unused) {}
}
}
}
@ -77,6 +81,7 @@ public class getResponseCode {
public MyResponse(String filename) {
try {
fis = new FileInputStream(new File(filename));
resources.add(fis);
headers = (Map<String,List<String>>)new ObjectInputStream(fis).readObject();
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage());

View File

@ -1,144 +0,0 @@
/*
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code 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
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/* @test
* @bug 4512028
* @summary Check the tolerance on read timeouts.
*/
import java.net.*;
import java.io.*;
public class AccurateTimeout {
static final int TOLERANCE = 100;
static boolean skipTest() {
String os = System.getProperty("os.name");
if (os.equals("Windows 95") ||
os.equals("Windows 98") ||
os.equals("Windows Me")) {
System.out.println("Due to an OS bug timeout tolerance cannot be tested on this OS");
return true;
}
return false;
}
public static void main(String args[]) throws Exception {
if (skipTest()) {
return;
}
int failures = 0;
int timeout;
System.out.println("");
System.out.println("Testing Socket.getInputStream().read() ...");
System.out.println("");
ServerSocket ss = new ServerSocket(0);
Socket s1 = new Socket(InetAddress.getLocalHost(), ss.getLocalPort());
Socket s2 = ss.accept();
InputStream in = s1.getInputStream();
timeout = 100;
while (timeout < 2500) {
s1.setSoTimeout(timeout);
long startTime = System.currentTimeMillis();
try {
in.read();
} catch (SocketTimeoutException e) {
}
long actual = System.currentTimeMillis() - startTime;
System.out.print("excepted: " + timeout + " actual: " + actual);
if (Math.abs(actual-timeout) > TOLERANCE) {
System.out.print(" *** FAIL: outside tolerance");
failures++;
} else {
System.out.print(" PASS.");
}
System.out.println("");
timeout += 200;
}
s1.close();
s2.close();
ss.close();
// ----------
System.out.println("");
System.out.println("Testing DatagramSocket.receive ...");
System.out.println("");
byte b[] = new byte[8];
DatagramPacket p = new DatagramPacket(b, b.length);
DatagramSocket ds = new DatagramSocket();
timeout = 100;
while (timeout < 2500) {
ds.setSoTimeout(timeout);
long startTime = System.currentTimeMillis();
try {
ds.receive(p);
} catch (SocketTimeoutException e) {
}
long actual = System.currentTimeMillis() - startTime;
System.out.print("excepted: " + timeout + " actual: " + actual);
if (Math.abs(actual-timeout) > TOLERANCE) {
System.out.print(" *** FAIL: outside tolerance");
failures++;
} else {
System.out.print(" PASS.");
}
System.out.println("");
timeout += 200;
}
ds.close();
System.out.println("");
// ---------
if (failures > 0) {
throw new Exception("Test failed: " + failures +
" test(s) outside tolerance");
}
}
}

View File

@ -47,6 +47,7 @@ public class CloseAvailable implements Runnable {
t.start();
Socket soc = ss.accept();
ss.close();
DataInputStream is = new DataInputStream(soc.getInputStream());
is.close();
@ -64,7 +65,7 @@ public class CloseAvailable implements Runnable {
public void run() {
try {
Socket s = new Socket(addr, port);
s.close();
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -33,29 +33,32 @@ import java.io.*;
public class DeadlockTest {
public static void main(String [] argv) throws Exception {
ServerSocket ss = new ServerSocket(0);
Socket clientSocket = new Socket();
// Start the server thread
Thread s1 = new Thread(new ServerThread());
s1.start();
try {
// Start the server thread
Thread s1 = new Thread(new ServerThread(ss));
s1.start();
// Sleep to make sure s1 has created a server socket
Thread.sleep(1000);
// Start the client thread
ClientThread ct = new ClientThread(clientSocket, ss.getLocalPort());
Thread c1 = new Thread(ct);
c1.start();
// Start the client thread
ClientThread ct = new ClientThread();
Thread c1 = new Thread(ct);
c1.start();
// Wait for the client thread to finish
c1.join(20000);
// Wait for the client thread to finish
c1.join(40000);
// If timeout, we assume there is a deadlock
if (c1.isAlive() == true) {
// Close the socket to force the server thread
// terminate too
s1.stop();
ct.getSock().close();
throw new Exception("Takes too long. Dead lock");
// If timeout, we assume there is a deadlock
if (c1.isAlive() == true) {
// Close the socket to force the server thread
// terminate too
s1.stop();
throw new Exception("Takes too long. Dead lock");
}
} finally {
ss.close();
clientSocket.close();
}
}
}
@ -71,8 +74,8 @@ class ServerThread implements Runnable {
Socket sock;
public ServerThread() throws Exception {
public ServerThread(ServerSocket serverSocket) throws Exception {
this.server = serverSocket;
}
public void ping(int cnt) {
@ -85,7 +88,6 @@ class ServerThread implements Runnable {
try {
if (Thread.currentThread().getName().startsWith("child") == false) {
server = new ServerSocket(4711);
sock = server.accept();
new Thread(this, "child").start();
@ -107,6 +109,7 @@ class ServerThread implements Runnable {
}
} catch (Throwable e) {
System.out.println(e);
// If anything goes wrong, just quit.
}
@ -141,10 +144,11 @@ class ClientThread implements Runnable {
Socket sock;
public ClientThread() throws Exception {
public ClientThread(Socket sock, int serverPort) throws Exception {
try {
System.out.println("About to create a socket");
sock = new Socket(InetAddress.getLocalHost().getHostName(), 4711);
System.out.println("About to connect the client socket");
this.sock = sock;
this.sock.connect(new InetSocketAddress("localhost", serverPort));
System.out.println("connected");
out = new ObjectOutputStream(sock.getOutputStream());
@ -156,10 +160,6 @@ class ClientThread implements Runnable {
}
}
public Socket getSock() {
return sock;
}
private int cnt = 1;
public void run() {
@ -213,6 +213,7 @@ class Message implements java.io.Serializable {
System.out.println("write message done " + cnt++);
} catch (IOException ioe) {
// Ignore the exception
System.out.println(ioe);
}
}
}

View File

@ -81,7 +81,7 @@ public class LingerTest {
public void run() {
System.out.println ("Another starts");
try {
Thread.currentThread().sleep(delay);
Thread.sleep(delay);
Socket s = new Socket("localhost", port);
synchronized (this) {
connected = true;
@ -105,7 +105,6 @@ public class LingerTest {
Socket s1 = new Socket("localhost", ss.getLocalPort());
Socket s2 = ss.accept();
// setup conditions for untransmitted data and lengthy
// linger interval
s1.setSendBufferSize(128*1024);
@ -122,14 +121,15 @@ public class LingerTest {
thr.start();
// give sender time to queue the data
Thread.currentThread().sleep(1000);
Thread.sleep(1000);
// close the socket asynchronously
(new Thread(new Closer(s1))).start();
// give another time to run
Thread.currentThread().sleep(10000);
Thread.sleep(10000);
ss.close();
// check that another is done
if (!another.connected()) {
throw new RuntimeException("Another thread is blocked");

View File

@ -58,11 +58,10 @@ public class LinkLocal {
} catch (SocketException e) {
failed++;
System.out.println("Test failed: " + e);
} finally {
s.close();
ss.close();
}
// clean up
s.close();
ss.close();
}
static void UdpTest(InetAddress ia, boolean connected) throws Exception {
@ -93,16 +92,16 @@ public class LinkLocal {
ds1.send(p);
System.out.println("Packet has been sent.");
ds2.setSoTimeout(1000);
ds2.setSoTimeout(5000);
ds2.receive(p);
System.out.println("Test passed - packet received.");
} catch (SocketException e) {
failed++;
System.out.println("Test failed: " + e);
} finally {
ds1.close();
ds2.close();
}
ds1.close();
ds2.close();
}
static void TestAddress(InetAddress ia) throws Exception {
@ -138,6 +137,9 @@ public class LinkLocal {
Enumeration nifs = NetworkInterface.getNetworkInterfaces();
while (nifs.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface)nifs.nextElement();
if (!ni.isUp())
continue;
Enumeration addrs = ni.getInetAddresses();
while (addrs.hasMoreElements()) {
InetAddress addr = (InetAddress)addrs.nextElement();

View File

@ -39,6 +39,7 @@ public class ProxyCons {
public void run () {
try {
Socket s = server.accept ();
s.close();
while (!finished ()) {
Thread.sleep (500);
}
@ -58,10 +59,9 @@ public class ProxyCons {
public ProxyCons() {
}
void test() {
void test() throws Exception {
ServerSocket ss = new ServerSocket(0);
try {
ServerSocket ss = new ServerSocket();
ss.bind(new InetSocketAddress(0));
Server s = new Server(ss);
s.start();
Socket sock = new Socket(Proxy.NO_PROXY);
@ -70,10 +70,12 @@ public class ProxyCons {
sock.close();
} catch (java.io.IOException e) {
throw new RuntimeException(e);
} finally {
ss.close();
}
}
public static void main(String[] args) {
public static void main(String[] args) throws Exception {
ProxyCons c = new ProxyCons();
c.test();
}

View File

@ -44,7 +44,7 @@ public class ReadTimeout {
sin = InetAddress.getLocalHost();
srv = new ServerSocket(port);
port = srv.getLocalPort();
soc = new Socket(sin, port, true);
soc = new Socket(sin, port);
soc1 = srv.accept();
soc.setSoTimeout(tout);
@ -53,10 +53,10 @@ public class ReadTimeout {
os = soc1.getOutputStream();
is.read();
} catch(InterruptedIOException e) {
} finally {
soc.close();
soc1.close();
srv.close();
}
soc.close();
soc1.close();
srv.close();
}
}

View File

@ -32,29 +32,14 @@ import java.net.Socket;
import java.net.ServerSocket;
public class SetReceiveBufferSize {
class Server extends Thread {
private ServerSocket ss;
public Server(ServerSocket ss) {
this.ss = ss;
}
public void run() {
try {
ss.accept();
} catch (Exception e) {
}
}
}
public static void main(String[] args) throws Exception {
SetReceiveBufferSize s = new SetReceiveBufferSize();
}
public SetReceiveBufferSize() throws Exception {
ServerSocket ss = new ServerSocket(0);
Server serv = new Server(ss);
serv.start();
Socket s = new Socket("localhost", ss.getLocalPort());
Socket accepted = ss.accept();
try {
s.setReceiveBufferSize(0);
} catch (IllegalArgumentException e) {
@ -62,6 +47,8 @@ public class SetReceiveBufferSize {
} catch (Exception ex) {
} finally {
ss.close();
s.close();
accepted.close();
}
throw new RuntimeException("IllegalArgumentException not thrown!");
}

View File

@ -30,36 +30,24 @@
import java.net.*;
public class SetSoLinger implements Runnable {
static ServerSocket ss;
static InetAddress addr;
static int port;
public class SetSoLinger {
static final int LINGER = 65546;
public static void main(String args[]) throws Exception {
boolean error = true;
int linger = 65546;
int value = 0;
addr = InetAddress.getLocalHost();
ss = new ServerSocket(0);
port = ss.getLocalPort();
int value;
InetAddress addr = InetAddress.getLocalHost();
ServerSocket ss = new ServerSocket(0);
int port = ss.getLocalPort();
Thread t = new Thread(new SetSoLinger());
t.start();
Socket s = new Socket(addr, port);
Socket soc = ss.accept();
soc.setSoLinger(true, linger);
soc.setSoLinger(true, LINGER);
value = soc.getSoLinger();
soc.close();
s.close();
ss.close();
if(value != 65535)
throw new RuntimeException("Failed. Value not properly reduced.");
}
public void run() {
try {
Socket s = new Socket(addr, port);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -36,12 +36,14 @@ public class ShutdownBoth {
Socket s1 = new Socket(ss.getInetAddress(), ss.getLocalPort());
Socket s2 = ss.accept();
s1.shutdownInput();
s1.shutdownOutput(); // failed b55
s1.close();
s2.close();
ss.close();
try {
s1.shutdownInput();
s1.shutdownOutput(); // failed b55
} finally {
s1.close();
s2.close();
ss.close();
}
}
}

View File

@ -52,9 +52,10 @@ public class SoTimeout implements Runnable {
t.start();
Socket s = serverSocket.accept();
serverSocket.close();
// set a 1 second timeout on the socket
s.setSoTimeout(1000);
// set a 5 second timeout on the socket
s.setSoTimeout(5000);
s.getInputStream().read(b, 0, b.length);
s.close();
@ -64,7 +65,7 @@ public class SoTimeout implements Runnable {
// this sequence should complete fairly quickly and if it
// takes something resembling the the SoTimeout value then
// we are probably incorrectly blocking and not waking up
if (waited > 500) {
if (waited > 2000) {
throw new Exception("shouldn't take " + waited + " to complete");
}
}

View File

@ -31,18 +31,16 @@ import java.net.*;
import java.io.*;
public class Timeout {
public static ServerSocket sock;
public static void main(String[] args) throws Exception {
boolean success = false;
ServerSocket sock = new ServerSocket(0);
try {
ServerSocket sock;
sock = new ServerSocket(2333);
sock.setSoTimeout(2);
sock.accept();
} catch (InterruptedIOException e) {
success = true;
} finally {
sock.close();
}
if (!success)
throw new RuntimeException("Socket timeout failure.");

View File

@ -90,63 +90,64 @@ public class UrgentDataTest {
}
public void run () throws Exception {
if (isClient) {
client = new Socket (clHost, clPort);
clis = client.getInputStream();
clos = client.getOutputStream();
client.setOOBInline (true);
if (client.getOOBInline() != true) {
throw new RuntimeException ("Setting OOBINLINE failed");
}
}
if (isServer) {
server = listener.accept ();
sis = server.getInputStream();
sos = server.getOutputStream();
}
if (isClient) {
clos.write ("Hello".getBytes ());
client.sendUrgentData (100);
clos.write ("world".getBytes ());
}
// read Hello world from server (during which oob byte must have been dropped)
String s = "Helloworld";
if (isServer) {
for (int y=0; y<s.length(); y++) {
int c = sis.read ();
if (c != (int)s.charAt (y)) {
throw new RuntimeException ("Unexpected character read");
try {
if (isClient) {
client = new Socket (clHost, clPort);
clis = client.getInputStream();
clos = client.getOutputStream();
client.setOOBInline (true);
if (client.getOOBInline() != true) {
throw new RuntimeException ("Setting OOBINLINE failed");
}
}
// Do the same from server to client
sos.write ("Hello".getBytes ());
server.sendUrgentData (101);
sos.write ("World".getBytes ());
}
if (isClient) {
// read Hello world from client (during which oob byte must have been read)
s="Hello";
for (int y=0; y<s.length(); y++) {
int c = clis.read ();
if (c != (int)s.charAt (y)) {
throw new RuntimeException ("Unexpected character read");
}
}
if (clis.read() != 101) {
throw new RuntimeException ("OOB byte not received");
}
s="World";
for (int y=0; y<s.length(); y++) {
int c = clis.read ();
if (c != (int)s.charAt (y)) {
throw new RuntimeException ("Unexpected character read");
if (isServer) {
server = listener.accept ();
sis = server.getInputStream();
sos = server.getOutputStream();
}
if (isClient) {
clos.write ("Hello".getBytes ());
client.sendUrgentData (100);
clos.write ("world".getBytes ());
}
// read Hello world from server (during which oob byte must have been dropped)
String s = "Helloworld";
if (isServer) {
for (int y=0; y<s.length(); y++) {
int c = sis.read ();
if (c != (int)s.charAt (y)) {
throw new RuntimeException ("Unexpected character read");
}
}
// Do the same from server to client
sos.write ("Hello".getBytes ());
server.sendUrgentData (101);
sos.write ("World".getBytes ());
}
if (isClient) {
// read Hello world from client (during which oob byte must have been read)
s="Hello";
for (int y=0; y<s.length(); y++) {
int c = clis.read ();
if (c != (int)s.charAt (y)) {
throw new RuntimeException ("Unexpected character read");
}
}
if (clis.read() != 101) {
throw new RuntimeException ("OOB byte not received");
}
s="World";
for (int y=0; y<s.length(); y++) {
int c = clis.read ();
if (c != (int)s.charAt (y)) {
throw new RuntimeException ("Unexpected character read");
}
}
}
} finally {
if (listener != null) listener.close();
if (client != null) client.close ();
if (server != null) server.close ();
}
if (isClient)
client.close ();
if (isServer)
server.close ();
}
}

View File

@ -61,7 +61,6 @@ public class BrokenPipe {
try {
client.getOutputStream().write(new byte[1000000]);
} catch (IOException ioe) {
/*
* Check that the exception text doesn't indicate the
* socket is closed. In tiger we should be able to
@ -71,8 +70,9 @@ public class BrokenPipe {
if (text.toLowerCase().indexOf("closed") >= 0) {
throw ioe;
}
} finally {
server.close();
}
server.close();
}
}

View File

@ -39,27 +39,28 @@ public class Restart {
*/
public static void main(String args[]) throws Exception {
ServerSocket ss = new ServerSocket(0);
Socket s1 = null, s2 = null;
try {
int port = ss.getLocalPort();
InetSocketAddress isa = new InetSocketAddress(0);
ServerSocket ss = new ServerSocket();
ss.bind(isa);
s1 = new Socket(InetAddress.getLocalHost(), port);
s2 = ss.accept();
int port = ss.getLocalPort();
// close server socket and the accepted connection
ss.close();
s2.close();
Socket s1 = new Socket(InetAddress.getLocalHost(), port);
Socket s2 = ss.accept();
ss = new ServerSocket();
ss.bind( new InetSocketAddress(port) );
ss.close();
// close server socket and the accepted connection
ss.close();
s2.close();
boolean failed = false;
ss = new ServerSocket();
ss.bind( new InetSocketAddress(port) );
ss.close();
// close the client socket
s1.close();
// close the client socket
s1.close();
} finally {
if (ss != null) ss.close();
if (s1 != null) s1.close();
if (s2 != null) s2.close();
}
}
}

View File

@ -32,68 +32,37 @@ import java.io.*;
import java.net.*;
public class SocketClosedException {
/*
* Is the server ready to serve?
*/
volatile static boolean serverReady = false;
/*
* Define the server side of the test.
*
* If the server prematurely exits, serverReady will be set to true
* to avoid infinite hangs.
*/
static void doServerSide() throws Exception {
ServerSocket serverSocket = new ServerSocket(serverPort);
serverPort = serverSocket.getLocalPort();
try {
Socket socket = serverSocket.accept();
/*
* Signal Client, we're ready for a connect.
*/
serverReady = true;
OutputStream os = socket.getOutputStream();
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
os.write(85);
os.flush();
socket.close();
}
/*
* Define the client side of the test.
*
* If the server prematurely exits, serverReady will be set to true
* to avoid infinite hangs.
*/
static void doClientSide() throws Exception {
/*
* Wait for server to get started.
*/
while (!serverReady) {
Thread.sleep(5000);
os.write(85);
os.flush();
socket.close();
} finally {
serverSocket.close();
}
Socket socket = new Socket("localhost", serverPort);
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
int read = is.read();
socket.close();
read = is.read();
}
static int serverPort = 0;
static void doClientSide(int port) throws Exception {
Socket socket = new Socket("localhost", port);
InputStream is = socket.getInputStream();
is.read();
socket.close();
is.read();
}
static ServerSocket serverSocket;
static Exception serverException = null;
public static void main(String[] args) throws Exception {
serverSocket = new ServerSocket(0);
startServer();
try {
doClientSide();
doClientSide(serverSocket.getLocalPort());
} catch (SocketException e) {
if (!e.getMessage().equalsIgnoreCase("Socket closed")) {
throw new Exception("Received a wrong exception message: " +
@ -108,21 +77,14 @@ public class SocketClosedException {
}
static void startServer() {
Thread serverThread = new Thread() {
(new Thread() {
public void run() {
try {
doServerSide();
} catch (Exception e) {
/*
* server thread just died.
* Release the client, if not active already...
*/
System.err.println("Server died...");
serverReady = true;
serverException = e;
e.printStackTrace();
}
}
};
serverThread.start();
}).start();
}
}

View File

@ -31,26 +31,24 @@ import java.net.*;
import java.io.*;
public class SocketTimeout {
static final int TIMEOUT = 1000;
public static void main(String args[]) throws Exception {
InetAddress sin = null;
InetAddress sin = InetAddress.getLocalHost();
Socket soc = null,soc1 = null;
InputStream is = null;
OutputStream os = null;
ServerSocket srv = null;
int port = 0;
int tout = 1000;
sin = InetAddress.getLocalHost();
srv = new ServerSocket(port);
srv = new ServerSocket(0);
port = srv.getLocalPort();
soc = new Socket(sin, port);
soc1 = srv.accept();
soc.setSoTimeout(tout);
srv.setSoTimeout(tout);
soc.setSoTimeout(TIMEOUT);
srv.setSoTimeout(TIMEOUT);
try {
is = soc.getInputStream();
os = soc1.getOutputStream();
is.read();
} catch(InterruptedIOException e) {
try {
@ -59,6 +57,9 @@ public class SocketTimeout {
} catch(NoClassDefFoundError e1) {
throw new Exception ("SocketTimeoutException: not found");
}
} finally {
soc.close();
soc1.close();
}
// now check accept
@ -72,12 +73,14 @@ public class SocketTimeout {
} catch(NoClassDefFoundError e1) {
throw new Exception ("SocketTimeoutException: not found");
}
} finally {
srv.close();
}
// Now check DatagramSocket.receive()
DatagramSocket dg = new DatagramSocket ();
dg.setSoTimeout (tout);
dg.setSoTimeout (TIMEOUT);
try {
dg.receive (new DatagramPacket (new byte [64], 64));
@ -88,11 +91,8 @@ public class SocketTimeout {
} catch(NoClassDefFoundError e1) {
throw new Exception ("SocketTimeoutException: not found");
}
} finally {
dg.close();
}
soc.close();
soc1.close();
srv.close();
dg.close();
}
}

View File

@ -53,11 +53,13 @@ public class GetContent implements Runnable {
// wait for client to read response - otherwise http
// client get error and re-establish connection
Thread.currentThread().sleep(2000);
Thread.sleep(2000);
s.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try { ss.close(); } catch (IOException unused) {}
}
}
@ -81,8 +83,6 @@ public class GetContent implements Runnable {
error = false;
}
ss.close();
if (error)
throw new RuntimeException("No IOException generated.");
}

View File

@ -27,20 +27,45 @@
* @summary Test for FileNotFoundException when loading bogus class
*/
import java.net.*;
import java.io.*;
import java.io.InputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.URL;
import java.net.URLClassLoader;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class ClassLoad {
public static void main(String[] args) throws Exception {
boolean error = true;
// Start a dummy server to return 404
HttpServer server = HttpServer.create(new InetSocketAddress(0), 0);
HttpHandler handler = new HttpHandler() {
public void handle(HttpExchange t) throws IOException {
InputStream is = t.getRequestBody();
while (is.read() != -1);
t.sendResponseHeaders (404, -1);
t.close();
}
};
server.createContext("/", handler);
server.start();
// Client request
try {
URL url = new URL(args.length >= 1 ? args[0] : "http://jini.east/");
URL url = new URL("http://localhost:" + server.getAddress().getPort());
String name = args.length >= 2 ? args[1] : "foo.bar.Baz";
ClassLoader loader = new URLClassLoader(new URL[] { url });
System.out.println(url);
Class c = loader.loadClass(name);
System.out.println("Loaded class \"" + c.getName() + "\".");
} catch (ClassNotFoundException ex) {
System.out.println(ex);
error = false;
} finally {
server.stop(0);
}
if (error)
throw new RuntimeException("No ClassNotFoundException generated");

View File

@ -56,7 +56,6 @@ public class DisconnectAfterEOF {
int cl = -1;
int remaining = -1;
StringBuffer sb = new StringBuffer();
Random r = new Random();
boolean close = false;
boolean inBody = false;
@ -239,8 +238,6 @@ public class DisconnectAfterEOF {
}
public static void main(String args[]) throws Exception {
Random r = new Random();
// start server
ServerSocket ss = new ServerSocket(0);
Server svr = new Server(ss);
@ -273,7 +270,7 @@ public class DisconnectAfterEOF {
URLConnection uc1 = doRequest(uri);
doResponse(uc1);
Thread.currentThread().sleep(2000);
Thread.sleep(2000);
URLConnection uc2 = doRequest(uri);

View File

@ -111,9 +111,8 @@ class myHttpServer implements Runnable, Cloneable {
} catch(Exception e) {
System.out.print("Server failure\n");
e.printStackTrace();
try {
serverSocket.close();
} catch(IOException e2) {}
} finally {
try { serverSocket.close(); } catch(IOException unused) {}
}
} else {
try {
@ -127,10 +126,9 @@ class myHttpServer implements Runnable, Cloneable {
} catch(Exception e) {
// System.out.print("Service handler failure\n");
// e.printStackTrace();
} finally {
try { close(); } catch(IOException unused) {}
}
try {
close();
} catch(IOException e2) {}
}
}

View File

@ -30,7 +30,7 @@
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
@ -41,61 +41,56 @@ public class HttpContinueStackOverflow {
static class Server implements Runnable {
int port;
ServerSocket serverSock ;
Server(int port) {
this.port = port;
Server() throws IOException {
serverSock = new ServerSocket(0);
}
int getLocalPort() {
return serverSock.getLocalPort();
}
public void run() {
Socket sock = null;
try {
/* bind to port and wait for connection */
ServerSocket serverSock = new ServerSocket( port );
serverSock.setSoTimeout(10000);
Socket sock = serverSock.accept();
sock = serverSock.accept();
/* setup streams and read http request */
BufferedReader in = new BufferedReader(
new InputStreamReader(sock.getInputStream()));
PrintStream out = new PrintStream( sock.getOutputStream() );
String request = in.readLine();
in.readLine();
/* send continue followed by invalid response */
out.println("HTTP/1.1 100 Continue\r");
out.println("\r");
out.println("junk junk junk");
out.flush();
sock.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try { serverSock.close(); } catch (IOException unused) {}
try { sock.close(); } catch (IOException unused) {}
}
}
}
HttpContinueStackOverflow(int port) throws Exception {
HttpContinueStackOverflow() throws Exception {
/* create the server */
Server s = new Server(port);
Thread thr = new Thread(s);
thr.start();
/* wait for server to bind to port */
try {
Thread.currentThread().sleep(2000);
} catch (Exception e) { }
Server s = new Server();
(new Thread(s)).start();
/* connect to server, connect to server and get response code */
URL url = new URL("http", "localhost", port, "anything.html");
URL url = new URL("http", "localhost", s.getLocalPort(), "anything.html");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
int respCode = conn.getResponseCode();
conn.getResponseCode();
System.out.println("TEST PASSED");
}
public static void main(String args[]) throws Exception {
int port = 4090;
if (args.length > 0) {
port = Integer.parseInt(args[0]);
}
System.out.println("Testing 100-Continue");
new HttpContinueStackOverflow(port);
new HttpContinueStackOverflow();
}
}

View File

@ -37,11 +37,11 @@ class RedirServer extends Thread {
OutputStream os;
int port;
String reply1 = "HTTP/1.1 307 Temporary Redirect\r\n" +
String reply1Part1 = "HTTP/1.1 307 Temporary Redirect\r\n" +
"Date: Mon, 15 Jan 2001 12:18:21 GMT\r\n" +
"Server: Apache/1.3.14 (Unix)\r\n" +
"Location: http://localhost:";
String reply2 = "/redirected.html\r\n" +
String reply1Part2 = "/redirected.html\r\n" +
"Connection: close\r\n" +
"Content-Type: text/html; charset=iso-8859-1\r\n\r\n" +
"<html>Hello</html>";
@ -49,9 +49,10 @@ class RedirServer extends Thread {
RedirServer (ServerSocket y) {
s = y;
port = s.getLocalPort();
System.out.println("Server created listening on " + port);
}
String reply3 = "HTTP/1.1 200 Ok\r\n" +
String reply2 = "HTTP/1.1 200 Ok\r\n" +
"Date: Mon, 15 Jan 2001 12:18:21 GMT\r\n" +
"Server: Apache/1.3.14 (Unix)\r\n" +
"Connection: close\r\n" +
@ -64,16 +65,24 @@ class RedirServer extends Thread {
is = s1.getInputStream ();
os = s1.getOutputStream ();
is.read ();
String reply = reply1 + port + reply2;
String reply = reply1Part1 + port + reply1Part2;
os.write (reply.getBytes());
os.close();
/* wait for redirected connection */
s.setSoTimeout (5000);
s1 = s.accept ();
is = s1.getInputStream ();
os = s1.getOutputStream ();
os.write (reply3.getBytes());
is.read();
os.write (reply2.getBytes());
os.close();
}
catch (Exception e) {
/* Just need thread to terminate */
System.out.println("Server: caught " + e);
e.printStackTrace();
} finally {
try { s.close(); } catch (IOException unused) {}
}
}
};
@ -84,10 +93,7 @@ public class Redirect307Test {
public static final int DELAY = 10;
public static void main(String[] args) throws Exception {
int nLoops = 1;
int nSize = 10;
int port, n =0;
byte b[] = new byte[nSize];
int port;
RedirServer server;
ServerSocket sock;
@ -119,7 +125,8 @@ public class Redirect307Test {
}
}
catch(IOException e) {
throw new RuntimeException ("Exception caught");
e.printStackTrace();
throw new RuntimeException ("Exception caught + " + e);
}
}
}

View File

@ -76,15 +76,19 @@ class RedirLimitServer extends Thread {
is.read ();
String reply = reply1 + port + "/redirect" + i + reply2;
os.write (reply.getBytes());
os.close();
}
s1 = s.accept ();
is = s1.getInputStream ();
os = s1.getOutputStream ();
is.read ();
os.write (reply3.getBytes());
os.close();
}
catch (Exception e) {
/* Just need thread to terminate */
} finally {
try { s.close(); } catch (IOException unused) {}
}
}
};

View File

@ -109,8 +109,11 @@ public class ResendPostBody {
while (!finished()) {
Thread.sleep (1000);
}
out.close();
} catch (Exception e) {
System.err.println ("Server Exception: " + e);
} finally {
try { server.close(); } catch (IOException unused) {}
}
}
}
@ -134,7 +137,7 @@ public class ResendPostBody {
public void execute () throws Exception {
byte b[] = "X=ABCDEFGHZZZ".getBytes();
byte b[] = "X=ABCDEFGHZZZ".getBytes();
ss = new ServerSocket (0);
server = new Server (ss);
@ -163,8 +166,9 @@ public class ResendPostBody {
/* Read the response */
int resp = conURL.getResponseCode ();
server.setFinished (true);
if (resp != 200)
throw new RuntimeException ("Response code was not 200: " + resp);
server.setFinished (true);
}
}

View File

@ -23,7 +23,7 @@
/* @test
* @bug 4397096
* @run main SetIfModifiedSince
* @run main/othervm SetIfModifiedSince
* @summary setIfModifiedSince() of HttpURLConnection sets invalid date of default locale
*/

Some files were not shown because too many files have changed in this diff Show More