提交 b7722a1b 编写于 作者: T tbell

Merge

...@@ -34,11 +34,13 @@ import java.io.ObjectStreamException; ...@@ -34,11 +34,13 @@ import java.io.ObjectStreamException;
/** /**
* This is the common base class of all Java language enumeration types. * This is the common base class of all Java language enumeration types.
* *
* More information about enums, including implicit methods synthesised * More information about enums, including descriptions of the
* by the compiler, can be found in <i>The Java&trade; Language * implicitly declared methods synthesized by the compiler, can be
* Specification, Third Edition</i>, <a * found in <i>The Java&trade; Language Specification, Third
* Edition</i>, <a
* href="http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9">&sect;8.9</a>. * href="http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9">&sect;8.9</a>.
* *
* @param <E> The enum type subclass
* @author Josh Bloch * @author Josh Bloch
* @author Neal Gafter * @author Neal Gafter
* @see Class#getEnumConstants() * @see Class#getEnumConstants()
...@@ -197,6 +199,15 @@ public abstract class Enum<E extends Enum<E>> ...@@ -197,6 +199,15 @@ public abstract class Enum<E extends Enum<E>>
* to declare an enum constant in this type. (Extraneous whitespace * to declare an enum constant in this type. (Extraneous whitespace
* characters are not permitted.) * 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 * @param enumType the {@code Class} object of the enum type from which
* to return a constant * to return a constant
* @param name the name of the constant to return * @param name the name of the constant to return
......
...@@ -107,8 +107,9 @@ import java.io.IOException; ...@@ -107,8 +107,9 @@ import java.io.IOException;
* </ul> * </ul>
* </blockquote> * </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 * @author Edward Wang
* @since 1.6 * @since 1.6
*/ */
......
...@@ -33,6 +33,7 @@ import java.util.TimeZone; ...@@ -33,6 +33,7 @@ import java.util.TimeZone;
import java.util.Date; import java.util.Date;
import java.lang.NullPointerException; // for javadoc import java.lang.NullPointerException; // for javadoc
import java.util.Locale;
/** /**
* An HttpCookie object represents an http cookie, which carries state * An HttpCookie object represents an http cookie, which carries state
...@@ -1096,7 +1097,7 @@ public final class HttpCookie implements Cloneable { ...@@ -1096,7 +1097,7 @@ public final class HttpCookie implements Cloneable {
static { static {
cDateFormats = new SimpleDateFormat[COOKIE_DATE_FORMATS.length]; cDateFormats = new SimpleDateFormat[COOKIE_DATE_FORMATS.length];
for (int i = 0; i < COOKIE_DATE_FORMATS.length; i++) { 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")); cDateFormats[i].setTimeZone(TimeZone.getTimeZone("GMT"));
} }
} }
......
...@@ -39,7 +39,6 @@ import java.io.BufferedReader; ...@@ -39,7 +39,6 @@ import java.io.BufferedReader;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.IOException; import java.io.IOException;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.List;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
...@@ -156,11 +155,7 @@ public class Config { ...@@ -156,11 +155,7 @@ public class Config {
configFile = loadConfigFile(); configFile = loadConfigFile();
stanzaTable = parseStanzaTable(configFile); stanzaTable = parseStanzaTable(configFile);
} catch (IOException ioe) { } catch (IOException ioe) {
KrbException ke = new KrbException("Could not load " + // No krb5.conf, no problem. We'll use DNS etc.
"configuration file " +
ioe.getMessage());
ke.initCause(ioe);
throw(ke);
} }
} }
} }
...@@ -1057,7 +1052,12 @@ public class Config { ...@@ -1057,7 +1052,12 @@ public class Config {
public boolean useDNS(String name) { public boolean useDNS(String name) {
String value = getDefault(name, "libdefaults"); String value = getDefault(name, "libdefaults");
if (value == null) { if (value == null) {
return getDefaultBooleanValue("dns_fallback", "libdefaults"); value = getDefault("dns_fallback", "libdefaults");
if ("false".equalsIgnoreCase(value)) {
return false;
} else {
return true;
}
} else { } else {
return value.equalsIgnoreCase("true"); return value.equalsIgnoreCase("true");
} }
...@@ -1079,12 +1079,39 @@ public class Config { ...@@ -1079,12 +1079,39 @@ public class Config {
/** /**
* Gets default realm. * Gets default realm.
* @throws KrbException where no realm can be located
* @return the default realm, always non null
*/ */
public String getDefaultRealm() throws KrbException { public String getDefaultRealm() throws KrbException {
Exception cause = null;
String realm = getDefault("default_realm", "libdefaults"); String realm = getDefault("default_realm", "libdefaults");
if ((realm == null) && useDNS_Realm()) { if ((realm == null) && useDNS_Realm()) {
// use DNS to locate Kerberos 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; return realm;
} }
...@@ -1092,17 +1119,48 @@ public class Config { ...@@ -1092,17 +1119,48 @@ public class Config {
/** /**
* Returns a list of KDC's with each KDC separated by a space * Returns a list of KDC's with each KDC separated by a space
* *
* @param realm the realm for which the master KDC is desired * @param realm the realm for which the KDC list is desired
* @return the list of KDCs * @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 { public String getKDCList(String realm) throws KrbException {
if (realm == null) { if (realm == null) {
realm = getDefaultRealm(); realm = getDefaultRealm();
} }
Exception cause = null;
String kdcs = getDefault("kdc", realm); String kdcs = getDefault("kdc", realm);
if ((kdcs == null) && useDNS_KDC()) { if ((kdcs == null) && useDNS_KDC()) {
// use DNS to locate 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; return kdcs;
} }
...@@ -1117,7 +1175,7 @@ public class Config { ...@@ -1117,7 +1175,7 @@ public class Config {
String realm = null; String realm = null;
String hostName = null; String hostName = null;
try { try {
hostName = InetAddress.getLocalHost().getHostName(); hostName = InetAddress.getLocalHost().getCanonicalHostName();
} catch (UnknownHostException e) { } catch (UnknownHostException e) {
KrbException ke = new KrbException(Krb5.KRB_ERR_GENERIC, KrbException ke = new KrbException(Krb5.KRB_ERR_GENERIC,
"Unable to locate Kerberos realm: " + e.getMessage()); "Unable to locate Kerberos realm: " + e.getMessage());
......
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -133,7 +133,7 @@ class KrbServiceLocator { ...@@ -133,7 +133,7 @@ class KrbServiceLocator {
*/ */
static String[] getKerberosService(String realmName, String protocol) { static String[] getKerberosService(String realmName, String protocol) {
String dnsUrl = "dns:///_kerberos." + protocol + realmName; String dnsUrl = "dns:///_kerberos." + protocol + "." + realmName;
String[] hostports = null; String[] hostports = null;
try { try {
......
/*
* 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");
}
}
}
}
/* /*
* 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. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
/* /*
* @test * @test
* @bug 6673164 * @bug 6673164
* @summary dns_fallback parse error * @bug 6552334
* @summary fix dns_fallback parse error, and use dns by default
*/ */
import sun.security.krb5.*; import sun.security.krb5.*;
...@@ -31,6 +32,8 @@ import java.io.*; ...@@ -31,6 +32,8 @@ import java.io.*;
public class DnsFallback { public class DnsFallback {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
// for 6673164
check("true", "true", true); check("true", "true", true);
check("false", "true", false); check("false", "true", false);
check("true", "false", true); check("true", "false", true);
...@@ -39,6 +42,9 @@ public class DnsFallback { ...@@ -39,6 +42,9 @@ public class DnsFallback {
check("false", null, false); check("false", null, false);
check(null, "true", true); check(null, "true", true);
check(null, "false", false); check(null, "false", false);
// for 6552334
check(null, null, true);
} }
static void check(String realm, String fallback, boolean output) throws Exception { static void check(String realm, String fallback, boolean output) throws Exception {
......
...@@ -136,6 +136,7 @@ public class B6216082 { ...@@ -136,6 +136,7 @@ public class B6216082 {
server.getLocalPort(), "/"); server.getLocalPort(), "/");
HttpURLConnection uc = (HttpURLConnection)url.openConnection(); HttpURLConnection uc = (HttpURLConnection)url.openConnection();
System.out.println(uc.getResponseCode()); System.out.println(uc.getResponseCode());
uc.disconnect();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册