--- a/jdk/src/share/classes/java/lang/Enum.java Thu Feb 05 09:24:45 2009 -0800
+++ b/jdk/src/share/classes/java/lang/Enum.java Thu Feb 05 09:28:04 2009 -0800
@@ -34,11 +34,13 @@
/**
* This is the common base class of all Java language enumeration types.
*
- * More information about enums, including implicit methods synthesised
- * by the compiler, can be found in <i>The Java™ Language
- * Specification, Third Edition</i>, <a
+ * More information about enums, including descriptions of the
+ * implicitly declared methods synthesized by the compiler, can be
+ * found in <i>The Java™ Language Specification, Third
+ * Edition</i>, <a
* href="http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9">§8.9</a>.
*
+ * @param <E> The enum type subclass
* @author Josh Bloch
* @author Neal Gafter
* @see Class#getEnumConstants()
@@ -197,6 +199,15 @@
* to declare an enum constant in this type. (Extraneous whitespace
* characters are not permitted.)
*
+ * <p>Note that for a particular enum type {@code T}, the
+ * implicitly declared {@code public static T valueOf(String)}
+ * method on that enum may be used instead of this method to map
+ * from a name to the corresponding enum constant. All the
+ * constants of an enum type can be obtained by calling the
+ * implicit {@code public static T[] values()} method of that
+ * type.
+ *
+ * @param <T> The enum type whose constant is to be returned
* @param enumType the {@code Class} object of the enum type from which
* to return a constant
* @param name the name of the constant to return
--- a/jdk/src/share/classes/java/net/CookieManager.java Thu Feb 05 09:24:45 2009 -0800
+++ b/jdk/src/share/classes/java/net/CookieManager.java Thu Feb 05 09:28:04 2009 -0800
@@ -107,8 +107,9 @@
* </ul>
* </blockquote>
*
- * <p>The implementation conforms to RFC 2965, section 3.3.
+ * <p>The implementation conforms to <a href="http://www.ietf.org/rfc/rfc2965.txt">RFC 2965</a>, section 3.3.
*
+ * @see CookiePolicy
* @author Edward Wang
* @since 1.6
*/
--- a/jdk/src/share/classes/java/net/HttpCookie.java Thu Feb 05 09:24:45 2009 -0800
+++ b/jdk/src/share/classes/java/net/HttpCookie.java Thu Feb 05 09:28:04 2009 -0800
@@ -33,6 +33,7 @@
import java.util.Date;
import java.lang.NullPointerException; // for javadoc
+import java.util.Locale;
/**
* An HttpCookie object represents an http cookie, which carries state
@@ -1096,7 +1097,7 @@
static {
cDateFormats = new SimpleDateFormat[COOKIE_DATE_FORMATS.length];
for (int i = 0; i < COOKIE_DATE_FORMATS.length; i++) {
- cDateFormats[i] = new SimpleDateFormat(COOKIE_DATE_FORMATS[i]);
+ cDateFormats[i] = new SimpleDateFormat(COOKIE_DATE_FORMATS[i], Locale.US);
cDateFormats[i].setTimeZone(TimeZone.getTimeZone("GMT"));
}
}
--- a/jdk/src/share/classes/sun/security/krb5/Config.java Thu Feb 05 09:24:45 2009 -0800
+++ b/jdk/src/share/classes/sun/security/krb5/Config.java Thu Feb 05 09:28:04 2009 -0800
@@ -39,7 +39,6 @@
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Enumeration;
-import java.util.List;
import java.util.StringTokenizer;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -156,11 +155,7 @@
configFile = loadConfigFile();
stanzaTable = parseStanzaTable(configFile);
} catch (IOException ioe) {
- KrbException ke = new KrbException("Could not load " +
- "configuration file " +
- ioe.getMessage());
- ke.initCause(ioe);
- throw(ke);
+ // No krb5.conf, no problem. We'll use DNS etc.
}
}
}
@@ -1057,7 +1052,12 @@
public boolean useDNS(String name) {
String value = getDefault(name, "libdefaults");
if (value == null) {
- return getDefaultBooleanValue("dns_fallback", "libdefaults");
+ value = getDefault("dns_fallback", "libdefaults");
+ if ("false".equalsIgnoreCase(value)) {
+ return false;
+ } else {
+ return true;
+ }
} else {
return value.equalsIgnoreCase("true");
}
@@ -1079,12 +1079,39 @@
/**
* Gets default realm.
+ * @throws KrbException where no realm can be located
+ * @return the default realm, always non null
*/
public String getDefaultRealm() throws KrbException {
+ Exception cause = null;
String realm = getDefault("default_realm", "libdefaults");
if ((realm == null) && useDNS_Realm()) {
// use DNS to locate Kerberos realm
- realm = getRealmFromDNS();
+ try {
+ realm = getRealmFromDNS();
+ } catch (KrbException ke) {
+ cause = ke;
+ }
+ }
+ if (realm == null) {
+ realm = java.security.AccessController.doPrivileged(
+ new java.security.PrivilegedAction<String>() {
+ @Override
+ public String run() {
+ String osname = System.getProperty("os.name");
+ if (osname.startsWith("Windows")) {
+ return System.getenv("USERDNSDOMAIN");
+ }
+ return null;
+ }
+ });
+ }
+ if (realm == null) {
+ KrbException ke = new KrbException("Cannot locate default realm");
+ if (cause != null) {
+ ke.initCause(cause);
+ }
+ throw ke;
}
return realm;
}
@@ -1092,17 +1119,48 @@
/**
* Returns a list of KDC's with each KDC separated by a space
*
- * @param realm the realm for which the master KDC is desired
- * @return the list of KDCs
+ * @param realm the realm for which the KDC list is desired
+ * @throws KrbException if there's no way to find KDC for the realm
+ * @return the list of KDCs separated by a space, always non null
*/
public String getKDCList(String realm) throws KrbException {
if (realm == null) {
realm = getDefaultRealm();
}
+ Exception cause = null;
String kdcs = getDefault("kdc", realm);
if ((kdcs == null) && useDNS_KDC()) {
// use DNS to locate KDC
- kdcs = getKDCFromDNS(realm);
+ try {
+ kdcs = getKDCFromDNS(realm);
+ } catch (KrbException ke) {
+ cause = ke;
+ }
+ }
+ if (kdcs == null) {
+ kdcs = java.security.AccessController.doPrivileged(
+ new java.security.PrivilegedAction<String>() {
+ @Override
+ public String run() {
+ String osname = System.getProperty("os.name");
+ if (osname.startsWith("Windows")) {
+ String logonServer = System.getenv("LOGONSERVER");
+ if (logonServer != null
+ && logonServer.startsWith("\\\\")) {
+ logonServer = logonServer.substring(2);
+ }
+ return logonServer;
+ }
+ return null;
+ }
+ });
+ }
+ if (kdcs == null) {
+ KrbException ke = new KrbException("Cannot locate KDC");
+ if (cause != null) {
+ ke.initCause(cause);
+ }
+ throw ke;
}
return kdcs;
}
@@ -1117,7 +1175,7 @@
String realm = null;
String hostName = null;
try {
- hostName = InetAddress.getLocalHost().getHostName();
+ hostName = InetAddress.getLocalHost().getCanonicalHostName();
} catch (UnknownHostException e) {
KrbException ke = new KrbException(Krb5.KRB_ERR_GENERIC,
"Unable to locate Kerberos realm: " + e.getMessage());
--- a/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java Thu Feb 05 09:24:45 2009 -0800
+++ b/jdk/src/share/classes/sun/security/krb5/KrbServiceLocator.java Thu Feb 05 09:28:04 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2006-2009 Sun Microsystems, Inc. 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
@@ -133,7 +133,7 @@
*/
static String[] getKerberosService(String realmName, String protocol) {
- String dnsUrl = "dns:///_kerberos." + protocol + realmName;
+ String dnsUrl = "dns:///_kerberos." + protocol + "." + realmName;
String[] hostports = null;
try {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/net/CookieHandler/B6791927.java Thu Feb 05 09:28:04 2009 -0800
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/**
+ * @test
+ * @bug 6791927
+ * @summary Wrong Locale in HttpCookie::expiryDate2DeltaSeconds
+ */
+
+import java.net.*;
+import java.util.List;
+import java.util.Locale;
+
+public class B6791927 {
+ public static final void main( String[] aaParamters ) throws Exception{
+ // Forces a non US locale
+ Locale.setDefault(Locale.FRANCE);
+ List<HttpCookie> cookies = HttpCookie.parse("set-cookie: CUSTOMER=WILE_E_COYOTE; expires=Wednesday, 09-Nov-2019 23:12:40 GMT");
+ if (cookies == null || cookies.isEmpty()) {
+ throw new RuntimeException("No cookie found");
+ }
+ for (HttpCookie c : cookies) {
+ if (c.getMaxAge() == 0) {
+ throw new RuntimeException("Expiration date shouldn't be 0");
+ }
+ }
+ }
+}
--- a/jdk/test/sun/security/krb5/DnsFallback.java Thu Feb 05 09:24:45 2009 -0800
+++ b/jdk/test/sun/security/krb5/DnsFallback.java Thu Feb 05 09:28:04 2009 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2008-2009 Sun Microsystems, Inc. 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,8 @@
/*
* @test
* @bug 6673164
- * @summary dns_fallback parse error
+ * @bug 6552334
+ * @summary fix dns_fallback parse error, and use dns by default
*/
import sun.security.krb5.*;
@@ -31,6 +32,8 @@
public class DnsFallback {
public static void main(String[] args) throws Exception {
+
+ // for 6673164
check("true", "true", true);
check("false", "true", false);
check("true", "false", true);
@@ -39,6 +42,9 @@
check("false", null, false);
check(null, "true", true);
check(null, "false", false);
+
+ // for 6552334
+ check(null, null, true);
}
static void check(String realm, String fallback, boolean output) throws Exception {
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java Thu Feb 05 09:24:45 2009 -0800
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java Thu Feb 05 09:28:04 2009 -0800
@@ -136,6 +136,7 @@
server.getLocalPort(), "/");
HttpURLConnection uc = (HttpURLConnection)url.openConnection();
System.out.println(uc.getResponseCode());
+ uc.disconnect();
} catch (IOException e) {
e.printStackTrace();
} finally {