Mercurial > hg > openjdk > jdk8 > jdk
changeset 8998:f3c714eeef6c
Merge
author | mullan |
---|---|
date | Mon, 23 Dec 2013 14:05:20 -0500 |
parents | aef6c726810e (current diff) 39a02b18b386 (diff) |
children | 71ce5e56ca60 |
files | src/share/classes/sun/util/resources/pt/LocaleNames_pt_BR.properties test/sun/security/ssl/javax/net/ssl/SSLContextVersion.java |
diffstat | 98 files changed, 3076 insertions(+), 909 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/java/util/jar/pack/DriverResource_ja.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/com/sun/java/util/jar/pack/DriverResource_ja.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2013, 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 @@ -22,110 +22,99 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package com.sun.java.util.jar.pack; import java.util.ListResourceBundle; public class DriverResource_ja extends ListResourceBundle { - public static final String VERSION ="VERSION"; - public static final String BAD_ARGUMENT ="BAD_ARGUMENT"; - public static final String BAD_OPTION ="BAD_OPTION"; - public static final String BAD_REPACK_OUTPUT="BAD_REPACK_OUTPUT"; - public static final String DETECTED_ZIP_COMMENT="DETECTED_ZIP_COMMENT"; - public static final String SKIP_FOR_REPACKED ="SKIP_FOR_REPACKED"; - public static final String WRITE_PACK_FILE ="WRITE_PACK_FILE"; - public static final String WIRTE_PACKGZ_FILE="WIRTE_PACKGZ_FILE"; - public static final String SKIP_FOR_MOVE_FAILED="SKIP_FOR_MOVE_FAILED"; - public static final String PACK_HELP="PACK_HELP"; - public static final String UNPACK_HELP ="UNPACK_HELP"; - public static final String MORE_INFO = "MORE_INFO"; - public static final String DUPLICATE_OPTION = "DUPLICATE_OPTION"; - public static final String BAD_SPEC = "BAD_SPEC"; - //The following string is duplicate in PACK and UNPACK comment,which was draw out to ruduce translation work. - private static final String PARAMETER_V = " -v, --verbose increase program verbosity"; - private static final String PARAMETER_Q = " -q, --quiet set verbosity to lowest level"; - private static final String PARAMETER_LF = " -l{F}, --log-file={F} output to the given log file, or '-' for System.out"; - private static final String PARAMETER_H = " -?, -h, --help print this message"; - private static final String PARAMETER_VER = " -V, --version print program version"; - private static final String PARAMETER_J = " -J{X} pass option X to underlying Java VM"; - + public static final String VERSION = "VERSION"; + public static final String BAD_ARGUMENT = "BAD_ARGUMENT"; + public static final String BAD_OPTION = "BAD_OPTION"; + public static final String BAD_REPACK_OUTPUT = "BAD_REPACK_OUTPUT"; + public static final String DETECTED_ZIP_COMMENT = "DETECTED_ZIP_COMMENT"; + public static final String SKIP_FOR_REPACKED = "SKIP_FOR_REPACKED"; + public static final String WRITE_PACK_FILE = "WRITE_PACK_FILE"; + public static final String WRITE_PACKGZ_FILE = "WRITE_PACKGZ_FILE"; + public static final String SKIP_FOR_MOVE_FAILED = "SKIP_FOR_MOVE_FAILED"; + public static final String PACK_HELP = "PACK_HELP"; + public static final String UNPACK_HELP = "UNPACK_HELP"; + public static final String MORE_INFO = "MORE_INFO"; + public static final String DUPLICATE_OPTION = "DUPLICATE_OPTION"; + public static final String BAD_SPEC = "BAD_SPEC"; - //The following are outputs of command 'pack200' and 'unpack200'. - //Don't translate command arguments ,words with a prefix of '-' or '--'. - // - private static final Object[][] resource= { - {VERSION,"{0}\u30D0\u30FC\u30B8\u30E7\u30F3{1}"},//parameter 0:class name;parameter 1: version value - {BAD_ARGUMENT,"\u7121\u52B9\u306A\u5F15\u6570: {0}"}, - {BAD_OPTION,"\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}={1}"},//parameter 0:option name;parameter 1:option value - {BAD_REPACK_OUTPUT,"\u7121\u52B9\u306A--repack\u51FA\u529B: {0}"},//parameter 0:filename - {DETECTED_ZIP_COMMENT,"\u691C\u51FA\u3055\u308C\u305FZIP\u30B3\u30E1\u30F3\u30C8: {0}"},//parameter 0:comment - {SKIP_FOR_REPACKED,"\u3059\u3067\u306B\u518D\u5727\u7E2E\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059: {0}"},//parameter 0:filename - {WRITE_PACK_FILE,"*.pack\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080\u306B\u306F\u3001--no-gzip\u3092\u6307\u5B9A\u3057\u307E\u3059: {0}"},//parameter 0:filename - {WIRTE_PACKGZ_FILE,"*.pack.gz\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080\u306B\u306F\u3001--gzip\u3092\u6307\u5B9A\u3057\u307E\u3059: {0}"},//parameter 0:filename - {SKIP_FOR_MOVE_FAILED,"\u79FB\u52D5\u304C\u5931\u6557\u3057\u305F\u305F\u3081\u89E3\u51CD\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059: {0}"},//parameter 0:filename - {PACK_HELP,new String[]{ - "\u4F7F\u7528\u65B9\u6CD5: pack200 [-opt... | --option=value]... x.pack[.gz] y.jar", - "", - "\u5727\u7E2E\u30AA\u30D7\u30B7\u30E7\u30F3", - " -g\u3001--no-gzip \u30D7\u30EC\u30FC\u30F3\u306A*.pack\u30D5\u30A1\u30A4\u30EB\u3092\u5727\u7E2E\u305B\u305A\u306B\u51FA\u529B\u3057\u307E\u3059", - " --gzip (\u30C7\u30D5\u30A9\u30EB\u30C8)\u5727\u7E2E\u51FA\u529B\u3092gzip\u3067\u5F8C\u51E6\u7406\u3057\u307E\u3059", - " -G\u3001--strip-debug \u5727\u7E2E\u4E2D\u306B\u30C7\u30D0\u30C3\u30B0\u5C5E\u6027\u3092\u524A\u9664\u3057\u307E\u3059", - " -O\u3001--no-keep-file-order \u30D5\u30A1\u30A4\u30EB\u306E\u9806\u5E8F\u4ED8\u3051\u60C5\u5831\u3092\u8EE2\u9001\u3057\u307E\u305B\u3093", - " --keep-file-order (\u30C7\u30D5\u30A9\u30EB\u30C8)\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u9806\u5E8F\u4ED8\u3051\u3092\u4FDD\u6301\u3057\u307E\u3059", - " -S{N}\u3001--segment-limit={N} \u30BB\u30B0\u30E1\u30F3\u30C8\u5236\u9650\u3092\u51FA\u529B\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8N=1Mb)", - " -E{N}\u3001--effort={N} \u5727\u7E2E\u306E\u8A66\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8N=5)", - " -H{h}\u3001--deflate-hint={h} \u30C7\u30D5\u30EC\u30FC\u30C8\u30FB\u30D2\u30F3\u30C8\u3092\u8EE2\u9001\u3057\u307E\u3059: true\u3001false\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)", - " -m{V}\u3001--modification-time={V} \u5909\u66F4\u6642\u9593\u3092\u8EE2\u9001\u3057\u307E\u3059: latest\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)", - " -P{F}\u3001--pass-file={F} \u6307\u5B9A\u3055\u308C\u305F\u5727\u7E2E\u3055\u308C\u3066\u3044\u306A\u3044\u5165\u529B\u8981\u7D20\u3092\u8EE2\u9001\u3057\u307E\u3059", - " -U{a}\u3001--unknown-attribute={a} \u4E0D\u660E\u306E\u5C5E\u6027\u30A2\u30AF\u30B7\u30E7\u30F3: error\u3001strip\u307E\u305F\u306Fpass(\u30C7\u30D5\u30A9\u30EB\u30C8)", - " -C{N}={L}\u3001--class-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)", - " -F{N}={L}\u3001--field-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)", - " -M{N}={L}\u3001--method-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)", - " -D{N}={L}\u3001--code-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)", - " -f{F}\u3001--config-file={F} Pack200.Packer\u30D7\u30ED\u30D1\u30C6\u30A3\u306B\u30D5\u30A1\u30A4\u30EBF\u3092\u8AAD\u307F\u8FBC\u307F\u307E\u3059", - PARAMETER_V , - PARAMETER_Q , - PARAMETER_LF , - PARAMETER_H , - PARAMETER_VER , - PARAMETER_J, - "", - "\u6CE8\u610F:", - " -P\u3001-C\u3001-F\u3001-M\u304A\u3088\u3073-D\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u7D2F\u7A4D\u3055\u308C\u307E\u3059\u3002", - " \u5C5E\u6027\u5B9A\u7FA9\u306E\u4F8B: -C SourceFile=RUH .", - " Config.\u30D5\u30A1\u30A4\u30EB\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u306F\u3001Pack200 API\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002", - " -S\u3001-E\u3001-H\u3001-m\u3001-U\u306E\u5024\u306E\u610F\u5473\u306F\u3001Pack200 API\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002", - " \u30EC\u30A4\u30A2\u30A6\u30C8\u5B9A\u7FA9(RUH\u306A\u3069)\u306FJSR 200\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002", - "", - "\u518D\u5727\u7E2E\u30E2\u30FC\u30C9\u3067\u306F\u3001JAR\u30D5\u30A1\u30A4\u30EB\u304C\u5727\u7E2E/\u89E3\u51CD\u30B5\u30A4\u30AF\u30EB\u3067\u66F4\u65B0\u3055\u308C\u307E\u3059:", - " pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n" - } - }, - {UNPACK_HELP,new String[]{ - "\u4F7F\u7528\u65B9\u6CD5: unpack200 [-opt... | --option=value]... x.pack[.gz] y.jar\n", - "", - "\u89E3\u51CD\u30AA\u30D7\u30B7\u30E7\u30F3", - " -H{h}\u3001--deflate-hint={h} \u8EE2\u9001\u3055\u308C\u305F\u30C7\u30D5\u30EC\u30FC\u30C8\u30FB\u30D2\u30F3\u30C8\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059: true\u3001false\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)", - " -r\u3001--remove-pack-file \u89E3\u51CD\u5F8C\u306B\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059", - PARAMETER_V , - PARAMETER_Q , - PARAMETER_LF , - PARAMETER_H , - PARAMETER_VER , - PARAMETER_J, - } - }, + /* + * The following are the output of 'pack200' and 'unpack200' commands. + * Do not translate command arguments and words with a prefix of '-' or '--'. + */ + private static final Object[][] resource = { + {VERSION, "{0}\u30D0\u30FC\u30B8\u30E7\u30F3{1}"}, // parameter 0:class name;parameter 1: version value + {BAD_ARGUMENT, "\u7121\u52B9\u306A\u5F15\u6570: {0}"}, + {BAD_OPTION, "\u7121\u52B9\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}={1}"}, // parameter 0:option name;parameter 1:option value + {BAD_REPACK_OUTPUT, "\u7121\u52B9\u306A--repack\u51FA\u529B: {0}"}, // parameter 0:filename + {DETECTED_ZIP_COMMENT, "\u691C\u51FA\u3055\u308C\u305FZIP\u30B3\u30E1\u30F3\u30C8: {0}"}, // parameter 0:comment + {SKIP_FOR_REPACKED, "\u3059\u3067\u306B\u518D\u5727\u7E2E\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059: {0}"}, // parameter 0:filename + {WRITE_PACK_FILE, "*.pack\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080\u306B\u306F\u3001--no-gzip\u3092\u6307\u5B9A\u3057\u307E\u3059: {0}"}, // parameter 0:filename + {WRITE_PACKGZ_FILE, "*.pack.gz\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080\u306B\u306F\u3001--gzip\u3092\u6307\u5B9A\u3057\u307E\u3059: {0}"}, // parameter 0:filename + {SKIP_FOR_MOVE_FAILED, "\u79FB\u52D5\u304C\u5931\u6557\u3057\u305F\u305F\u3081\u89E3\u51CD\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059: {0}"}, // parameter 0:filename + {PACK_HELP, new String[] { + "\u4F7F\u7528\u65B9\u6CD5: pack200 [-opt... | --option=value]... x.pack[.gz] y.jar", + "", + "\u5727\u7E2E\u30AA\u30D7\u30B7\u30E7\u30F3", + " -g\u3001--no-gzip \u30D7\u30EC\u30FC\u30F3\u306A*.pack\u30D5\u30A1\u30A4\u30EB\u3092\u5727\u7E2E\u305B\u305A\u306B\u51FA\u529B\u3057\u307E\u3059", + " --gzip (\u30C7\u30D5\u30A9\u30EB\u30C8)\u5727\u7E2E\u51FA\u529B\u3092gzip\u3067\u5F8C\u51E6\u7406\u3057\u307E\u3059", + " -G\u3001--strip-debug \u5727\u7E2E\u4E2D\u306B\u30C7\u30D0\u30C3\u30B0\u5C5E\u6027\u3092\u524A\u9664\u3057\u307E\u3059", + " -O\u3001--no-keep-file-order \u30D5\u30A1\u30A4\u30EB\u306E\u9806\u5E8F\u4ED8\u3051\u60C5\u5831\u3092\u8EE2\u9001\u3057\u307E\u305B\u3093", + " --keep-file-order (\u30C7\u30D5\u30A9\u30EB\u30C8)\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u9806\u5E8F\u4ED8\u3051\u3092\u4FDD\u6301\u3057\u307E\u3059", + " -S{N}\u3001--segment-limit={N} \u30BB\u30B0\u30E1\u30F3\u30C8\u5236\u9650\u3092\u51FA\u529B\u3057\u307E\u3059(\u30C7\u30D5\u30A9\u30EB\u30C8N=1Mb)", + " -E{N}\u3001--effort={N} \u5727\u7E2E\u306E\u8A66\u884C(\u30C7\u30D5\u30A9\u30EB\u30C8N=5)", + " -H{h}\u3001--deflate-hint={h} \u30C7\u30D5\u30EC\u30FC\u30C8\u30FB\u30D2\u30F3\u30C8\u3092\u8EE2\u9001\u3057\u307E\u3059: true\u3001false\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)", + " -m{V}\u3001--modification-time={V} \u5909\u66F4\u6642\u9593\u3092\u8EE2\u9001\u3057\u307E\u3059: latest\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)", + " -P{F}\u3001--pass-file={F} \u6307\u5B9A\u3055\u308C\u305F\u5727\u7E2E\u3055\u308C\u3066\u3044\u306A\u3044\u5165\u529B\u8981\u7D20\u3092\u8EE2\u9001\u3057\u307E\u3059", + " -U{a}\u3001--unknown-attribute={a} \u4E0D\u660E\u306E\u5C5E\u6027\u30A2\u30AF\u30B7\u30E7\u30F3: error\u3001strip\u307E\u305F\u306Fpass(\u30C7\u30D5\u30A9\u30EB\u30C8)", + " -C{N}={L}\u3001--class-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)", + " -F{N}={L}\u3001--field-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)", + " -M{N}={L}\u3001--method-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)", + " -D{N}={L}\u3001--code-attribute={N}={L} (\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5C5E\u6027)", + " -f{F}\u3001--config-file={F} Pack200.Packer\u30D7\u30ED\u30D1\u30C6\u30A3\u306B\u30D5\u30A1\u30A4\u30EBF\u3092\u8AAD\u307F\u8FBC\u307F\u307E\u3059", + " -v\u3001--verbose \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u5197\u9577\u6027\u3092\u9AD8\u3081\u307E\u3059", + " -q\u3001--quiet \u5197\u9577\u6027\u3092\u6700\u4F4E\u30EC\u30D9\u30EB\u306B\u8A2D\u5B9A\u3057\u307E\u3059", + " -l{F}\u3001--log-file={F} \u6307\u5B9A\u306E\u30ED\u30B0\u30FB\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306FSystem.out ('-'\u306E\u5834\u5408)\u306B\u51FA\u529B\u3057\u307E\u3059", + " -?\u3001-h\u3001--help \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u307E\u3059", + " -V\u3001--version \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u307E\u3059", + " -J{X} \u30AA\u30D7\u30B7\u30E7\u30F3X\u3092\u57FA\u790E\u3068\u306A\u308BJava VM\u306B\u6E21\u3057\u307E\u3059", + "", + "\u6CE8\u610F:", + " -P\u3001-C\u3001-F\u3001-M\u304A\u3088\u3073-D\u30AA\u30D7\u30B7\u30E7\u30F3\u306F\u7D2F\u7A4D\u3055\u308C\u307E\u3059\u3002", + " \u5C5E\u6027\u5B9A\u7FA9\u306E\u4F8B: -C SourceFile=RUH .", + " Config.\u30D5\u30A1\u30A4\u30EB\u30FB\u30D7\u30ED\u30D1\u30C6\u30A3\u306F\u3001Pack200 API\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002", + " -S\u3001-E\u3001-H\u3001-m\u3001-U\u306E\u5024\u306E\u610F\u5473\u306F\u3001Pack200 API\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002", + " \u30EC\u30A4\u30A2\u30A6\u30C8\u5B9A\u7FA9(RUH\u306A\u3069)\u306FJSR 200\u306B\u3088\u3063\u3066\u5B9A\u7FA9\u3055\u308C\u307E\u3059\u3002", + "", + "\u518D\u5727\u7E2E\u30E2\u30FC\u30C9\u3067\u306F\u3001JAR\u30D5\u30A1\u30A4\u30EB\u304C\u5727\u7E2E/\u89E3\u51CD\u30B5\u30A4\u30AF\u30EB\u3067\u66F4\u65B0\u3055\u308C\u307E\u3059:", + " pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n" + } + }, + {UNPACK_HELP, new String[] { + "\u4F7F\u7528\u65B9\u6CD5: unpack200 [-opt... | --option=value]... x.pack[.gz] y.jar\n", + "", + "\u89E3\u51CD\u30AA\u30D7\u30B7\u30E7\u30F3", + " -H{h}\u3001--deflate-hint={h} \u8EE2\u9001\u3055\u308C\u305F\u30C7\u30D5\u30EC\u30FC\u30C8\u30FB\u30D2\u30F3\u30C8\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059: true\u3001false\u307E\u305F\u306Fkeep(\u30C7\u30D5\u30A9\u30EB\u30C8)", + " -r\u3001--remove-pack-file \u89E3\u51CD\u5F8C\u306B\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u307E\u3059", + " -v\u3001--verbose \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u5197\u9577\u6027\u3092\u9AD8\u3081\u307E\u3059", + " -q\u3001--quiet \u5197\u9577\u6027\u3092\u6700\u4F4E\u30EC\u30D9\u30EB\u306B\u8A2D\u5B9A\u3057\u307E\u3059", + " -l{F}\u3001--log-file={F} \u6307\u5B9A\u306E\u30ED\u30B0\u30FB\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306FSystem.out ('-'\u306E\u5834\u5408)\u306B\u51FA\u529B\u3057\u307E\u3059", + " -?\u3001-h\u3001--help \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3057\u307E\u3059", + " -V\u3001--version \u30D7\u30ED\u30B0\u30E9\u30E0\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3057\u307E\u3059", + " -J{X} \u30AA\u30D7\u30B7\u30E7\u30F3X\u3092\u57FA\u790E\u3068\u306A\u308BJava VM\u306B\u6E21\u3057\u307E\u3059" + } + }, + {MORE_INFO, "(\u8A73\u7D30\u306F\u3001{0} --help\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002)"}, // parameter 0:command name + {DUPLICATE_OPTION, "\u91CD\u8907\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"}, // parameter 0:option + {BAD_SPEC, "{0}\u306E\u7121\u52B9\u306A\u4ED5\u69D8: {1}"}, // parameter 0:option;parameter 1:specifier + }; - {MORE_INFO,"(\u8A73\u7D30\u306F\u3001{0} --help\u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002)"},//parameter 0:command name - {DUPLICATE_OPTION,"\u91CD\u8907\u30AA\u30D7\u30B7\u30E7\u30F3: {0}"},//parameter 0:option - {BAD_SPEC,"{0}\u306E\u7121\u52B9\u306A\u4ED5\u69D8: {1}"},//parameter 0:option;parameter 1:specifier - }; - - protected Object[][] getContents() { - return resource; - } - - + protected Object[][] getContents() { + return resource; + } }
--- a/src/share/classes/com/sun/java/util/jar/pack/DriverResource_zh_CN.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/com/sun/java/util/jar/pack/DriverResource_zh_CN.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2013, 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 @@ -22,110 +22,99 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ - package com.sun.java.util.jar.pack; import java.util.ListResourceBundle; public class DriverResource_zh_CN extends ListResourceBundle { - public static final String VERSION ="VERSION"; - public static final String BAD_ARGUMENT ="BAD_ARGUMENT"; - public static final String BAD_OPTION ="BAD_OPTION"; - public static final String BAD_REPACK_OUTPUT="BAD_REPACK_OUTPUT"; - public static final String DETECTED_ZIP_COMMENT="DETECTED_ZIP_COMMENT"; - public static final String SKIP_FOR_REPACKED ="SKIP_FOR_REPACKED"; - public static final String WRITE_PACK_FILE ="WRITE_PACK_FILE"; - public static final String WIRTE_PACKGZ_FILE="WIRTE_PACKGZ_FILE"; - public static final String SKIP_FOR_MOVE_FAILED="SKIP_FOR_MOVE_FAILED"; - public static final String PACK_HELP="PACK_HELP"; - public static final String UNPACK_HELP ="UNPACK_HELP"; - public static final String MORE_INFO = "MORE_INFO"; - public static final String DUPLICATE_OPTION = "DUPLICATE_OPTION"; - public static final String BAD_SPEC = "BAD_SPEC"; - //The following string is duplicate in PACK and UNPACK comment,which was draw out to ruduce translation work. - private static final String PARAMETER_V = " -v, --verbose increase program verbosity"; - private static final String PARAMETER_Q = " -q, --quiet set verbosity to lowest level"; - private static final String PARAMETER_LF = " -l{F}, --log-file={F} output to the given log file, or '-' for System.out"; - private static final String PARAMETER_H = " -?, -h, --help print this message"; - private static final String PARAMETER_VER = " -V, --version print program version"; - private static final String PARAMETER_J = " -J{X} pass option X to underlying Java VM"; - + public static final String VERSION = "VERSION"; + public static final String BAD_ARGUMENT = "BAD_ARGUMENT"; + public static final String BAD_OPTION = "BAD_OPTION"; + public static final String BAD_REPACK_OUTPUT = "BAD_REPACK_OUTPUT"; + public static final String DETECTED_ZIP_COMMENT = "DETECTED_ZIP_COMMENT"; + public static final String SKIP_FOR_REPACKED = "SKIP_FOR_REPACKED"; + public static final String WRITE_PACK_FILE = "WRITE_PACK_FILE"; + public static final String WRITE_PACKGZ_FILE = "WRITE_PACKGZ_FILE"; + public static final String SKIP_FOR_MOVE_FAILED = "SKIP_FOR_MOVE_FAILED"; + public static final String PACK_HELP = "PACK_HELP"; + public static final String UNPACK_HELP = "UNPACK_HELP"; + public static final String MORE_INFO = "MORE_INFO"; + public static final String DUPLICATE_OPTION = "DUPLICATE_OPTION"; + public static final String BAD_SPEC = "BAD_SPEC"; - //The following are outputs of command 'pack200' and 'unpack200'. - //Don't translate command arguments ,words with a prefix of '-' or '--'. - // - private static final Object[][] resource= { - {VERSION,"{0}\u7248\u672C{1}"},//parameter 0:class name;parameter 1: version value - {BAD_ARGUMENT,"\u9519\u8BEF\u53C2\u6570: {0}"}, - {BAD_OPTION,"\u9519\u8BEF\u9009\u9879: {0}={1}"},//parameter 0:option name;parameter 1:option value - {BAD_REPACK_OUTPUT,"--repack \u8F93\u51FA\u9519\u8BEF: {0}"},//parameter 0:filename - {DETECTED_ZIP_COMMENT,"\u68C0\u6D4B\u5230 ZIP \u6CE8\u91CA: {0}"},//parameter 0:comment - {SKIP_FOR_REPACKED,"\u7531\u4E8E\u5DF2\u91CD\u65B0\u6253\u5305\u800C\u8DF3\u8FC7: {0}"},//parameter 0:filename - {WRITE_PACK_FILE,"\u8981\u5199\u5165 *.pack \u6587\u4EF6, \u8BF7\u6307\u5B9A --no-gzip: {0}"},//parameter 0:filename - {WIRTE_PACKGZ_FILE,"\u8981\u5199\u5165 *.pack.gz \u6587\u4EF6, \u8BF7\u6307\u5B9A --gzip: {0}"},//parameter 0:filename - {SKIP_FOR_MOVE_FAILED,"\u7531\u4E8E\u79FB\u52A8\u5931\u8D25\u800C\u8DF3\u8FC7\u91CD\u65B0\u6253\u5305: {0}"},//parameter 0:filename - {PACK_HELP,new String[]{ - "\u7528\u6CD5: pack200 [-opt... | --option=value]... x.pack[.gz] y.jar", - "", - "\u6253\u5305\u9009\u9879", - " -g, --no-gzip \u8F93\u51FA\u65E0\u683C\u5F0F\u7684 *.pack \u6587\u4EF6, \u4E0D\u538B\u7F29", - " --gzip (\u9ED8\u8BA4\u503C) \u4F7F\u7528 gzip \u5BF9\u6253\u5305\u8FDB\u884C\u540E\u5904\u7406", - " -G, --strip-debug \u6253\u5305\u65F6\u5220\u9664\u8C03\u8BD5\u5C5E\u6027", - " -O, --no-keep-file-order \u4E0D\u4F20\u8F93\u6587\u4EF6\u6392\u5E8F\u4FE1\u606F", - " --keep-file-order (\u9ED8\u8BA4\u503C) \u4FDD\u7559\u8F93\u5165\u6587\u4EF6\u6392\u5E8F", - " -S{N}, --segment-limit={N} \u8F93\u51FA\u6BB5\u9650\u5236 (\u9ED8\u8BA4\u503C N=1Mb)", - " -E{N}, --effort={N} \u6253\u5305\u6548\u679C (\u9ED8\u8BA4\u503C N=5)", - " -H{h}, --deflate-hint={h} \u4F20\u8F93\u538B\u7F29\u63D0\u793A: true, false \u6216 keep (\u9ED8\u8BA4\u503C)", - " -m{V}, --modification-time={V} \u4F20\u8F93 modtimes: latest \u6216 keep (\u9ED8\u8BA4\u503C)", - " -P{F}, --pass-file={F} \u4F20\u8F93\u672A\u89E3\u538B\u7F29\u7684\u7ED9\u5B9A\u8F93\u5165\u5143\u7D20", - " -U{a}, --unknown-attribute={a} \u672A\u77E5\u5C5E\u6027\u64CD\u4F5C: error, strip \u6216 pass (\u9ED8\u8BA4\u503C)", - " -C{N}={L}, --class-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)", - " -F{N}={L}, --field-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)", - " -M{N}={L}, --method-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)", - " -D{N}={L}, --code-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)", - " -f{F}, --config-file={F} \u8BFB\u53D6\u6587\u4EF6 F \u7684 Pack200.Packer \u5C5E\u6027", - PARAMETER_V , - PARAMETER_Q , - PARAMETER_LF , - PARAMETER_H , - PARAMETER_VER , - PARAMETER_J, - "", - "\u6CE8:", - " -P, -C, -F, -M \u548C -D \u9009\u9879\u7D2F\u8BA1\u3002", - " \u793A\u4F8B\u5C5E\u6027\u5B9A\u4E49: -C SourceFile=RUH\u3002", - " Config. \u6587\u4EF6\u5C5E\u6027\u7531 Pack200 API \u5B9A\u4E49\u3002", - " \u6709\u5173 -S, -E, -H-, -m, -U \u503C\u7684\u542B\u4E49, \u8BF7\u53C2\u9605 Pack200 API\u3002", - " \u5E03\u5C40\u5B9A\u4E49 (\u4F8B\u5982 RUH) \u7531 JSR 200 \u5B9A\u4E49\u3002", - "", - "\u91CD\u65B0\u6253\u5305\u6A21\u5F0F\u901A\u8FC7\u6253\u5305/\u89E3\u5305\u5468\u671F\u66F4\u65B0 JAR \u6587\u4EF6:", - " pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n" - } - }, - {UNPACK_HELP,new String[]{ - "\u7528\u6CD5: unpack200 [-opt... | --option=value]... x.pack[.gz] y.jar\n", - "", - "\u89E3\u5305\u9009\u9879", - " -H{h}, --deflate-hint={h} \u8986\u76D6\u5DF2\u4F20\u8F93\u7684\u538B\u7F29\u63D0\u793A: true, false \u6216 keep (\u9ED8\u8BA4\u503C)", - " -r, --remove-pack-file \u89E3\u5305\u4E4B\u540E\u5220\u9664\u8F93\u5165\u6587\u4EF6", - PARAMETER_V , - PARAMETER_Q , - PARAMETER_LF , - PARAMETER_H , - PARAMETER_VER , - PARAMETER_J, - } - }, + /* + * The following are the output of 'pack200' and 'unpack200' commands. + * Do not translate command arguments and words with a prefix of '-' or '--'. + */ + private static final Object[][] resource = { + {VERSION, "{0}\u7248\u672C{1}"}, // parameter 0:class name;parameter 1: version value + {BAD_ARGUMENT, "\u9519\u8BEF\u53C2\u6570: {0}"}, + {BAD_OPTION, "\u9519\u8BEF\u9009\u9879: {0}={1}"}, // parameter 0:option name;parameter 1:option value + {BAD_REPACK_OUTPUT, "--repack \u8F93\u51FA\u9519\u8BEF: {0}"}, // parameter 0:filename + {DETECTED_ZIP_COMMENT, "\u68C0\u6D4B\u5230 ZIP \u6CE8\u91CA: {0}"}, // parameter 0:comment + {SKIP_FOR_REPACKED, "\u7531\u4E8E\u5DF2\u91CD\u65B0\u6253\u5305\u800C\u8DF3\u8FC7: {0}"}, // parameter 0:filename + {WRITE_PACK_FILE, "\u8981\u5199\u5165 *.pack \u6587\u4EF6, \u8BF7\u6307\u5B9A --no-gzip: {0}"}, // parameter 0:filename + {WRITE_PACKGZ_FILE, "\u8981\u5199\u5165 *.pack.gz \u6587\u4EF6, \u8BF7\u6307\u5B9A --gzip: {0}"}, // parameter 0:filename + {SKIP_FOR_MOVE_FAILED, "\u7531\u4E8E\u79FB\u52A8\u5931\u8D25\u800C\u8DF3\u8FC7\u91CD\u65B0\u6253\u5305: {0}"}, // parameter 0:filename + {PACK_HELP, new String[] { + "\u7528\u6CD5: pack200 [-opt... | --option=value]... x.pack[.gz] y.jar", + "", + "\u6253\u5305\u9009\u9879", + " -g, --no-gzip \u8F93\u51FA\u65E0\u683C\u5F0F\u7684 *.pack \u6587\u4EF6, \u4E0D\u538B\u7F29", + " --gzip (\u9ED8\u8BA4\u503C) \u4F7F\u7528 gzip \u5BF9\u6253\u5305\u8FDB\u884C\u540E\u5904\u7406", + " -G, --strip-debug \u6253\u5305\u65F6\u5220\u9664\u8C03\u8BD5\u5C5E\u6027", + " -O, --no-keep-file-order \u4E0D\u4F20\u8F93\u6587\u4EF6\u6392\u5E8F\u4FE1\u606F", + " --keep-file-order (\u9ED8\u8BA4\u503C) \u4FDD\u7559\u8F93\u5165\u6587\u4EF6\u6392\u5E8F", + " -S{N}, --segment-limit={N} \u8F93\u51FA\u6BB5\u9650\u5236 (\u9ED8\u8BA4\u503C N=1Mb)", + " -E{N}, --effort={N} \u6253\u5305\u6548\u679C (\u9ED8\u8BA4\u503C N=5)", + " -H{h}, --deflate-hint={h} \u4F20\u8F93\u538B\u7F29\u63D0\u793A: true, false \u6216 keep (\u9ED8\u8BA4\u503C)", + " -m{V}, --modification-time={V} \u4F20\u8F93 modtimes: latest \u6216 keep (\u9ED8\u8BA4\u503C)", + " -P{F}, --pass-file={F} \u4F20\u8F93\u672A\u89E3\u538B\u7F29\u7684\u7ED9\u5B9A\u8F93\u5165\u5143\u7D20", + " -U{a}, --unknown-attribute={a} \u672A\u77E5\u5C5E\u6027\u64CD\u4F5C: error, strip \u6216 pass (\u9ED8\u8BA4\u503C)", + " -C{N}={L}, --class-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)", + " -F{N}={L}, --field-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)", + " -M{N}={L}, --method-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)", + " -D{N}={L}, --code-attribute={N}={L} (\u7528\u6237\u5B9A\u4E49\u7684\u5C5E\u6027)", + " -f{F}, --config-file={F} \u8BFB\u53D6\u6587\u4EF6 F \u7684 Pack200.Packer \u5C5E\u6027", + " -v, --verbose \u63D0\u9AD8\u7A0B\u5E8F\u8BE6\u7EC6\u7A0B\u5EA6", + " -q, --quiet \u5C06\u8BE6\u7EC6\u7A0B\u5EA6\u8BBE\u7F6E\u4E3A\u6700\u4F4E\u7EA7\u522B", + " -l{F}, --log-file={F} \u8F93\u51FA\u5230\u7ED9\u5B9A\u65E5\u5FD7\u6587\u4EF6, \u6216\u5BF9\u4E8E System.out \u6307\u5B9A '-'", + " -?, -h, --help \u8F93\u51FA\u6B64\u6D88\u606F", + " -V, --version \u8F93\u51FA\u7A0B\u5E8F\u7248\u672C", + " -J{X} \u5C06\u9009\u9879 X \u4F20\u9012\u7ED9\u57FA\u7840 Java VM", + "", + "\u6CE8:", + " -P, -C, -F, -M \u548C -D \u9009\u9879\u7D2F\u8BA1\u3002", + " \u793A\u4F8B\u5C5E\u6027\u5B9A\u4E49: -C SourceFile=RUH\u3002", + " Config. \u6587\u4EF6\u5C5E\u6027\u7531 Pack200 API \u5B9A\u4E49\u3002", + " \u6709\u5173 -S, -E, -H-, -m, -U \u503C\u7684\u542B\u4E49, \u8BF7\u53C2\u9605 Pack200 API\u3002", + " \u5E03\u5C40\u5B9A\u4E49 (\u4F8B\u5982 RUH) \u7531 JSR 200 \u5B9A\u4E49\u3002", + "", + "\u91CD\u65B0\u6253\u5305\u6A21\u5F0F\u901A\u8FC7\u6253\u5305/\u89E3\u5305\u5468\u671F\u66F4\u65B0 JAR \u6587\u4EF6:", + " pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar\n" + } + }, + {UNPACK_HELP, new String[] { + "\u7528\u6CD5: unpack200 [-opt... | --option=value]... x.pack[.gz] y.jar\n", + "", + "\u89E3\u5305\u9009\u9879", + " -H{h}, --deflate-hint={h} \u8986\u76D6\u5DF2\u4F20\u8F93\u7684\u538B\u7F29\u63D0\u793A: true, false \u6216 keep (\u9ED8\u8BA4\u503C)", + " -r, --remove-pack-file \u89E3\u5305\u4E4B\u540E\u5220\u9664\u8F93\u5165\u6587\u4EF6", + " -v, --verbose \u63D0\u9AD8\u7A0B\u5E8F\u8BE6\u7EC6\u7A0B\u5EA6", + " -q, --quiet \u5C06\u8BE6\u7EC6\u7A0B\u5EA6\u8BBE\u7F6E\u4E3A\u6700\u4F4E\u7EA7\u522B", + " -l{F}, --log-file={F} \u8F93\u51FA\u5230\u7ED9\u5B9A\u65E5\u5FD7\u6587\u4EF6, \u6216\u5BF9\u4E8E System.out \u6307\u5B9A '-'", + " -?, -h, --help \u8F93\u51FA\u6B64\u6D88\u606F", + " -V, --version \u8F93\u51FA\u7A0B\u5E8F\u7248\u672C", + " -J{X} \u5C06\u9009\u9879 X \u4F20\u9012\u7ED9\u57FA\u7840 Java VM" + } + }, + {MORE_INFO, "(\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u8FD0\u884C {0} --help\u3002)"}, // parameter 0:command name + {DUPLICATE_OPTION, "\u91CD\u590D\u7684\u9009\u9879: {0}"}, // parameter 0:option + {BAD_SPEC, "{0}\u7684\u89C4\u8303\u9519\u8BEF: {1}"}, // parameter 0:option;parameter 1:specifier + }; - {MORE_INFO,"(\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u8FD0\u884C {0} --help\u3002)"},//parameter 0:command name - {DUPLICATE_OPTION,"\u91CD\u590D\u7684\u9009\u9879: {0}"},//parameter 0:option - {BAD_SPEC,"{0}\u7684\u89C4\u8303\u9519\u8BEF: {1}"},//parameter 0:option;parameter 1:specifier - }; - - protected Object[][] getContents() { - return resource; - } - - + protected Object[][] getContents() { + return resource; + } }
--- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_de.properties Mon Dec 23 14:05:20 2013 -0500 @@ -143,12 +143,12 @@ InternalFrame.closeButtonToolTip=Schlie\u00DFen ############ Internal Frame Title Pane Strings ############ -InternalFrameTitlePane.restoreButton.textAndMnemonic=Wiede&rherstellen -InternalFrameTitlePane.moveButton.textAndMnemonic=Verschieben(&M) -InternalFrameTitlePane.sizeButton.textAndMnemonic=Gr\u00F6\u00DFe(&S) +InternalFrameTitlePane.restoreButton.textAndMnemonic=&Wiederherstellen +InternalFrameTitlePane.moveButton.textAndMnemonic=&Verschieben +InternalFrameTitlePane.sizeButton.textAndMnemonic=&Gr\u00F6\u00DFe InternalFrameTitlePane.minimizeButton.textAndMnemonic=Mi&nimieren InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ma&ximieren -InternalFrameTitlePane.closeButton.textAndMnemonic=S&chlie\u00DFen +InternalFrameTitlePane.closeButton.textAndMnemonic=&Schlie\u00DFen ############ Text strings ############# # Used for html forms
--- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_es.properties Mon Dec 23 14:05:20 2013 -0500 @@ -145,7 +145,7 @@ ############ Internal Frame Title Pane Strings ############ InternalFrameTitlePane.restoreButton.textAndMnemonic=&Restaurar InternalFrameTitlePane.moveButton.textAndMnemonic=&Mover -InternalFrameTitlePane.sizeButton.textAndMnemonic=Tama\u00F1o(&S) +InternalFrameTitlePane.sizeButton.textAndMnemonic=&Tama\u00F1o InternalFrameTitlePane.minimizeButton.textAndMnemonic=Mi&nimizar InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ma&ximizar InternalFrameTitlePane.closeButton.textAndMnemonic=&Cerrar
--- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_fr.properties Mon Dec 23 14:05:20 2013 -0500 @@ -144,11 +144,11 @@ ############ Internal Frame Title Pane Strings ############ InternalFrameTitlePane.restoreButton.textAndMnemonic=&Restaurer -InternalFrameTitlePane.moveButton.textAndMnemonic=D\u00E9placer(&M) -InternalFrameTitlePane.sizeButton.textAndMnemonic=Taille(&S) -InternalFrameTitlePane.minimizeButton.textAndMnemonic=R\u00E9duire(&N) -InternalFrameTitlePane.maximizeButton.textAndMnemonic=Agrandir(&X) -InternalFrameTitlePane.closeButton.textAndMnemonic=Fermer(&C) +InternalFrameTitlePane.moveButton.textAndMnemonic=D\u00E9p&lacer +InternalFrameTitlePane.sizeButton.textAndMnemonic=Re&dimensionner +InternalFrameTitlePane.minimizeButton.textAndMnemonic=&R\u00E9duire +InternalFrameTitlePane.maximizeButton.textAndMnemonic=&Agrandir +InternalFrameTitlePane.closeButton.textAndMnemonic=&Fermer ############ Text strings ############# # Used for html forms
--- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_it.properties Mon Dec 23 14:05:20 2013 -0500 @@ -144,10 +144,10 @@ ############ Internal Frame Title Pane Strings ############ InternalFrameTitlePane.restoreButton.textAndMnemonic=&Ripristina -InternalFrameTitlePane.moveButton.textAndMnemonic=Sposta(&M) -InternalFrameTitlePane.sizeButton.textAndMnemonic=Dimen&sioni -InternalFrameTitlePane.minimizeButton.textAndMnemonic=Riduci a ico&na -InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ingrandisci(&X) +InternalFrameTitlePane.moveButton.textAndMnemonic=&Sposta +InternalFrameTitlePane.sizeButton.textAndMnemonic=R&idimensiona +InternalFrameTitlePane.minimizeButton.textAndMnemonic=Ri&duci a icona +InternalFrameTitlePane.maximizeButton.textAndMnemonic=In&grandisci InternalFrameTitlePane.closeButton.textAndMnemonic=&Chiudi ############ Text strings #############
--- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_pt_BR.properties Mon Dec 23 14:05:20 2013 -0500 @@ -145,10 +145,10 @@ ############ Internal Frame Title Pane Strings ############ InternalFrameTitlePane.restoreButton.textAndMnemonic=&Restaurar InternalFrameTitlePane.moveButton.textAndMnemonic=&Mover -InternalFrameTitlePane.sizeButton.textAndMnemonic=Tamanho(&S) +InternalFrameTitlePane.sizeButton.textAndMnemonic=&Dimensionar InternalFrameTitlePane.minimizeButton.textAndMnemonic=Mi&nimizar InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ma&ximizar -InternalFrameTitlePane.closeButton.textAndMnemonic=Fe&char +InternalFrameTitlePane.closeButton.textAndMnemonic=&Fechar ############ Text strings ############# # Used for html forms
--- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_sv.properties Mon Dec 23 14:05:20 2013 -0500 @@ -143,12 +143,12 @@ InternalFrame.closeButtonToolTip=St\u00E4ng ############ Internal Frame Title Pane Strings ############ -InternalFrameTitlePane.restoreButton.textAndMnemonic=\u00C5terst\u00E4ll(&R) -InternalFrameTitlePane.moveButton.textAndMnemonic=Flytta(&M) +InternalFrameTitlePane.restoreButton.textAndMnemonic=&\u00C5terst\u00E4ll +InternalFrameTitlePane.moveButton.textAndMnemonic=&Flytta InternalFrameTitlePane.sizeButton.textAndMnemonic=&Storlek InternalFrameTitlePane.minimizeButton.textAndMnemonic=Mi&nimera InternalFrameTitlePane.maximizeButton.textAndMnemonic=Ma&ximera -InternalFrameTitlePane.closeButton.textAndMnemonic=St\u00E4ng(&C) +InternalFrameTitlePane.closeButton.textAndMnemonic=&St\u00E4ng ############ Text strings ############# # Used for html forms
--- a/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic_zh_TW.properties Mon Dec 23 14:05:20 2013 -0500 @@ -143,9 +143,9 @@ InternalFrame.closeButtonToolTip=\u95DC\u9589 ############ Internal Frame Title Pane Strings ############ -InternalFrameTitlePane.restoreButton.textAndMnemonic=\u5FA9\u539F(&R) +InternalFrameTitlePane.restoreButton.textAndMnemonic=\u56DE\u5FA9(&R) InternalFrameTitlePane.moveButton.textAndMnemonic=\u79FB\u52D5(&M) -InternalFrameTitlePane.sizeButton.textAndMnemonic=\u5927\u5C0F(&S) +InternalFrameTitlePane.sizeButton.textAndMnemonic=\u8ABF\u6574\u5927\u5C0F(&S) InternalFrameTitlePane.minimizeButton.textAndMnemonic=\u6700\u5C0F\u5316(&N) InternalFrameTitlePane.maximizeButton.textAndMnemonic=\u6700\u5927\u5316(&X) InternalFrameTitlePane.closeButton.textAndMnemonic=\u95DC\u9589(&C)
--- a/src/share/classes/java/time/Duration.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/Duration.java Mon Dec 23 14:05:20 2013 -0500 @@ -74,7 +74,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; -import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.math.BigDecimal; import java.math.BigInteger; @@ -1325,10 +1325,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/Instant.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/Instant.java Mon Dec 23 14:05:20 2013 -0500 @@ -76,6 +76,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -1346,10 +1347,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/LocalDate.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/LocalDate.java Mon Dec 23 14:05:20 2013 -0500 @@ -78,6 +78,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.chrono.ChronoLocalDate; import java.time.chrono.Era; @@ -2051,10 +2052,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/LocalDateTime.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/LocalDateTime.java Mon Dec 23 14:05:20 2013 -0500 @@ -76,6 +76,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.chrono.ChronoLocalDateTime; import java.time.format.DateTimeFormatter; @@ -1984,10 +1985,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/LocalTime.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/LocalTime.java Mon Dec 23 14:05:20 2013 -0500 @@ -74,6 +74,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -1636,10 +1637,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/MonthDay.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/MonthDay.java Mon Dec 23 14:05:20 2013 -0500 @@ -68,6 +68,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.chrono.Chronology; import java.time.chrono.IsoChronology; @@ -769,10 +770,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/OffsetDateTime.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/OffsetDateTime.java Mon Dec 23 14:05:20 2013 -0500 @@ -72,6 +72,7 @@ import java.io.ObjectInput; import java.io.ObjectOutput; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.chrono.IsoChronology; import java.time.format.DateTimeFormatter; @@ -1923,10 +1924,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/OffsetTime.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/OffsetTime.java Mon Dec 23 14:05:20 2013 -0500 @@ -73,6 +73,7 @@ import java.io.ObjectInput; import java.io.ObjectOutput; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -1394,10 +1395,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/Period.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/Period.java Mon Dec 23 14:05:20 2013 -0500 @@ -69,6 +69,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.chrono.ChronoLocalDate; import java.time.chrono.ChronoPeriod; @@ -1056,10 +1057,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws java.io.InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/Year.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/Year.java Mon Dec 23 14:05:20 2013 -0500 @@ -74,6 +74,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.chrono.Chronology; import java.time.chrono.IsoChronology; @@ -1102,10 +1103,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/YearMonth.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/YearMonth.java Mon Dec 23 14:05:20 2013 -0500 @@ -77,6 +77,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.chrono.Chronology; import java.time.chrono.IsoChronology; @@ -1228,10 +1229,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/ZoneId.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/ZoneId.java Mon Dec 23 14:05:20 2013 -0500 @@ -64,6 +64,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.format.DateTimeFormatterBuilder; import java.time.format.TextStyle; @@ -622,10 +623,10 @@ //----------------------------------------------------------------------- /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/ZoneOffset.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/ZoneOffset.java Mon Dec 23 14:05:20 2013 -0500 @@ -70,6 +70,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.temporal.ChronoField; import java.time.temporal.Temporal; @@ -767,10 +768,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/ZoneRegion.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/ZoneRegion.java Mon Dec 23 14:05:20 2013 -0500 @@ -60,7 +60,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; -import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.zone.ZoneRules; import java.time.zone.ZoneRulesException; @@ -195,10 +195,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/ZonedDateTime.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/ZonedDateTime.java Mon Dec 23 14:05:20 2013 -0500 @@ -67,9 +67,9 @@ import java.io.DataOutput; import java.io.IOException; -import java.io.InvalidObjectException; import java.io.ObjectInput; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.chrono.ChronoZonedDateTime; import java.time.format.DateTimeFormatter; @@ -2224,10 +2224,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/chrono/AbstractChronology.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/AbstractChronology.java Mon Dec 23 14:05:20 2013 -0500 @@ -83,6 +83,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.ObjectStreamException; import java.io.Serializable; import java.time.DateTimeException; @@ -764,10 +765,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws java.io.InvalidObjectException always */ - private Object readResolve() throws ObjectStreamException { + private void readObject(ObjectInputStream s) throws ObjectStreamException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/ChronoLocalDateTimeImpl.java Mon Dec 23 14:05:20 2013 -0500 @@ -66,8 +66,8 @@ import java.io.IOException; import java.io.InvalidObjectException; import java.io.ObjectInput; +import java.io.ObjectInputStream; import java.io.ObjectOutput; -import java.io.ObjectStreamException; import java.io.Serializable; import java.time.LocalTime; import java.time.ZoneId; @@ -415,10 +415,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/chrono/ChronoPeriodImpl.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/ChronoPeriodImpl.java Mon Dec 23 14:05:20 2013 -0500 @@ -65,6 +65,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.ObjectStreamException; import java.io.Serializable; import java.time.DateTimeException; @@ -374,10 +375,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws ObjectStreamException { + private void readObject(ObjectInputStream s) throws ObjectStreamException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/ChronoZonedDateTimeImpl.java Mon Dec 23 14:05:20 2013 -0500 @@ -66,8 +66,8 @@ import java.io.IOException; import java.io.InvalidObjectException; import java.io.ObjectInput; +import java.io.ObjectInputStream; import java.io.ObjectOutput; -import java.io.ObjectStreamException; import java.io.Serializable; import java.time.Instant; import java.time.LocalDateTime; @@ -339,10 +339,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/chrono/HijrahChronology.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/HijrahChronology.java Mon Dec 23 14:05:20 2013 -0500 @@ -64,7 +64,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InvalidObjectException; -import java.io.ObjectStreamException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.security.AccessController; import java.security.PrivilegedActionException; @@ -1095,10 +1095,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); } }
--- a/src/share/classes/java/time/chrono/HijrahDate.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/HijrahDate.java Mon Dec 23 14:05:20 2013 -0500 @@ -67,6 +67,7 @@ import java.io.IOException; import java.io.InvalidObjectException; import java.io.ObjectInput; +import java.io.ObjectInputStream; import java.io.ObjectOutput; import java.io.Serializable; import java.time.Clock; @@ -607,13 +608,55 @@ return getChronology().period(Math.toIntExact(years), months, days); } + //------------------------------------------------------------------------- + /** + * Compares this date to another date, including the chronology. + * <p> + * Compares this {@code HijrahDate} with another ensuring that the date is the same. + * <p> + * Only objects of type {@code HijrahDate} are compared, other types return false. + * To compare the dates of two {@code TemporalAccessor} instances, including dates + * in two different chronologies, use {@link ChronoField#EPOCH_DAY} as a comparator. + * + * @param obj the object to check, null returns false + * @return true if this is equal to the other date and the Chronologies are equal + */ + @Override // override for performance + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof HijrahDate) { + HijrahDate otherDate = (HijrahDate) obj; + return prolepticYear == otherDate.prolepticYear + && this.monthOfYear == otherDate.monthOfYear + && this.dayOfMonth == otherDate.dayOfMonth + && getChronology().equals(otherDate.getChronology()); + } + return false; + } + + /** + * A hash code for this date. + * + * @return a suitable hash code based only on the Chronology and the date + */ + @Override // override for performance + public int hashCode() { + int yearValue = prolepticYear; + int monthValue = monthOfYear; + int dayValue = dayOfMonth; + return getChronology().getId().hashCode() ^ (yearValue & 0xFFFFF800) + ^ ((yearValue << 11) + (monthValue << 6) + (dayValue)); + } + //----------------------------------------------------------------------- /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/chrono/IsoChronology.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/IsoChronology.java Mon Dec 23 14:05:20 2013 -0500 @@ -62,7 +62,6 @@ package java.time.chrono; import java.io.InvalidObjectException; -import java.io.ObjectStreamException; import static java.time.temporal.ChronoField.DAY_OF_MONTH; import static java.time.temporal.ChronoField.ERA; import static java.time.temporal.ChronoField.MONTH_OF_YEAR; @@ -70,6 +69,7 @@ import static java.time.temporal.ChronoField.YEAR; import static java.time.temporal.ChronoField.YEAR_OF_ERA; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.Clock; import java.time.DateTimeException; @@ -603,10 +603,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); } }
--- a/src/share/classes/java/time/chrono/JapaneseChronology.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/JapaneseChronology.java Mon Dec 23 14:05:20 2013 -0500 @@ -66,6 +66,7 @@ import static java.time.temporal.ChronoUnit.MONTHS; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.Clock; import java.time.DateTimeException; @@ -523,10 +524,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); } }
--- a/src/share/classes/java/time/chrono/JapaneseDate.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/JapaneseDate.java Mon Dec 23 14:05:20 2013 -0500 @@ -68,6 +68,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.Clock; import java.time.DateTimeException; @@ -677,6 +678,18 @@ } //------------------------------------------------------------------------- + /** + * Compares this date to another date, including the chronology. + * <p> + * Compares this {@code JapaneseDate} with another ensuring that the date is the same. + * <p> + * Only objects of type {@code JapaneseDate} are compared, other types return false. + * To compare the dates of two {@code TemporalAccessor} instances, including dates + * in two different chronologies, use {@link ChronoField#EPOCH_DAY} as a comparator. + * + * @param obj the object to check, null returns false + * @return true if this is equal to the other date + */ @Override // override for performance public boolean equals(Object obj) { if (this == obj) { @@ -689,6 +702,11 @@ return false; } + /** + * A hash code for this date. + * + * @return a suitable hash code based only on the Chronology and the date + */ @Override // override for performance public int hashCode() { return getChronology().getId().hashCode() ^ isoDate.hashCode(); @@ -697,10 +715,10 @@ //----------------------------------------------------------------------- /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/chrono/JapaneseEra.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/JapaneseEra.java Mon Dec 23 14:05:20 2013 -0500 @@ -68,6 +68,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.ObjectStreamException; import java.io.Serializable; import java.time.DateTimeException; @@ -171,24 +172,6 @@ this.since = since; } - /** - * Returns the singleton {@code JapaneseEra} corresponding to this object. - * It's possible that this version of {@code JapaneseEra} doesn't support the latest era value. - * In that case, this method throws an {@code ObjectStreamException}. - * - * @return the singleton {@code JapaneseEra} for this object - * @throws ObjectStreamException if the deserialized object has any unknown numeric era value. - */ - private Object readResolve() throws ObjectStreamException { - try { - return of(eraValue); - } catch (DateTimeException e) { - InvalidObjectException ex = new InvalidObjectException("Invalid era"); - ex.initCause(e); - throw ex; - } - } - //----------------------------------------------------------------------- /** * Returns the Sun private Era instance corresponding to this {@code JapaneseEra}. @@ -212,7 +195,7 @@ * @throws DateTimeException if the value is invalid */ public static JapaneseEra of(int japaneseEra) { - if (japaneseEra < MEIJI.eraValue || japaneseEra > HEISEI.eraValue) { + if (japaneseEra < MEIJI.eraValue || japaneseEra + ERA_OFFSET - 1 >= KNOWN_ERAS.length) { throw new DateTimeException("Invalid era: " + japaneseEra); } return KNOWN_ERAS[ordinal(japaneseEra)]; @@ -372,6 +355,16 @@ //----------------------------------------------------------------------- /** + * Defend against malicious streams. + * + * @throws InvalidObjectException always + */ + private void readObject(ObjectInputStream s) throws InvalidObjectException { + throw new InvalidObjectException("Deserialization via serialization delegate"); + } + + //----------------------------------------------------------------------- + /** * Writes the object using a * <a href="../../../serialized-form.html#java.time.chrono.Ser">dedicated serialized form</a>. * @serialData
--- a/src/share/classes/java/time/chrono/MinguoChronology.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/MinguoChronology.java Mon Dec 23 14:05:20 2013 -0500 @@ -57,10 +57,10 @@ package java.time.chrono; import java.io.InvalidObjectException; -import java.io.ObjectStreamException; import static java.time.temporal.ChronoField.PROLEPTIC_MONTH; import static java.time.temporal.ChronoField.YEAR; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.Clock; import java.time.DateTimeException; @@ -354,10 +354,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); } }
--- a/src/share/classes/java/time/chrono/MinguoDate.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/MinguoDate.java Mon Dec 23 14:05:20 2013 -0500 @@ -65,6 +65,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.Clock; import java.time.DateTimeException; @@ -439,6 +440,18 @@ } //------------------------------------------------------------------------- + /** + * Compares this date to another date, including the chronology. + * <p> + * Compares this {@code MinguoDate} with another ensuring that the date is the same. + * <p> + * Only objects of type {@code MinguoDate} are compared, other types return false. + * To compare the dates of two {@code TemporalAccessor} instances, including dates + * in two different chronologies, use {@link ChronoField#EPOCH_DAY} as a comparator. + * + * @param obj the object to check, null returns false + * @return true if this is equal to the other date + */ @Override // override for performance public boolean equals(Object obj) { if (this == obj) { @@ -451,6 +464,11 @@ return false; } + /** + * A hash code for this date. + * + * @return a suitable hash code based only on the Chronology and the date + */ @Override // override for performance public int hashCode() { return getChronology().getId().hashCode() ^ isoDate.hashCode(); @@ -459,10 +477,10 @@ //----------------------------------------------------------------------- /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/chrono/ThaiBuddhistChronology.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/ThaiBuddhistChronology.java Mon Dec 23 14:05:20 2013 -0500 @@ -57,10 +57,10 @@ package java.time.chrono; import java.io.InvalidObjectException; -import java.io.ObjectStreamException; import static java.time.temporal.ChronoField.PROLEPTIC_MONTH; import static java.time.temporal.ChronoField.YEAR; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.Clock; import java.time.DateTimeException; @@ -390,10 +390,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); } }
--- a/src/share/classes/java/time/chrono/ThaiBuddhistDate.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/chrono/ThaiBuddhistDate.java Mon Dec 23 14:05:20 2013 -0500 @@ -65,6 +65,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.Clock; import java.time.DateTimeException; @@ -439,6 +440,18 @@ } //------------------------------------------------------------------------- + /** + * Compares this date to another date, including the chronology. + * <p> + * Compares this {@code ThaiBuddhistDate} with another ensuring that the date is the same. + * <p> + * Only objects of type {@code ThaiBuddhistDate} are compared, other types return false. + * To compare the dates of two {@code TemporalAccessor} instances, including dates + * in two different chronologies, use {@link ChronoField#EPOCH_DAY} as a comparator. + * + * @param obj the object to check, null returns false + * @return true if this is equal to the other date + */ @Override // override for performance public boolean equals(Object obj) { if (this == obj) { @@ -451,6 +464,11 @@ return false; } + /** + * A hash code for this date. + * + * @return a suitable hash code based only on the Chronology and the date + */ @Override // override for performance public int hashCode() { return getChronology().getId().hashCode() ^ isoDate.hashCode(); @@ -459,10 +477,10 @@ //----------------------------------------------------------------------- /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/temporal/ValueRange.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/temporal/ValueRange.java Mon Dec 23 14:05:20 2013 -0500 @@ -61,7 +61,9 @@ */ package java.time.temporal; +import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.DateTimeException; @@ -338,18 +340,27 @@ } } + //----------------------------------------------------------------------- /** - * Return the ValueRange for the serialized values. - * The values are validated according to the constraints of the {@link #of} - * factory method. - * @return the ValueRange for the serialized fields - * @throws InvalidObjectException if the serialized object has invalid values + * Restore the state of an ValueRange from the stream. + * Check that the values are valid. + * @throws InvalidObjectException if + * the smallest minimum is greater than the smallest maximum, + * or the smallest maximum is greater than the largest maximum + * or the largest minimum is greater than the largest maximum */ - private Object readResolve() throws InvalidObjectException { - try { - return of(minSmallest, minLargest, maxSmallest, maxLargest); - } catch (IllegalArgumentException iae) { - throw new InvalidObjectException("Invalid serialized ValueRange: " + iae.getMessage()); + private void readObject(ObjectInputStream s) + throws IOException, ClassNotFoundException, InvalidObjectException + { + s.defaultReadObject(); + if (minSmallest > minLargest) { + throw new InvalidObjectException("Smallest minimum value must be less than largest minimum value"); + } + if (maxSmallest > maxLargest) { + throw new InvalidObjectException("Smallest maximum value must be less than largest maximum value"); + } + if (minLargest > maxLargest) { + throw new InvalidObjectException("Minimum value must be less than maximum value"); } }
--- a/src/share/classes/java/time/temporal/WeekFields.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/temporal/WeekFields.java Mon Dec 23 14:05:20 2013 -0500 @@ -72,7 +72,9 @@ import static java.time.temporal.ChronoUnit.WEEKS; import static java.time.temporal.ChronoUnit.YEARS; +import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.DateTimeException; import java.time.DayOfWeek; @@ -340,6 +342,25 @@ //----------------------------------------------------------------------- /** + * Restore the state of a WeekFields from the stream. + * Check that the values are valid. + * @throws InvalidObjectException if the serialized object has an invalid + * value for firstDayOfWeek or minimalDays. + */ + private void readObject(ObjectInputStream s) + throws IOException, ClassNotFoundException, InvalidObjectException + { + s.defaultReadObject(); + if (firstDayOfWeek == null) { + throw new InvalidObjectException("firstDayOfWeek is null"); + } + + if (minimalDays < 1 || minimalDays > 7) { + throw new InvalidObjectException("Minimal number of days is invalid"); + } + } + + /** * Return the singleton WeekFields associated with the * {@code firstDayOfWeek} and {@code minimalDays}. * @return the singleton WeekFields for the firstDayOfWeek and minimalDays.
--- a/src/share/classes/java/time/zone/ZoneOffsetTransition.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/zone/ZoneOffsetTransition.java Mon Dec 23 14:05:20 2013 -0500 @@ -65,6 +65,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.Duration; import java.time.Instant; @@ -172,10 +173,9 @@ //----------------------------------------------------------------------- /** * Defend against malicious streams. - * @return never * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/zone/ZoneOffsetTransitionRule.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/zone/ZoneOffsetTransitionRule.java Mon Dec 23 14:05:20 2013 -0500 @@ -68,6 +68,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.DayOfWeek; import java.time.LocalDate; @@ -233,10 +234,10 @@ //----------------------------------------------------------------------- /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/time/zone/ZoneRules.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/time/zone/ZoneRules.java Mon Dec 23 14:05:20 2013 -0500 @@ -65,6 +65,7 @@ import java.io.DataOutput; import java.io.IOException; import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.Serializable; import java.time.Duration; import java.time.Instant; @@ -317,10 +318,10 @@ /** * Defend against malicious streams. - * @return never + * * @throws InvalidObjectException always */ - private Object readResolve() throws InvalidObjectException { + private void readObject(ObjectInputStream s) throws InvalidObjectException { throw new InvalidObjectException("Deserialization via serialization delegate"); }
--- a/src/share/classes/java/util/concurrent/ForkJoinPool.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/util/concurrent/ForkJoinPool.java Mon Dec 23 14:05:20 2013 -0500 @@ -49,6 +49,9 @@ import java.util.concurrent.RunnableFuture; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; +import java.security.AccessControlContext; +import java.security.ProtectionDomain; +import java.security.Permissions; /** * An {@link ExecutorService} for running {@link ForkJoinTask}s. @@ -140,6 +143,9 @@ * <li>{@code java.util.concurrent.ForkJoinPool.common.exceptionHandler} * - the class name of a {@link UncaughtExceptionHandler} * </ul> + * If a {@link SecurityManager} is present and no factory is + * specified, then the default pool uses a factory supplying + * threads that have no {@link Permissions} enabled. * The system class loader is used to load these classes. * Upon any error in establishing these settings, default parameters * are used. It is possible to disable or limit the use of threads in @@ -501,6 +507,16 @@ * task status checks) in inapplicable cases amounts to an odd * form of limited spin-wait before blocking in ForkJoinTask.join. * + * As a more appropriate default in managed environments, unless + * overridden by system properties, we use workers of subclass + * InnocuousForkJoinWorkerThread when there is a SecurityManager + * present. These workers have no permissions set, do not belong + * to any user-defined ThreadGroup, and erase all ThreadLocals + * after executing any top-level task (see WorkQueue.runTask). The + * associated mechanics (mainly in ForkJoinWorkerThread) may be + * JVM-dependent and must access particular Thread class fields to + * achieve this effect. + * * Style notes * =========== * @@ -882,6 +898,7 @@ */ final void runTask(ForkJoinTask<?> task) { if ((currentSteal = task) != null) { + ForkJoinWorkerThread thread; task.doExec(); ForkJoinTask<?>[] a = array; int md = mode; @@ -899,6 +916,8 @@ t.doExec(); } } + if ((thread = owner) != null) // no need to do in finally clause + thread.afterTopLevelExec(); } } @@ -1155,7 +1174,7 @@ * Increment for seed generators. See class ThreadLocal for * explanation. */ - private static final int SEED_INCREMENT = 0x61c88647; + private static final int SEED_INCREMENT = 0x9e3779b9; /* * Bits and masks for control variables @@ -2084,12 +2103,10 @@ ((c & ~AC_MASK) | ((c & AC_MASK) + AC_UNIT)))); } - if ((b = q.base) - q.top < 0 && (t = q.pollAt(b)) != null) { - (w.currentSteal = t).doExec(); - w.currentSteal = ps; - } + if ((b = q.base) - q.top < 0 && (t = q.pollAt(b)) != null) + w.runTask(t); } - else if (active) { // decrement active count without queuing + else if (active) { // decrement active count without queuing long nc = ((c = ctl) & ~AC_MASK) | ((c & AC_MASK) - AC_UNIT); if ((int)(nc >> AC_SHIFT) + parallelism == 0) break; // bypass decrement-then-increment @@ -3282,8 +3299,7 @@ */ private static ForkJoinPool makeCommonPool() { int parallelism = -1; - ForkJoinWorkerThreadFactory factory - = defaultForkJoinWorkerThreadFactory; + ForkJoinWorkerThreadFactory factory = null; UncaughtExceptionHandler handler = null; try { // ignore exceptions in accessing/parsing properties String pp = System.getProperty @@ -3302,7 +3318,12 @@ getSystemClassLoader().loadClass(hp).newInstance()); } catch (Exception ignore) { } - + if (factory == null) { + if (System.getSecurityManager() == null) + factory = defaultForkJoinWorkerThreadFactory; + else // use security-managed default + factory = new InnocuousForkJoinWorkerThreadFactory(); + } if (parallelism < 0 && // default 1 less than #cores (parallelism = Runtime.getRuntime().availableProcessors() - 1) <= 0) parallelism = 1; @@ -3312,4 +3333,38 @@ "ForkJoinPool.commonPool-worker-"); } + /** + * Factory for innocuous worker threads + */ + static final class InnocuousForkJoinWorkerThreadFactory + implements ForkJoinWorkerThreadFactory { + + /** + * An ACC to restrict permissions for the factory itself. + * The constructed workers have no permissions set. + */ + private static final AccessControlContext innocuousAcc; + static { + Permissions innocuousPerms = new Permissions(); + innocuousPerms.add(modifyThreadPermission); + innocuousPerms.add(new RuntimePermission( + "enableContextClassLoaderOverride")); + innocuousPerms.add(new RuntimePermission( + "modifyThreadGroup")); + innocuousAcc = new AccessControlContext(new ProtectionDomain[] { + new ProtectionDomain(null, innocuousPerms) + }); + } + + public final ForkJoinWorkerThread newThread(ForkJoinPool pool) { + return (ForkJoinWorkerThread.InnocuousForkJoinWorkerThread) + java.security.AccessController.doPrivileged( + new java.security.PrivilegedAction<ForkJoinWorkerThread>() { + public ForkJoinWorkerThread run() { + return new ForkJoinWorkerThread. + InnocuousForkJoinWorkerThread(pool); + }}, innocuousAcc); + } + } + }
--- a/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java Mon Dec 23 14:05:20 2013 -0500 @@ -35,6 +35,9 @@ package java.util.concurrent; +import java.security.AccessControlContext; +import java.security.ProtectionDomain; + /** * A thread managed by a {@link ForkJoinPool}, which executes * {@link ForkJoinTask}s. @@ -61,6 +64,10 @@ * completes. This leads to a visibility race, that is tolerated * by requiring that the workQueue field is only accessed by the * owning thread. + * + * Support for (non-public) subclass InnocuousForkJoinWorkerThread + * requires that we break quite a lot of encapulation (via Unsafe) + * both here and in the subclass to access and set Thread fields. */ final ForkJoinPool pool; // the pool this thread works in @@ -80,6 +87,18 @@ } /** + * Version for InnocuousForkJoinWorkerThread + */ + ForkJoinWorkerThread(ForkJoinPool pool, ThreadGroup threadGroup, + AccessControlContext acc) { + super(threadGroup, null, "aForkJoinWorkerThread"); + U.putOrderedObject(this, INHERITEDACCESSCONTROLCONTEXT, acc); + eraseThreadLocals(); // clear before registering + this.pool = pool; + this.workQueue = pool.registerWorker(this); + } + + /** * Returns the pool hosting this thread. * * @return the pool @@ -131,21 +150,128 @@ * {@link ForkJoinTask}s. */ public void run() { - Throwable exception = null; - try { - onStart(); - pool.runWorker(workQueue); - } catch (Throwable ex) { - exception = ex; - } finally { + if (workQueue.array == null) { // only run once + Throwable exception = null; try { - onTermination(exception); + onStart(); + pool.runWorker(workQueue); } catch (Throwable ex) { - if (exception == null) - exception = ex; + exception = ex; } finally { - pool.deregisterWorker(this, exception); + try { + onTermination(exception); + } catch (Throwable ex) { + if (exception == null) + exception = ex; + } finally { + pool.deregisterWorker(this, exception); + } } } } + + /** + * Erases ThreadLocals by nulling out Thread maps + */ + final void eraseThreadLocals() { + U.putObject(this, THREADLOCALS, null); + U.putObject(this, INHERITABLETHREADLOCALS, null); + } + + /** + * Non-public hook method for InnocuousForkJoinWorkerThread + */ + void afterTopLevelExec() { + } + + // Set up to allow setting thread fields in constructor + private static final sun.misc.Unsafe U; + private static final long THREADLOCALS; + private static final long INHERITABLETHREADLOCALS; + private static final long INHERITEDACCESSCONTROLCONTEXT; + static { + try { + U = sun.misc.Unsafe.getUnsafe(); + Class<?> tk = Thread.class; + THREADLOCALS = U.objectFieldOffset + (tk.getDeclaredField("threadLocals")); + INHERITABLETHREADLOCALS = U.objectFieldOffset + (tk.getDeclaredField("inheritableThreadLocals")); + INHERITEDACCESSCONTROLCONTEXT = U.objectFieldOffset + (tk.getDeclaredField("inheritedAccessControlContext")); + + } catch (Exception e) { + throw new Error(e); + } + } + + /** + * A worker thread that has no permissions, is not a member of any + * user-defined ThreadGroup, and erases all ThreadLocals after + * running each top-level task. + */ + static final class InnocuousForkJoinWorkerThread extends ForkJoinWorkerThread { + /** The ThreadGroup for all InnocuousForkJoinWorkerThreads */ + private static final ThreadGroup innocuousThreadGroup = + createThreadGroup(); + + /** An AccessControlContext supporting no privileges */ + private static final AccessControlContext INNOCUOUS_ACC = + new AccessControlContext( + new ProtectionDomain[] { + new ProtectionDomain(null, null) + }); + + InnocuousForkJoinWorkerThread(ForkJoinPool pool) { + super(pool, innocuousThreadGroup, INNOCUOUS_ACC); + } + + @Override // to erase ThreadLocals + void afterTopLevelExec() { + eraseThreadLocals(); + } + + @Override // to always report system loader + public ClassLoader getContextClassLoader() { + return ClassLoader.getSystemClassLoader(); + } + + @Override // to silently fail + public void setUncaughtExceptionHandler(UncaughtExceptionHandler x) { } + + @Override // paranoically + public void setContextClassLoader(ClassLoader cl) { + throw new SecurityException("setContextClassLoader"); + } + + /** + * Returns a new group with the system ThreadGroup (the + * topmost, parentless group) as parent. Uses Unsafe to + * traverse Thread group and ThreadGroup parent fields. + */ + private static ThreadGroup createThreadGroup() { + try { + sun.misc.Unsafe u = sun.misc.Unsafe.getUnsafe(); + Class<?> tk = Thread.class; + Class<?> gk = ThreadGroup.class; + long tg = u.objectFieldOffset(tk.getDeclaredField("group")); + long gp = u.objectFieldOffset(gk.getDeclaredField("parent")); + ThreadGroup group = (ThreadGroup) + u.getObject(Thread.currentThread(), tg); + while (group != null) { + ThreadGroup parent = (ThreadGroup)u.getObject(group, gp); + if (parent == null) + return new ThreadGroup(group, + "InnocuousForkJoinWorkerThreadGroup"); + group = parent; + } + } catch (Exception e) { + throw new Error(e); + } + // fall through if null as cannot-happen safeguard + throw new Error("Cannot create ThreadGroup"); + } + } + } +
--- a/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/provider/certpath/OCSPResponse.java Mon Dec 23 14:05:20 2013 -0500 @@ -427,9 +427,14 @@ if (signerCert == null) { // Add the Issuing CA cert and/or Trusted Responder cert to the list // of certs from the OCSP response - certs.add((X509CertImpl) issuerCert); - if (responderCert != null) { - certs.add((X509CertImpl) responderCert); + try { + certs.add(X509CertImpl.toImpl(issuerCert)); + if (responderCert != null) { + certs.add(X509CertImpl.toImpl(responderCert)); + } + } catch (CertificateException ce) { + throw new CertPathValidatorException( + "Invalid issuer or trusted responder certificate", ce); } if (responderName != null) {
--- a/src/share/classes/sun/security/ssl/ProtocolVersion.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/ssl/ProtocolVersion.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2013, 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 @@ -80,8 +80,8 @@ // maximum version we implement (TLS 1.2) final static ProtocolVersion MAX = TLS12; - // ProtocolVersion to use by default (TLS 1.0) - final static ProtocolVersion DEFAULT = TLS10; + // ProtocolVersion to use by default (TLS 1.2) + final static ProtocolVersion DEFAULT = TLS12; // Default version for hello messages (SSLv2Hello) final static ProtocolVersion DEFAULT_HELLO = FIPS ? TLS10 : SSL30;
--- a/src/share/classes/sun/security/ssl/SSLContextImpl.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/ssl/SSLContextImpl.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2013, 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 @@ -36,6 +36,7 @@ import javax.net.ssl.*; import sun.security.provider.certpath.AlgorithmChecker; +import sun.security.action.GetPropertyAction; public abstract class SSLContextImpl extends SSLContextSpi { @@ -421,22 +422,21 @@ */ /* - * The conservative SSLContext implementation for TLS, SSL, SSLv3 and - * TLS10 algorithm. + * The base abstract SSLContext implementation. * - * This is a super class of DefaultSSLContext and TLS10Context. + * This abstract class encapsulates supported and the default server + * SSL parameters. * * @see SSLContext */ - private static class ConservativeSSLContext extends SSLContextImpl { + private abstract static class AbstractSSLContext extends SSLContextImpl { // parameters - private static SSLParameters defaultServerSSLParams; - private static SSLParameters defaultClientSSLParams; - private static SSLParameters supportedSSLParams; + private final static SSLParameters defaultServerSSLParams; + private final static SSLParameters supportedSSLParams; static { + supportedSSLParams = new SSLParameters(); if (SunJSSE.isFIPS()) { - supportedSSLParams = new SSLParameters(); supportedSSLParams.setProtocols(new String[] { ProtocolVersion.TLS10.name, ProtocolVersion.TLS11.name, @@ -444,14 +444,7 @@ }); defaultServerSSLParams = supportedSSLParams; - - defaultClientSSLParams = new SSLParameters(); - defaultClientSSLParams.setProtocols(new String[] { - ProtocolVersion.TLS10.name - }); - } else { - supportedSSLParams = new SSLParameters(); supportedSSLParams.setProtocols(new String[] { ProtocolVersion.SSL20Hello.name, ProtocolVersion.SSL30.name, @@ -461,12 +454,6 @@ }); defaultServerSSLParams = supportedSSLParams; - - defaultClientSSLParams = new SSLParameters(); - defaultClientSSLParams.setProtocols(new String[] { - ProtocolVersion.SSL30.name, - ProtocolVersion.TLS10.name - }); } } @@ -476,22 +463,205 @@ } @Override - SSLParameters getDefaultClientSSLParams() { - return defaultClientSSLParams; - } - - @Override SSLParameters getSupportedSSLParams() { return supportedSSLParams; } } /* - * The SSLContext implementation for default algorithm + * The SSLContext implementation for SSLv3 and TLS10 algorithm + * + * @see SSLContext + */ + public static final class TLS10Context extends AbstractSSLContext { + private final static SSLParameters defaultClientSSLParams; + + static { + defaultClientSSLParams = new SSLParameters(); + if (SunJSSE.isFIPS()) { + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name + }); + + } else { + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name + }); + } + } + + @Override + SSLParameters getDefaultClientSSLParams() { + return defaultClientSSLParams; + } + } + + /* + * The SSLContext implementation for TLS11 algorithm + * + * @see SSLContext + */ + public static final class TLS11Context extends AbstractSSLContext { + private final static SSLParameters defaultClientSSLParams; + + static { + defaultClientSSLParams = new SSLParameters(); + if (SunJSSE.isFIPS()) { + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name + }); + + } else { + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name + }); + } + } + + @Override + SSLParameters getDefaultClientSSLParams() { + return defaultClientSSLParams; + } + } + + /* + * The SSLContext implementation for TLS12 algorithm + * + * @see SSLContext + */ + public static final class TLS12Context extends AbstractSSLContext { + private final static SSLParameters defaultClientSSLParams; + + static { + defaultClientSSLParams = new SSLParameters(); + if (SunJSSE.isFIPS()) { + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + + } else { + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + } + } + + @Override + SSLParameters getDefaultClientSSLParams() { + return defaultClientSSLParams; + } + } + + /* + * The SSLContext implementation for customized TLS protocols * * @see SSLContext */ - public static final class DefaultSSLContext extends ConservativeSSLContext { + private static class CustomizedSSLContext extends AbstractSSLContext { + private final static String PROPERTY_NAME = "jdk.tls.client.protocols"; + private final static SSLParameters defaultClientSSLParams; + private static IllegalArgumentException reservedException = null; + + // Don't want a java.lang.LinkageError for illegal system property. + // + // Please don't throw exception in this static block. Otherwise, + // java.lang.LinkageError may be thrown during the instantiation of + // the provider service. Instead, let's handle the initialization + // exception in constructor. + static { + String property = AccessController.doPrivileged( + new GetPropertyAction(PROPERTY_NAME)); + defaultClientSSLParams = new SSLParameters(); + if (property == null || property.length() == 0) { + // the default enabled client TLS protocols + if (SunJSSE.isFIPS()) { + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + + } else { + defaultClientSSLParams.setProtocols(new String[] { + ProtocolVersion.SSL30.name, + ProtocolVersion.TLS10.name, + ProtocolVersion.TLS11.name, + ProtocolVersion.TLS12.name + }); + } + } else { + // remove double quote marks from beginning/end of the property + if (property.charAt(0) == '"' && + property.charAt(property.length() - 1) == '"') { + property = property.substring(1, property.length() - 1); + } + + String[] protocols = property.split(","); + for (int i = 0; i < protocols.length; i++) { + protocols[i] = protocols[i].trim(); + // Is it a supported protocol name? + try { + ProtocolVersion.valueOf(protocols[i]); + } catch (IllegalArgumentException iae) { + reservedException = new IllegalArgumentException( + PROPERTY_NAME + ": " + protocols[i] + + " is not a standard SSL protocol name", iae); + } + } + + if ((reservedException == null) && SunJSSE.isFIPS()) { + for (String protocol : protocols) { + if (ProtocolVersion.SSL20Hello.name.equals(protocol) || + ProtocolVersion.SSL30.name.equals(protocol)) { + reservedException = new IllegalArgumentException( + PROPERTY_NAME + ": " + protocol + + " is not FIPS compliant"); + } + } + } + + if (reservedException == null) { + defaultClientSSLParams.setProtocols(protocols); + } + } + } + + protected CustomizedSSLContext() { + if (reservedException != null) { + throw reservedException; + } + } + + @Override + SSLParameters getDefaultClientSSLParams() { + return defaultClientSSLParams; + } + } + + /* + * The SSLContext implementation for default "TLS" algorithm + * + * @see SSLContext + */ + public static final class TLSContext extends CustomizedSSLContext { + // use the default constructor and methods + } + + /* + * The SSLContext implementation for default "Default" algorithm + * + * @see SSLContext + */ + public static final class DefaultSSLContext extends CustomizedSSLContext { private static final String NONE = "NONE"; private static final String P11KEYSTORE = "PKCS11"; @@ -652,147 +822,6 @@ } } - /* - * The SSLContext implementation for TLS, SSL, SSLv3 and TLS10 algorithm - * - * @see SSLContext - */ - public static final class TLS10Context extends ConservativeSSLContext { - // use the default constructor and methods - } - - /* - * The SSLContext implementation for TLS11 algorithm - * - * @see SSLContext - */ - public static final class TLS11Context extends SSLContextImpl { - // parameters - private static SSLParameters defaultServerSSLParams; - private static SSLParameters defaultClientSSLParams; - private static SSLParameters supportedSSLParams; - - static { - if (SunJSSE.isFIPS()) { - supportedSSLParams = new SSLParameters(); - supportedSSLParams.setProtocols(new String[] { - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name, - ProtocolVersion.TLS12.name - }); - - defaultServerSSLParams = supportedSSLParams; - - defaultClientSSLParams = new SSLParameters(); - defaultClientSSLParams.setProtocols(new String[] { - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name - }); - - } else { - supportedSSLParams = new SSLParameters(); - supportedSSLParams.setProtocols(new String[] { - ProtocolVersion.SSL20Hello.name, - ProtocolVersion.SSL30.name, - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name, - ProtocolVersion.TLS12.name - }); - - defaultServerSSLParams = supportedSSLParams; - - defaultClientSSLParams = new SSLParameters(); - defaultClientSSLParams.setProtocols(new String[] { - ProtocolVersion.SSL30.name, - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name - }); - } - } - - @Override - SSLParameters getDefaultServerSSLParams() { - return defaultServerSSLParams; - } - - @Override - SSLParameters getDefaultClientSSLParams() { - return defaultClientSSLParams; - } - - @Override - SSLParameters getSupportedSSLParams() { - return supportedSSLParams; - } - } - - /* - * The SSLContext implementation for TLS12 algorithm - * - * @see SSLContext - */ - public static final class TLS12Context extends SSLContextImpl { - // parameters - private static SSLParameters defaultServerSSLParams; - private static SSLParameters defaultClientSSLParams; - private static SSLParameters supportedSSLParams; - - static { - if (SunJSSE.isFIPS()) { - supportedSSLParams = new SSLParameters(); - supportedSSLParams.setProtocols(new String[] { - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name, - ProtocolVersion.TLS12.name - }); - - defaultServerSSLParams = supportedSSLParams; - - defaultClientSSLParams = new SSLParameters(); - defaultClientSSLParams.setProtocols(new String[] { - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name, - ProtocolVersion.TLS12.name - }); - - } else { - supportedSSLParams = new SSLParameters(); - supportedSSLParams.setProtocols(new String[] { - ProtocolVersion.SSL20Hello.name, - ProtocolVersion.SSL30.name, - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name, - ProtocolVersion.TLS12.name - }); - - defaultServerSSLParams = supportedSSLParams; - - defaultClientSSLParams = new SSLParameters(); - defaultClientSSLParams.setProtocols(new String[] { - ProtocolVersion.SSL30.name, - ProtocolVersion.TLS10.name, - ProtocolVersion.TLS11.name, - ProtocolVersion.TLS12.name - }); - } - } - - @Override - SSLParameters getDefaultServerSSLParams() { - return defaultServerSSLParams; - } - - @Override - SSLParameters getDefaultClientSSLParams() { - return defaultClientSSLParams; - } - - @Override - SSLParameters getSupportedSSLParams() { - return supportedSSLParams; - } - } - }
--- a/src/share/classes/sun/security/ssl/SunJSSE.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/ssl/SunJSSE.java Mon Dec 23 14:05:20 2013 -0500 @@ -60,7 +60,8 @@ private static final long serialVersionUID = 3231825739635378733L; private static String info = "Sun JSSE provider" + - "(PKCS12, SunX509 key/trust factories, SSLv3, TLSv1)"; + "(PKCS12, SunX509/PKIX key/trust factories, " + + "SSLv3/TLSv1/TLSv1.1/TLSv1.2)"; private static String fipsInfo = "Sun JSSE provider (FIPS mode, crypto provider "; @@ -208,16 +209,17 @@ put("SSLContext.TLSv1", "sun.security.ssl.SSLContextImpl$TLS10Context"); - put("Alg.Alias.SSLContext.TLS", "TLSv1"); - if (isfips == false) { - put("Alg.Alias.SSLContext.SSL", "TLSv1"); - put("Alg.Alias.SSLContext.SSLv3", "TLSv1"); - } - put("SSLContext.TLSv1.1", "sun.security.ssl.SSLContextImpl$TLS11Context"); put("SSLContext.TLSv1.2", "sun.security.ssl.SSLContextImpl$TLS12Context"); + put("SSLContext.TLS", + "sun.security.ssl.SSLContextImpl$TLSContext"); + if (isfips == false) { + put("Alg.Alias.SSLContext.SSL", "TLS"); + put("Alg.Alias.SSLContext.SSLv3", "TLSv1"); + } + put("SSLContext.Default", "sun.security.ssl.SSLContextImpl$DefaultSSLContext");
--- a/src/share/classes/sun/security/tools/keytool/Resources_de.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_de.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "Generiert ein Zertifikat aus einer Zertifikatanforderung"}, //-gencert {"Generates.CRL", "Generiert eine CRL"}, //-gencrl + {"Generated.keyAlgName.secret.key", + "{0} Secret Key generiert"}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "{0}-Bit {1} Secret Key generiert"}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "Importiert Eintr\u00E4ge aus einer Identity-Datenbank im JDK 1.1.x-Stil"}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "Importiert ein Zertifikat oder eine Zertifikatkette"}, //-importcert + {"Imports.a.password", + "Importiert ein Kennwort"}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "Importiert einen oder alle Eintr\u00E4ge aus einem anderen Keystore"}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "Sie m\u00FCssen einen Alias angeben"}, {"Keystore.password.must.be.at.least.6.characters", "Keystore-Kennwort muss mindestens sechs Zeichen lang sein"}, + {"Enter.the.password.to.be.stored.", + "Geben Sie das Kennwort ein, das gespeichert werden soll: "}, {"Enter.keystore.password.", "Keystore-Kennwort eingeben: "}, {"Enter.source.keystore.password.", "Quell-Keystore-Kennwort eingeben: "}, {"Enter.destination.keystore.password.", "Ziel-Keystore-Kennwort eingeben: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "Neues {0}: "}, {"Passwords.must.differ", "Kennw\u00F6rter m\u00FCssen sich unterscheiden"}, {"Re.enter.new.prompt.", "Neues {0} erneut eingeben: "}, + {"Re.enter.passpword.", "Geben Sie das Kennwort erneut ein: "}, {"Re.enter.new.password.", "Neues Kennwort erneut eingeben: "}, {"They.don.t.match.Try.again", "Keine \u00DCbereinstimmung. Wiederholen Sie den Vorgang"}, {"Enter.prompt.alias.name.", "{0}-Aliasnamen eingeben: "},
--- a/src/share/classes/sun/security/tools/keytool/Resources_es.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_es.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "Genera un certificado a partir de una solicitud de certificado"}, //-gencert {"Generates.CRL", "Genera CRL"}, //-gencrl + {"Generated.keyAlgName.secret.key", + "Clave secreta {0} generada"}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "Clave secreta {1} de {0} bits generada"}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "Importa entradas desde una base de datos de identidades JDK 1.1.x-style"}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "Importa un certificado o una cadena de certificados"}, //-importcert + {"Imports.a.password", + "Importa una contrase\u00F1a"}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "Importa una o todas las entradas desde otro almac\u00E9n de claves"}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "Se debe especificar un alias"}, {"Keystore.password.must.be.at.least.6.characters", "La contrase\u00F1a del almac\u00E9n de claves debe tener al menos 6 caracteres"}, + {"Enter.the.password.to.be.stored.", + "Introduzca la contrase\u00F1a que se va a almacenar: "}, {"Enter.keystore.password.", "Introduzca la contrase\u00F1a del almac\u00E9n de claves: "}, {"Enter.source.keystore.password.", "Introduzca la contrase\u00F1a de almac\u00E9n de claves de origen: "}, {"Enter.destination.keystore.password.", "Introduzca la contrase\u00F1a de almac\u00E9n de claves de destino: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "Nuevo {0}: "}, {"Passwords.must.differ", "Las contrase\u00F1as deben ser distintas"}, {"Re.enter.new.prompt.", "Vuelva a escribir el nuevo {0}: "}, + {"Re.enter.passpword.", "Vuelva a introducir la contrase\u00F1a: "}, {"Re.enter.new.password.", "Volver a escribir la contrase\u00F1a nueva: "}, {"They.don.t.match.Try.again", "No coinciden. Int\u00E9ntelo de nuevo"}, {"Enter.prompt.alias.name.", "Escriba el nombre de alias de {0}: "},
--- a/src/share/classes/sun/security/tools/keytool/Resources_fr.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_fr.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "G\u00E9n\u00E8re le certificat \u00E0 partir d'une demande de certificat"}, //-gencert {"Generates.CRL", "G\u00E9n\u00E8re la liste des certificats r\u00E9voqu\u00E9s (CRL)"}, //-gencrl + {"Generated.keyAlgName.secret.key", + "Cl\u00E9 secr\u00E8te {0} g\u00E9n\u00E9r\u00E9e"}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "Cl\u00E9 secr\u00E8te {0} bits {1} g\u00E9n\u00E9r\u00E9e"}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "Importe les entr\u00E9es \u00E0 partir d'une base de donn\u00E9es d'identit\u00E9s de type JDK 1.1.x"}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "Importe un certificat ou une cha\u00EEne de certificat"}, //-importcert + {"Imports.a.password", + "Importe un mot de passe"}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "Importe une entr\u00E9e ou la totalit\u00E9 des entr\u00E9es depuis un autre fichier de cl\u00E9s"}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "L'alias doit \u00EAtre sp\u00E9cifi\u00E9"}, {"Keystore.password.must.be.at.least.6.characters", "Un mot de passe de fichier de cl\u00E9s doit comporter au moins 6 caract\u00E8res"}, + {"Enter.the.password.to.be.stored.", + "Saisissez le mot de passe \u00E0 stocker : "}, {"Enter.keystore.password.", "Entrez le mot de passe du fichier de cl\u00E9s : "}, {"Enter.source.keystore.password.", "Entrez le mot de passe du fichier de cl\u00E9s source\u00A0: "}, {"Enter.destination.keystore.password.", "Entrez le mot de passe du fichier de cl\u00E9s de destination\u00A0: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "Nouveau {0} : "}, {"Passwords.must.differ", "Les mots de passe doivent diff\u00E9rer"}, {"Re.enter.new.prompt.", "Indiquez encore le nouveau {0} : "}, + {"Re.enter.passpword.", "R\u00E9p\u00E9tez le mot de passe : "}, {"Re.enter.new.password.", "Ressaisissez le nouveau mot de passe : "}, {"They.don.t.match.Try.again", "Ils sont diff\u00E9rents. R\u00E9essayez."}, {"Enter.prompt.alias.name.", "Indiquez le nom d''alias {0} : "},
--- a/src/share/classes/sun/security/tools/keytool/Resources_it.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_it.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "Genera un certificato da una richiesta di certificato"}, //-gencert {"Generates.CRL", "Genera CRL"}, //-gencrl + {"Generated.keyAlgName.secret.key", + "Generata chiave segreta {0}"}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "Generata chiave segreta {1} a {0} bit"}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "Importa le voci da un database delle identit\u00E0 di tipo JDK 1.1.x"}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "Importa un certificato o una catena di certificati"}, //-importcert + {"Imports.a.password", + "Importa una password"}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "Importa una o tutte le voci da un altro keystore"}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "\u00C8 necessario specificare l'alias"}, {"Keystore.password.must.be.at.least.6.characters", "La password del keystore deve contenere almeno 6 caratteri"}, + {"Enter.the.password.to.be.stored.", + "Immettere la password da memorizzare: "}, {"Enter.keystore.password.", "Immettere la password del keystore: "}, {"Enter.source.keystore.password.", "Immettere la password del keystore di origine: "}, {"Enter.destination.keystore.password.", "Immettere la password del keystore di destinazione: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "Nuova {0}: "}, {"Passwords.must.differ", "Le password non devono coincidere"}, {"Re.enter.new.prompt.", "Reimmettere un nuovo valore per {0}: "}, + {"Re.enter.passpword.", "Reimmettere la password: "}, {"Re.enter.new.password.", "Immettere nuovamente la nuova password: "}, {"They.don.t.match.Try.again", "Non corrispondono. Riprovare."}, {"Enter.prompt.alias.name.", "Immettere nome alias {0}: "}, @@ -335,7 +344,7 @@ "Immettere un nuovo nome alias\t(premere INVIO per annullare l'importazione della voce): "}, {"Enter.alias.name.", "Immettere nome alias: "}, {".RETURN.if.same.as.for.otherAlias.", - "\t(INVIO se corrisponde al nome di <{0}>"}, + "\t(INVIO se corrisponde al nome di <{0}>)"}, {".PATTERN.printX509Cert", "Proprietario: {0}\nAutorit\u00E0 emittente: {1}\nNumero di serie: {2}\nValido da: {3} a: {4}\nImpronte digitali certificato:\n\t MD5: {5}\n\t SHA1: {6}\n\t SHA256: {7}\n\t Nome algoritmo firma: {8}\n\t Versione: {9}"}, {"What.is.your.first.and.last.name.",
--- a/src/share/classes/sun/security/tools/keytool/Resources_ja.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_ja.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "\u8A3C\u660E\u66F8\u30EA\u30AF\u30A8\u30B9\u30C8\u304B\u3089\u8A3C\u660E\u66F8\u3092\u751F\u6210\u3057\u307E\u3059"}, //-gencert {"Generates.CRL", "CRL\u3092\u751F\u6210\u3057\u307E\u3059"}, //-gencrl + {"Generated.keyAlgName.secret.key", + "{0}\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3057\u305F"}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "{0}\u30D3\u30C3\u30C8{1}\u79D8\u5BC6\u9375\u3092\u751F\u6210\u3057\u307E\u3057\u305F"}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "JDK 1.1.x-style\u30A2\u30A4\u30C7\u30F3\u30C6\u30A3\u30C6\u30A3\u30FB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30C8\u30EA\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "\u8A3C\u660E\u66F8\u307E\u305F\u306F\u8A3C\u660E\u66F8\u30C1\u30A7\u30FC\u30F3\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-importcert + {"Imports.a.password", + "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "\u5225\u306E\u30AD\u30FC\u30B9\u30C8\u30A2\u304B\u30891\u3064\u307E\u305F\u306F\u3059\u3079\u3066\u306E\u30A8\u30F3\u30C8\u30EA\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3059"}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "\u5225\u540D\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, {"Keystore.password.must.be.at.least.6.characters", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u306F6\u6587\u5B57\u4EE5\u4E0A\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, + {"Enter.the.password.to.be.stored.", + "\u4FDD\u5B58\u3059\u308B\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "}, {"Enter.keystore.password.", "\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "}, {"Enter.source.keystore.password.", "\u30BD\u30FC\u30B9\u30FB\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "}, {"Enter.destination.keystore.password.", "\u51FA\u529B\u5148\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "\u65B0\u898F{0}: "}, {"Passwords.must.differ", "\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u7570\u306A\u3063\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059"}, {"Re.enter.new.prompt.", "\u65B0\u898F{0}\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "}, + {"Re.enter.passpword.", "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "}, {"Re.enter.new.password.", "\u65B0\u898F\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u518D\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "}, {"They.don.t.match.Try.again", "\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u3082\u3046\u4E00\u5EA6\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044"}, {"Enter.prompt.alias.name.", "{0}\u306E\u5225\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044: "},
--- a/src/share/classes/sun/security/tools/keytool/Resources_ko.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_ko.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "\uC778\uC99D\uC11C \uC694\uCCAD\uC5D0\uC11C \uC778\uC99D\uC11C\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-gencert {"Generates.CRL", "CRL\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-gencrl + {"Generated.keyAlgName.secret.key", + "{0} \uBCF4\uC548 \uD0A4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "{0}\uBE44\uD2B8 {1} \uBCF4\uC548 \uD0A4\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4."}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "JDK 1.1.x \uC2A4\uD0C0\uC77C ID \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0\uC11C \uD56D\uBAA9\uC744 \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "\uC778\uC99D\uC11C \uB610\uB294 \uC778\uC99D\uC11C \uCCB4\uC778\uC744 \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-importcert + {"Imports.a.password", + "\uBE44\uBC00\uBC88\uD638\uB97C \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "\uB2E4\uB978 \uD0A4 \uC800\uC7A5\uC18C\uC5D0\uC11C \uD558\uB098 \uB610\uB294 \uBAA8\uB4E0 \uD56D\uBAA9\uC744 \uC784\uD3EC\uD2B8\uD569\uB2C8\uB2E4."}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "\uBCC4\uCE6D\uC744 \uC9C0\uC815\uD574\uC57C \uD569\uB2C8\uB2E4."}, {"Keystore.password.must.be.at.least.6.characters", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638\uB294 6\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4."}, + {"Enter.the.password.to.be.stored.", + "\uC800\uC7A5\uD560 \uBE44\uBC00\uBC88\uD638 \uC785\uB825: "}, {"Enter.keystore.password.", "\uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 \uC785\uB825: "}, {"Enter.source.keystore.password.", "\uC18C\uC2A4 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 \uC785\uB825: "}, {"Enter.destination.keystore.password.", "\uB300\uC0C1 \uD0A4 \uC800\uC7A5\uC18C \uBE44\uBC00\uBC88\uD638 \uC785\uB825: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "\uC0C8 {0}: "}, {"Passwords.must.differ", "\uBE44\uBC00\uBC88\uD638\uB294 \uB2EC\uB77C\uC57C \uD569\uB2C8\uB2E4."}, {"Re.enter.new.prompt.", "\uC0C8 {0} \uB2E4\uC2DC \uC785\uB825: "}, + {"Re.enter.passpword.", "\uBE44\uBC00\uBC88\uD638 \uB2E4\uC2DC \uC785\uB825: "}, {"Re.enter.new.password.", "\uC0C8 \uBE44\uBC00\uBC88\uD638 \uB2E4\uC2DC \uC785\uB825: "}, {"They.don.t.match.Try.again", "\uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC2ED\uC2DC\uC624."}, {"Enter.prompt.alias.name.", "{0} \uBCC4\uCE6D \uC774\uB984 \uC785\uB825: "},
--- a/src/share/classes/sun/security/tools/keytool/Resources_pt_BR.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_pt_BR.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "Gera um certificado de uma solicita\u00E7\u00E3o de certificado"}, //-gencert {"Generates.CRL", "Gera CRL"}, //-gencrl + {"Generated.keyAlgName.secret.key", + "Chave secreta {0} gerada"}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "Chave secreta {1} de {0} bits gerada"}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "Importa entradas de um banco de dados de identidade JDK 1.1.x-style"}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "Importa um certificado ou uma cadeia de certificados"}, //-importcert + {"Imports.a.password", + "Importa uma senha"}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "Importa uma ou todas as entradas de outra \u00E1rea de armazenamento de chaves"}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "Deve ser especificado um alias"}, {"Keystore.password.must.be.at.least.6.characters", "A senha da \u00E1rea de armazenamento de chaves deve ter, no m\u00EDnimo, 6 caracteres"}, + {"Enter.the.password.to.be.stored.", + "Digite a senha a ser armazenada: "}, {"Enter.keystore.password.", "Informe a senha da \u00E1rea de armazenamento de chaves: "}, {"Enter.source.keystore.password.", "Informe a senha da \u00E1rea de armazenamento de chaves de origem: "}, {"Enter.destination.keystore.password.", "Informe a senha da \u00E1rea de armazenamento de chaves de destino: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "Nova {0}: "}, {"Passwords.must.differ", "As senhas devem ser diferentes"}, {"Re.enter.new.prompt.", "Informe novamente a nova {0}: "}, + {"Re.enter.passpword.", "Redigite a senha: "}, {"Re.enter.new.password.", "Informe novamente a nova senha: "}, {"They.don.t.match.Try.again", "Elas n\u00E3o correspondem. Tente novamente"}, {"Enter.prompt.alias.name.", "Informe o nome do alias {0}: "},
--- a/src/share/classes/sun/security/tools/keytool/Resources_sv.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_sv.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "Genererar certifikat fr\u00E5n certifikatbeg\u00E4ran"}, //-gencert {"Generates.CRL", "Genererar CRL"}, //-gencrl + {"Generated.keyAlgName.secret.key", + "Genererade {0} hemlig nyckel"}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "Genererade {0}-bitars {1} hemlig nyckel"}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "Importerar poster fr\u00E5n identitetsdatabas i JDK 1.1.x-format"}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "Importerar ett certifikat eller en certifikatkedja"}, //-importcert + {"Imports.a.password", + "Importerar ett l\u00F6senord"}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "Importerar en eller alla poster fr\u00E5n annat nyckellager"}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "Du m\u00E5ste ange alias"}, {"Keystore.password.must.be.at.least.6.characters", "Nyckellagerl\u00F6senordet m\u00E5ste inneh\u00E5lla minst 6 tecken"}, + {"Enter.the.password.to.be.stored.", + "Ange det l\u00F6senord som ska lagras: "}, {"Enter.keystore.password.", "Ange nyckellagerl\u00F6senord: "}, {"Enter.source.keystore.password.", "Ange l\u00F6senord f\u00F6r k\u00E4llnyckellagret: "}, {"Enter.destination.keystore.password.", "Ange nyckellagerl\u00F6senord f\u00F6r destination: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "Nytt {0}: "}, {"Passwords.must.differ", "L\u00F6senorden m\u00E5ste vara olika"}, {"Re.enter.new.prompt.", "Ange nytt {0} igen: "}, + {"Re.enter.passpword.", "Ange l\u00F6senord igen: "}, {"Re.enter.new.password.", "Ange det nya l\u00F6senordet igen: "}, {"They.don.t.match.Try.again", "De matchar inte. F\u00F6rs\u00F6k igen"}, {"Enter.prompt.alias.name.", "Ange aliasnamn f\u00F6r {0}: "},
--- a/src/share/classes/sun/security/tools/keytool/Resources_zh_CN.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_zh_CN.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "\u6839\u636E\u8BC1\u4E66\u8BF7\u6C42\u751F\u6210\u8BC1\u4E66"}, //-gencert {"Generates.CRL", "\u751F\u6210 CRL"}, //-gencrl + {"Generated.keyAlgName.secret.key", + "\u5DF2\u751F\u6210{0}\u5BC6\u94A5"}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "\u5DF2\u751F\u6210 {0} \u4F4D{1}\u5BC6\u94A5"}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "\u4ECE JDK 1.1.x \u6837\u5F0F\u7684\u8EAB\u4EFD\u6570\u636E\u5E93\u5BFC\u5165\u6761\u76EE"}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "\u5BFC\u5165\u8BC1\u4E66\u6216\u8BC1\u4E66\u94FE"}, //-importcert + {"Imports.a.password", + "\u5BFC\u5165\u53E3\u4EE4"}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "\u4ECE\u5176\u4ED6\u5BC6\u94A5\u5E93\u5BFC\u5165\u4E00\u4E2A\u6216\u6240\u6709\u6761\u76EE"}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "\u5FC5\u987B\u6307\u5B9A\u522B\u540D"}, {"Keystore.password.must.be.at.least.6.characters", "\u5BC6\u94A5\u5E93\u53E3\u4EE4\u81F3\u5C11\u5FC5\u987B\u4E3A 6 \u4E2A\u5B57\u7B26"}, + {"Enter.the.password.to.be.stored.", + "\u8F93\u5165\u8981\u5B58\u50A8\u7684\u53E3\u4EE4: "}, {"Enter.keystore.password.", "\u8F93\u5165\u5BC6\u94A5\u5E93\u53E3\u4EE4: "}, {"Enter.source.keystore.password.", "\u8F93\u5165\u6E90\u5BC6\u94A5\u5E93\u53E3\u4EE4: "}, {"Enter.destination.keystore.password.", "\u8F93\u5165\u76EE\u6807\u5BC6\u94A5\u5E93\u53E3\u4EE4: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "\u65B0{0}: "}, {"Passwords.must.differ", "\u53E3\u4EE4\u4E0D\u80FD\u76F8\u540C"}, {"Re.enter.new.prompt.", "\u91CD\u65B0\u8F93\u5165\u65B0{0}: "}, + {"Re.enter.passpword.", "\u518D\u6B21\u8F93\u5165\u53E3\u4EE4: "}, {"Re.enter.new.password.", "\u518D\u6B21\u8F93\u5165\u65B0\u53E3\u4EE4: "}, {"They.don.t.match.Try.again", "\u5B83\u4EEC\u4E0D\u5339\u914D\u3002\u8BF7\u91CD\u8BD5"}, {"Enter.prompt.alias.name.", "\u8F93\u5165{0}\u522B\u540D: "},
--- a/src/share/classes/sun/security/tools/keytool/Resources_zh_TW.java Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/security/tools/keytool/Resources_zh_TW.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2013, 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 @@ -65,10 +65,16 @@ {"Generates.certificate.from.a.certificate.request", "\u5F9E\u6191\u8B49\u8981\u6C42\u7522\u751F\u6191\u8B49"}, //-gencert {"Generates.CRL", "\u7522\u751F CRL"}, //-gencrl + {"Generated.keyAlgName.secret.key", + "\u5DF2\u7522\u751F {0} \u79D8\u5BC6\u91D1\u9470"}, //-genseckey + {"Generated.keysize.bit.keyAlgName.secret.key", + "\u5DF2\u7522\u751F {0} \u4F4D\u5143 {1} \u79D8\u5BC6\u91D1\u9470"}, //-genseckey {"Imports.entries.from.a.JDK.1.1.x.style.identity.database", "\u5F9E JDK 1.1.x-style \u8B58\u5225\u8CC7\u6599\u5EAB\u532F\u5165\u9805\u76EE"}, //-identitydb {"Imports.a.certificate.or.a.certificate.chain", "\u532F\u5165\u6191\u8B49\u6216\u6191\u8B49\u93C8"}, //-importcert + {"Imports.a.password", + "\u532F\u5165\u5BC6\u78BC"}, //-importpass {"Imports.one.or.all.entries.from.another.keystore", "\u5F9E\u5176\u4ED6\u91D1\u9470\u5132\u5B58\u5EAB\u532F\u5165\u4E00\u500B\u6216\u5168\u90E8\u9805\u76EE"}, //-importkeystore {"Clones.a.key.entry", @@ -220,6 +226,8 @@ {"Must.specify.alias", "\u5FC5\u9808\u6307\u5B9A\u5225\u540D"}, {"Keystore.password.must.be.at.least.6.characters", "\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC\u5FC5\u9808\u81F3\u5C11\u70BA 6 \u500B\u5B57\u5143"}, + {"Enter.the.password.to.be.stored.", + "\u8F38\u5165\u8981\u5132\u5B58\u7684\u5BC6\u78BC: "}, {"Enter.keystore.password.", "\u8F38\u5165\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "}, {"Enter.source.keystore.password.", "\u8ACB\u8F38\u5165\u4F86\u6E90\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "}, {"Enter.destination.keystore.password.", "\u8ACB\u8F38\u5165\u76EE\u7684\u5730\u91D1\u9470\u5132\u5B58\u5EAB\u5BC6\u78BC: "}, @@ -328,6 +336,7 @@ {"New.prompt.", "\u65B0 {0}: "}, {"Passwords.must.differ", "\u5FC5\u9808\u662F\u4E0D\u540C\u7684\u5BC6\u78BC"}, {"Re.enter.new.prompt.", "\u91CD\u65B0\u8F38\u5165\u65B0 {0}: "}, + {"Re.enter.passpword.", "\u91CD\u65B0\u8F38\u5165\u5BC6\u78BC:"}, {"Re.enter.new.password.", "\u91CD\u65B0\u8F38\u5165\u65B0\u5BC6\u78BC: "}, {"They.don.t.match.Try.again", "\u5B83\u5011\u4E0D\u76F8\u7B26\u3002\u8ACB\u91CD\u8A66"}, {"Enter.prompt.alias.name.", "\u8F38\u5165 {0} \u5225\u540D\u540D\u7A31: "},
--- a/src/share/classes/sun/tools/jar/resources/jar_es.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/tools/jar/resources/jar_es.properties Mon Dec 23 14:05:20 2013 -0500 @@ -45,4 +45,4 @@ out.inflated=\ inflado: {0} out.size=(entrada = {0}) (salida = {1}) -usage=Sintaxis: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] archivos...\nOpciones:\n -c crear nuevo archivo\n -t crear la tabla de contenido del archivo\n -x extraer el archive mencionado (o todos) del archivo\n -u actualizar archive existente\n -v generar salida detallada de los datos de salida est\u00E1ndar\n -f especificar nombre de archive de almacenamiento\n -m incluir informaci\u00F3n de manifiesto del archive de manifiesto especificado\n -n realizar normalizaci\u00F3n de Pack200 despu\u00E9s de crear un nuevo archivo\n -e especificar punto de entrada de la aplicaci\u00F3n para la aplicaci\u00F3n aut\u00F3noma \n que se incluye dentro de un archive jar ejecutable\n -0 s\u00F3lo almacenar; no utilizar compresi\u00F3n ZIP\n -M no crear un archive de manifiesto para las entradas\n -i generar informaci\u00F3n de \u00EDndice para los archives jar especificados\n -C cambiar al directorio especificado e incluir el archivo siguiente\nSi alg\u00FAn archivo es un directorio, se procesar\u00E1 de forma recurrente.\nEl nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\nespecifican en el mismo orden que los indicadores 'm', 'f' y 'e'.\n\nEjemplo 1: para archivar archivos de dos clases en un archivo llamado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nEjemplo 2: utilice un archivo de manifiesto existente 'mymanifest' y archive todos los\n archivos del directorio foo/ en 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n +usage=Sintaxis: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] archivos...\nOpciones:\n -c crear nuevo archivo\n -t crear la tabla de contenido del archivo\n -x extraer el archive mencionado (o todos) del archivo\n -u actualizar archive existente\n -v generar salida detallada de los datos de salida est\u00E1ndar\n -f especificar nombre de archive de almacenamiento\n -m incluir informaci\u00F3n de manifiesto del archive de manifiesto especificado\n -n realizar normalizaci\u00F3n de Pack200 despu\u00E9s de crear un nuevo archivo\n -e especificar punto de entrada de la aplicaci\u00F3n para la aplicaci\u00F3n aut\u00F3noma \n que se incluye dentro de un archive jar ejecutable\n -0 s\u00F3lo almacenar; no utilizar compresi\u00F3n ZIP\n -M no crear un archive de manifiesto para las entradas\n -i generar informaci\u00F3n de \u00EDndice para los archives jar especificados\n -C cambiar al directorio especificado e incluir el archivo siguiente\nSi alg\u00FAn archivo es un directorio, se procesar\u00E1 de forma recurrente.\nEl nombre del archivo de manifiesto, el nombre del archivo de almacenamiento y el nombre del punto de entrada se\nespecifican en el mismo orden que los indicadores 'm', 'f' y 'e'.\n\nEjemplo 1: para archivar archivos de dos clases en un archivo llamado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nEjemplo 2: utilice un archivo de manifiesto existente 'mymanifest' y archive todos los\n archivos del directorio foo/ en 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
--- a/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/tools/jar/resources/jar_pt_BR.properties Mon Dec 23 14:05:20 2013 -0500 @@ -45,4 +45,4 @@ out.inflated=\ inflado: {0} out.size=(entrada = {0}) (sa\u00EDda= {1}) -usage=Uso: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n -c cria novo archive\n -t lista o sum\u00E1rio do archive\n -x extrai arquivos com o nome (ou todos) do arquivo compactado\n -u atualiza o archive existente\n -v gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n -f especifica o nome do archive\n -m inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n -n executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo archive\n -e especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o independente \n empacotada em um arquivo jar execut\u00E1vel\n -0 armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n -M n\u00E3o cria um arquivo de manifesto para as entradas\n -i gera informa\u00E7\u00F5es de \u00EDndice para os arquivos jar especificados\n -C altera para o diret\u00F3rio especificado e inclui o arquivo seguinte\nSe algum arquivo for um diret\u00F3rio, ent\u00E3o ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do archive e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um archive chamado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n arquivos no diret\u00F3rio foo/ na 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n +usage=Uso: jar {ctxui}[vfmn0Me] [jar-file] [manifest-file] [entry-point] [-C dir] arquivos ...\nOp\u00E7\u00F5es:\n -c cria novo arquivo compactado\n -t lista o sum\u00E1rio do arquivo compactado\n -x extrai arquivos com o nome (ou todos) do arquivo compactado\n -u atualiza o arquivo compactado existente\n -v gera sa\u00EDda detalhada na sa\u00EDda padr\u00E3o\n -f especifica o nome do arquivo do arquivo compactado\n -m inclui as informa\u00E7\u00F5es do manifesto do arquivo de manifesto especificado\n -n executa a normaliza\u00E7\u00E3o Pack200 ap\u00F3s a cria\u00E7\u00E3o de um novo arquivo compactado\n -e especifica o ponto de entrada da aplica\u00E7\u00E3o para aplica\u00E7\u00E3o stand-alone \n empacotada em um arquivo jar execut\u00E1vel\n -0 armazena somente; n\u00E3o usa compacta\u00E7\u00E3o ZIP\n -M n\u00E3o cria um arquivo de manifesto para as entradas\n -i gera informa\u00E7\u00F5es de \u00EDndice para os arquivos especificados\n -C passa para o diret\u00F3rio especificado e inclui o arquivo a seguir\nSe um arquivo tamb\u00E9m for um diret\u00F3rio, ele ser\u00E1 processado repetidamente.\nO nome do arquivo de manifesto, o nome do arquivo compactado e o nome do ponto de entrada s\u00E3o\nespecificados na mesma ordem dos flags 'm', 'f' e 'e'.\n\nExemplo 1: para arquivar dois arquivos de classe em um arquivo compactado denominado classes.jar: \n jar cvf classes.jar Foo.class Bar.class \nExemplo 2: use um arquivo de manifesto existente 'mymanifest' e arquive todos os\n arquivos no diret\u00F3rio foo/ na 'classes.jar': \n jar cvfm classes.jar mymanifest -C foo/ .\n
--- a/src/share/classes/sun/tools/jconsole/resources/messages_ja.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/tools/jconsole/resources/messages_ja.properties Mon Dec 23 14:05:20 2013 -0500 @@ -278,4 +278,4 @@ KBYTES={0} KB PLOT=\u30D7\u30ED\u30C3\u30C8 VISUALIZE=\u8996\u899A\u5316 -ZZ_USAGE_TEXT=\u4F7F\u7528\u65B9\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n -interval \u66F4\u65B0\u9593\u9694\u3092n\u79D2\u306B\u8A2D\u5B9A\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8\u306F4\u79D2)\n -notile \u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u6700\u521D\u306B\u4E26\u3079\u3066\u8868\u793A\u3057\u306A\u3044(2\u3064\u4EE5\u4E0A\u306E\u63A5\u7D9A\u306B\u3064\u3044\u3066)\n -pluginpath JConsole\u304C\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u53C2\u7167\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30D1\u30B9\u3092\u6307\u5B9A\u3059\u308B\n -version \u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u5370\u5237\u3059\u308B\n\n connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n pid \u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9\u306E\u30D7\u30ED\u30BB\u30B9ID\n host \u30EA\u30E2\u30FC\u30C8\u30FB\u30DB\u30B9\u30C8\u540D\u307E\u305F\u306FIP\u30A2\u30C9\u30EC\u30B9\n port \u30EA\u30E2\u30FC\u30C8\u63A5\u7D9A\u7528\u306E\u30DD\u30FC\u30C8\u756A\u53F7\n\n -J JConsole\u304C\u5B9F\u884C\u4E2D\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\n \u5165\u529B\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B +ZZ_USAGE_TEXT=\u4F7F\u7528\u65B9\u6CD5: {0} [ -interval=n ] [ -notile ] [ -pluginpath <path> ] [ -version ] [ connection ... ]\n\n -interval \u66F4\u65B0\u9593\u9694\u3092n\u79D2\u306B\u8A2D\u5B9A\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8\u306F4\u79D2)\n -notile \u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u6700\u521D\u306B\u4E26\u3079\u3066\u8868\u793A\u3057\u306A\u3044(2\u3064\u4EE5\u4E0A\u306E\u63A5\u7D9A\u306B\u3064\u3044\u3066)\n -pluginpath JConsole\u304C\u30D7\u30E9\u30B0\u30A4\u30F3\u3092\u53C2\u7167\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3059\u308B\u30D1\u30B9\u3092\u6307\u5B9A\u3059\u308B\n -version \u30D7\u30ED\u30B0\u30E9\u30E0\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u51FA\u529B\u3059\u308B\n\n connection = pid || host:port || JMX URL (service:jmx:<protocol>://...)\n pid \u30BF\u30FC\u30B2\u30C3\u30C8\u30FB\u30D7\u30ED\u30BB\u30B9\u306E\u30D7\u30ED\u30BB\u30B9ID\n host \u30EA\u30E2\u30FC\u30C8\u30FB\u30DB\u30B9\u30C8\u540D\u307E\u305F\u306FIP\u30A2\u30C9\u30EC\u30B9\n port \u30EA\u30E2\u30FC\u30C8\u63A5\u7D9A\u7528\u306E\u30DD\u30FC\u30C8\u756A\u53F7\n\n -J JConsole\u304C\u5B9F\u884C\u4E2D\u306EJava\u4EEE\u60F3\u30DE\u30B7\u30F3\u3078\u306E\n \u5165\u529B\u5F15\u6570\u3092\u6307\u5B9A\u3059\u308B
--- a/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/util/logging/resources/logging_zh_TW.properties Mon Dec 23 14:05:20 2013 -0500 @@ -27,7 +27,7 @@ # these are the same as the non-localized level name. # The following ALL CAPS words should be translated. -ALL=\u5168\u90E8 +ALL=\u6240\u6709 # The following ALL CAPS words should be translated. SEVERE=\u56B4\u91CD # The following ALL CAPS words should be translated.
--- a/src/share/classes/sun/util/resources/pt/LocaleNames_pt.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/util/resources/pt/LocaleNames_pt.properties Mon Dec 23 14:05:20 2013 -0500 @@ -1,49 +1,68 @@ # -# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2013, 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. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# 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. # +#Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under the +#Terms of Use in http://www.unicode.org/copyright.html. + +#Permission is hereby granted, free of charge, to any person obtaining a copy of +#the Unicode data files and any associated documentation (the "Data Files") or +#Unicode software and any associated documentation (the "Software") to deal in +#the Data Files or Software without restriction, including without limitation +#the rights to use, copy, modify, merge, publish, distribute, and/or sell copies +#of the Data Files or Software, and to permit persons to whom the Data Files or +#Software are furnished to do so, provided that (a) the above copyright notice(s) +#and this permission notice appear with all copies of the Data Files or +#Software, (b) both the above copyright notice(s) and this permission notice +#appear in associated documentation, and (c) there is clear notice in each +#modified Data File or in the Software as well as in the documentation +#associated with the Data File(s) or Software that the data or software has been +#modified. + +#THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +#PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +#THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +#DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +#OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR +#SOFTWARE. + +#Except as contained in this notice, the name of a copyright holder shall not be +#used in advertising or otherwise to promote the sale, use or other dealings in +#these Data Files or Software without prior written authorization of the +#copyright holder. + # -# COPYRIGHT AND PERMISSION NOTICE -# -# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved. -# Distributed under the Terms of Use in http://www.unicode.org/copyright.html. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of the Unicode data files and any associated documentation (the "Data -# Files") or Unicode software and any associated documentation (the -# "Software") to deal in the Data Files or Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, and/or sell copies of the Data Files or Software, and -# to permit persons to whom the Data Files or Software are furnished to do -# so, provided that (a) the above copyright notice(s) and this permission -# notice appear with all copies of the Data Files or Software, (b) both the -# above copyright notice(s) and this permission notice appear in associated -# documentation, and (c) there is clear notice in each modified Data File or -# in the Software as well as in the documentation associated with the Data -# File(s) or Software that the data or software has been modified. +# Generated automatically from the Common Locale Data Repository. DO NOT EDIT! # -# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF -# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS -# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR -# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -# PERFORMANCE OF THE DATA FILES OR SOFTWARE. -# -# Except as contained in this notice, the name of a copyright holder shall not -# be used in advertising or otherwise to promote the sale, use or other -# dealings in these Data Files or Software without prior written -# authorization of the copyright holder. -# - -# Generated automatically from the Common Locale Data Repository. DO NOT EDIT! - aa=afar -ab=abkhazian +ab=abc\u00e1zio ae=av\u00e9stico af=afric\u00e2ner +ak=akan am=am\u00e1rico an=aragon\u00eas ar=\u00e1rabe @@ -62,7 +81,7 @@ br=bret\u00e3o bs=b\u00f3snio ca=catal\u00e3o -ce=chechene +ce=checheno ch=chamorro co=c\u00f3rsico cr=cree @@ -87,7 +106,7 @@ fj=fijiano fo=fero\u00eas fr=franc\u00eas -fy=fris\u00e3o +fy=fr\u00edsio ocidental ga=irland\u00eas gd=ga\u00e9lico escoc\u00eas gl=galego @@ -96,7 +115,7 @@ gv=manx ha=hau\u00e7\u00e1 he=hebraico -hi=hindi +hi=h\u00edndi ho=hiri motu hr=croata ht=haitiano @@ -108,6 +127,7 @@ ie=interlingue ig=ibo ii=sichuan yi +ik=inupiaque in=indon\u00e9sio io=ido is=island\u00eas @@ -116,17 +136,18 @@ iw=hebraico ja=japon\u00eas ji=i\u00eddiche +jv=javan\u00eas ka=georgiano kg=congol\u00eas ki=quicuio -kj=Kuanyama +kj=kuanyama kk=cazaque kl=groenland\u00eas km=cmer kn=canar\u00eas ko=coreano kr=can\u00fari -ks=kashmiri +ks=caxemira ku=curdo kv=komi kw=c\u00f3rnico @@ -134,14 +155,14 @@ la=latim lb=luxemburgu\u00eas lg=luganda -li=limburgish +li=limburgu\u00eas ln=lingala lo=laosiano lt=lituano lu=luba-catanga lv=let\u00e3o mg=malgaxe -mh=marshall\u00eas +mh=marshal\u00eas mi=maori mk=maced\u00f4nio ml=malaiala @@ -153,16 +174,16 @@ my=birman\u00eas na=nauruano nb=bokm\u00e5l noruegu\u00eas -nd=ndebele, north +nd=ndebele do norte ne=nepali ng=dongo nl=holand\u00eas nn=nynorsk noruegu\u00eas no=noruegu\u00eas -nr=ndebele, south +nr=ndebele do sul nv=navajo -ny=nianja; chicheua; cheua -oc=occit\u00e2nico (ap\u00f3s 1500); proven\u00e7al +ny=nianja +oc=occit\u00e2nico oj=ojibwa om=oromo or=oriya @@ -170,10 +191,10 @@ pa=panjabi pi=p\u00e1li pl=polon\u00eas -ps=pashto (pushto) +ps=pashto pt=portugu\u00eas qu=qu\u00edchua -rm=rhaeto-romance +rm=reto-romano rn=rundi ro=romeno ru=russo @@ -181,27 +202,30 @@ sa=s\u00e2nscrito sc=sardo sd=sindi -se=northern sami +se=sami do norte sg=sango si=cingal\u00eas sk=eslovaco -sl=eslov\u00eanio +sl=esloveno +sm=samoano +sn=shona so=somali sq=alban\u00eas sr=s\u00e9rvio ss=swati -st=soto, do sul +st=soto do sul su=sundan\u00eas sv=sueco -sw=sua\u00edli +sw=suaili ta=t\u00e2mil te=telugu tg=tadjique th=tailand\u00eas ti=tigr\u00ednia tk=turcomano +tl=tagalo tn=tswana -to=tonga (ilhas tonga) +to=tongan\u00eas tr=turco ts=tsonga tt=tatar @@ -214,14 +238,451 @@ ve=venda vi=vietnamita vo=volapuque -wa=walloon -wo=uolofe +wa=val\u00e3o +wo=u\u00f3lofe xh=xosa yi=i\u00eddiche yo=ioruba za=zhuang zh=chin\u00eas zu=zulu +ace=ach\u00e9m +ach=acoli +ada=adangme +ady=adigue +afa=Afegane (1927-2002) +afh=afrihili +ain=ainu +akk=acadiano +ale=ale\u00fate +alg=idioma algonquiano +alt=altai do sul +ang=Guilder das Antilhas Holandesas +anp=angika +apa=idioma apache +ara=Austral argentino +arc=aramaico +arm=Peso argentino (1881-1970) +arn=araucano +arp=Peso argentino (1983-1985) +art=idioma artificial +arw=arauaqui +ast=asturiano +ath=idioma atabascano +aus=idioma australiano +awa=awadhi +bad=Dinar da B\u00f3snia-Herzegovina +bai=idioma bamileke +bal=bal\u00fachi +bam=Marco b\u00f3snio-herzegovino convers\u00edvel +ban=Novo dinar da B\u00f3snia-Herzegovina +bas=basa +bat=idioma b\u00e1ltico +bej=beja +bel=Franco belga (financeiro) +bem=bemba +ber=berbere +bho=bhojpuri +bik=bikol +bin=bini +bla=siksika +bnt=banto +bra=braj +bre=Cruzeiro brasileiro (1990-1993) +btk=bataque +bua=buriat +bug=buguin\u00eas +byn=blin +cad=D\u00f3lar canadense +cai=idioma ind\u00edgena centro-americano +car=caribe +cau=idioma cauc\u00e1sico +ceb=cebuano +cel=idioma celta +chb=chibcha +che=Euro WIR +chg=chagatai +chk=chuukese +chm=mari +chn=chinook jargon +cho=choctaw +chp=chipewyan +chr=cherokee +chy=cheiene +cmc=idioma chamic +cop=Peso colombiano +cpe=crioulo ou pidgin baseado no ingl\u00eas +cpf=crioulo ou pidgin baseado no franc\u00eas +cpp=crioulo ou pidgin baseado no portugu\u00eas +crh=turco da Crimeia +crp=crioulo ou pidgin +csb=kashubian +cus=idioma cuch\u00edtico +dak=dacota +dar=dargwa +day=dayak +del=delaware +den=slave +dgr=dogrib +din=dinka +doi=dogri +dra=idioma dravidiano +dsb=s\u00e9rvio baixo +dua=duala +dum=holand\u00eas m\u00e9dio +dyu=di\u00fala +efi=efique +egy=eg\u00edpcio arcaico +eka=ekajuk +elx=elamite +enm=ingl\u00eas m\u00e9dio +ewo=ewondo +fan=fangue +fat=fanti +fil=filipino +fiu=idioma fino-\u00fagrico +fon=fom +frm=franc\u00eas m\u00e9dio +fro=franc\u00eas arcaico +frr=fr\u00edsio setentrional +frs=fris\u00e3o oriental +fur=friulano +gaa=ga +gay=gayo +gba=gbaia +gem=idioma germ\u00e2nico +gez=geez +gil=gilbert\u00eas +gmh=alem\u00e3o m\u00e9dio-alto +goh=alem\u00e3o arcaico alto +gon=gondi +gor=gorontalo +got=g\u00f3tico +grb=grebo +grc=grego arcaico +gsw=alem\u00e3o su\u00ed\u00e7o +gwi=gwich\u02bcin +hai=haida +haw=havaiano +hil=hiligaynon +him=himachali +hit=hitita +hmn=hmong +hsb=sor\u00e1bio superior +hup=hupa +iba=iban +ijo=ijo +ilo=ilocano +inc=idioma \u00edndico +ine=idioma indo-europeu +inh=inguche +ira=iraniano +iro=idioma iroqu\u00eas +jbo=lojban +jpr=judaico-persa +jrb=judaico-ar\u00e1bico +kaa=kara-kalpak +kab=kabyle +kac=kachin +kam=kamba +kar=karen +kaw=kawi +kbd=kabardiano +kha=khasi +khi=idioma cois\u00e3 +kho=khotan\u00eas +kmb=quimbundo +kok=concani +kos=kosraean +kpe=kpelle +krc=karachay-balkar +krl=idioma car\u00e9lio +kro=Won antigo da Coreia do Sul +kru=kurukh +kum=kumyk +kut=kutenai +lad=ladino +lah=lahnda +lam=lamba +lez=lezghian +lol=mongo +loz=lozi +lua=luba-lulua +lui=luiseno +lun=lunda +luo=luo +lus=lushai +mad=Dir\u00e9m marroquino +mag=magahi +mai=maithili +mak=makasar +man=mandinga +map=austron\u00e9sio +mas=massai +mdf=mocsa +mdr=mandar +men=mende +mga=Ariary de Madagascar +mic=miquemaque +min=minangkabau +mis=idiomas diversos +mkh=idioma mon-khmer +mnc=manchu +mni=manipuri +mno=idioma manobo +moh=mohawk +mos=mossi +mul=idiomas m\u00faltiplos +mun=idiomas munda +mus=creek +mwl=mirand\u00eas +mwr=marwari +myn=maia +myv=erzya +nah=n\u00e1uatle +nai=idioma ind\u00edgena norte-americano +nap=napolitano +nds=baixo-alem\u00e3o +new=newari +nia=nias +nic=C\u00f3rdoba nicaraguense +niu=niueano +nog=nogai +non=n\u00f3rdico arcaico +nqo=n'ko +nso=soto setentrional +nub=idioma n\u00fabio +nwc=newari cl\u00e1ssico +nym=nyamwezi +nyn=nyankole +nyo=nyoro +nzi=nzima +osa=osage +ota=turco otomano +oto=idioma otomano +paa=idioma papuano +pag=pangasin\u00e3 +pal=p\u00e1lavi +pam=pampanga +pap=papiamento +pau=palauano +peo=persa arcaico +phi=idioma filipino +phn=fen\u00edcio +pon=pohnpeian +pra=idioma pr\u00e1crito +pro=proven\u00e7al arcaico +raj=rajastani +rap=rapanui +rar=rarotongano +roa=idioma rom\u00e2nico +rom=romani +rup=aromeno +sad=sandawe +sah=iacuto +sai=idioma ind\u00edgena sul-americano +sal=idioma salisano +sam=aramaico samaritano +sas=sasak +sat=santali +scn=siciliano +sco=escoc\u00eas +sel=selkup +sem=idioma sem\u00edtico +sga=irland\u00eas arcaico +sgn=linguagem de sinais +shn=shan +sid=sidamo +sio=idioma sioux +sit=Tolar Bons esloveno +sla=idioma eslavo +sma=sami do sul +smi=idioma sami +smj=lule sami +smn=inari sami +sms=skolt sami +snk=soninqu\u00ea +sog=sogdiano +son=songai +srd=D\u00f3lar do Suriname +srn=idioma surinam\u00eas +srr=serere +ssa=idioma nilo-saariano +suk=sukuma +sus=sosso +sux=sum\u00e9rio +syc=sir\u00edaco cl\u00e1ssico +syr=sir\u00edaco +tai=idioma tailand\u00eas +tem=timne +ter=tereno +tet=t\u00e9tum +tig=tigr\u00e9 +tiv=tiv +tkl=toquelauano +tlh=klingon +tli=tlinguite +tmh=tamaxeque +tog=tongan\u00eas de Nyasa +tpi=tok pisin +tsi=tsimshian +tum=tumbuka +tup=idioma tupi +tut=idioma altaico +tvl=tuvaluano +tyv=tuvinian +udm=udmurt +uga=ugar\u00edtico +umb=umbundu +und=idioma inv\u00e1lido ou desconhecido +vai=vai +vot=votic +wak=idioma wakashan +wal=walamo +war=waray +was=washo +wen=idioma sor\u00e1bio +xal=kalmyk +yao=yao +yap=yapese +ypk=idioma i\u00fapique +zap=zapoteca +zbl=s\u00edmbolos blis +zen=zenaga +znd=zande +zun=zunhi +zxx=sem conte\u00fado lingu\u00edstico +zza=zaza +Arab=\u00e1rabe +Armi=armi +Armn=arm\u00eanio +Avst=av\u00e9stico +Bali=balin\u00eas +Batk=bataque +Beng=bengali +Blis=s\u00edmbolos bliss +Bopo=bopomofo +Brah=brahmi +Brai=braille +Bugi=bugin\u00eas +Buhd=buhid +Cakm=cakm +Cans=escrita sil\u00e1bica unificada dos abor\u00edgenes canadenses +Cari=cariano +Cham=cham +Cher=cherokee +Cirt=cirth +Copt=c\u00f3ptico +Cprt=cipriota +Cyrl=cir\u00edlico +Cyrs=cir\u00edlico eslavo eclesi\u00e1stico +Deva=devan\u00e1gari +Dsrt=deseret +Egyd=dem\u00f3tico eg\u00edpcio +Egyh=hier\u00e1tico eg\u00edpcio +Egyp=hier\u00f3glifos eg\u00edpcios +Ethi=eti\u00f3pico +Geok=khutsuri georgiano +Geor=georgiano +Glag=glagol\u00edtico +Goth=g\u00f3tico +Grek=grego +Gujr=gujerati +Guru=gurmuqui +Hang=hangul +Hani=han +Hano=hanunoo +Hans=han simplificado +Hant=han tradicional +Hebr=hebraico +Hira=hiragana +Hmng=pahawh hmong +Hrkt=katakana ou hiragana +Hung=h\u00fangaro antigo +Inds=indo +Ital=it\u00e1lico antigo +Java=javan\u00eas +Jpan=japon\u00eas +Kali=kayah li +Kana=katakana +Khar=kharoshthi +Khmr=khmer +Knda=kannada +Kore=coreano +Kthi=kthi +Lana=lanna +Laoo=lao +Latf=latim fraktur +Latg=latim ga\u00e9lico +Latn=latim +Lepc=lepcha +Limb=limbu +Lina=A linear +Linb=B linear +Lyci=l\u00edcio +Lydi=l\u00eddio +Mand=mandaico +Mani=maniqueano +Maya=hier\u00f3glifos maias +Mero=mero\u00edtico +Mlym=malaiala +Mong=mongol +Moon=moon +Mtei=meitei mayek +Mymr=birman\u00eas +Nkoo=n'ko +Ogam=og\u00e2mico +Olck=ol chiki +Orkh=orkhon +Orya=oriya +Osma=osmania +Perm=p\u00e9rmico antigo +Phag=phags-pa +Phli=phli +Phlp=phlp +Phlv=pahlavi antigo +Phnx=fen\u00edcio +Plrd=fon\u00e9tico pollard +Prti=prti +Rjng=rejang +Roro=rongorongo +Runr=r\u00fanico +Samr=samaritano +Sara=sarati +Saur=saurashtra +Sgnw=signwriting +Shaw=shaviano +Sinh=cingal\u00eas +Sund=sundan\u00eas +Sylo=syloti nagri +Syrc=sir\u00edaco +Syre=sir\u00edaco estrangelo +Syrj=sir\u00edaco ocidental +Syrn=sir\u00edaco oriental +Tagb=tagbanwa +Tale=tai Le +Talu=novo tai lue +Taml=t\u00e2mil +Tavt=tavt +Telu=t\u00e9lugo +Teng=tengwar +Tfng=tifinagh +Tglg=tagalo +Thaa=thaana +Thai=tailand\u00eas +Tibt=tibetano +Ugar=ugar\u00edtico +Vaii=vai +Visp=visible speech +Xpeo=persa antigo +Xsux=sum\u00e9rio-acadiano cuneiforme +Yiii=yi +Zinh=herdado +Zmth=zmth +Zsym=zsym +Zxxx=\u00e1grafo +Zyyy=comum +Zzzz=escrita desconhecida ou inv\u00e1lida AE=Emirados \u00c1rabes Unidos AF=Afeganist\u00e3o AG=Ant\u00edgua e Barbuda @@ -232,12 +693,13 @@ AS=Samoa Americana AT=\u00c1ustria AU=Austr\u00e1lia +AX=Ilhas Aland AZ=Azerbaij\u00e3o -BA=B\u00f3snia-Herzeg\u00f3vina +BA=B\u00f3snia-Herzegovina BE=B\u00e9lgica BF=Burquina Faso BG=Bulg\u00e1ria -BH=Bareine +BL=S\u00e3o Bartolomeu BM=Bermudas BO=Bol\u00edvia BR=Brasil @@ -245,9 +707,10 @@ BV=Ilha Bouvet BW=Botsuana CA=Canad\u00e1 -CC=Ilhas Cocos (Keeling) -CD=Congo, Rep\u00fablica Democr\u00e1tica do +CC=Ilhas Coco +CD=Congo-Kinshasa CF=Rep\u00fablica Centro-Africana +CG=Congo - Brazzaville CH=Su\u00ed\u00e7a CI=Costa do Marfim CK=Ilhas Cook @@ -267,12 +730,12 @@ EE=Est\u00f4nia EG=Egito EH=Saara Ocidental -ER=Eritr\u00e9ia +ER=Eritreia ES=Espanha ET=Eti\u00f3pia FI=Finl\u00e2ndia FK=Ilhas Malvinas -FM=Micron\u00e9sia, Estados Federados da +FM=Micron\u00e9sia FO=Ilhas Faroe FR=Fran\u00e7a GA=Gab\u00e3o @@ -296,6 +759,7 @@ HU=Hungria ID=Indon\u00e9sia IE=Irlanda +IM=Ilha de Man IN=\u00cdndia IO=Territ\u00f3rio Brit\u00e2nico do Oceano \u00cdndico IQ=Iraque @@ -310,11 +774,11 @@ KI=Quiribati KM=Comores KN=S\u00e3o Cristov\u00e3o e Nevis -KP=Cor\u00e9ia, Norte -KR=Cor\u00e9ia, Sul +KP=Coreia do Norte +KR=Coreia do Sul KY=Ilhas Caiman KZ=Casaquist\u00e3o -LA=Rep\u00fablica Democr\u00e1tica Popular de Lao +LA=Rep\u00fablica Popular Democr\u00e1tica do Laos LB=L\u00edbano LC=Santa L\u00facia LR=Lib\u00e9ria @@ -325,10 +789,11 @@ LY=L\u00edbia MA=Marrocos MC=M\u00f4naco -MD=Moldova, Rep\u00fablica de +MD=Mold\u00e1via +MF=S\u00e3o Martinho MH=Ilhas Marshall -MK=Maced\u00f4nia, Rep\u00fablica da -MM=Mianm\u00e1 +MK=Maced\u00f4nia +MM=Mianmar [Birm\u00e2nia] MN=Mong\u00f3lia MO=Macau, Regi\u00e3o Admin. Especial da China MP=Ilhas Marianas do Norte @@ -345,7 +810,7 @@ NF=Ilha Norfolk NG=Nig\u00e9ria NI=Nicar\u00e1gua -NL=Pa\u00edses Baixos +NL=Holanda NO=Noruega NZ=Nova Zel\u00e2ndia OM=Om\u00e3 @@ -357,11 +822,12 @@ PL=Pol\u00f4nia PM=Saint Pierre e Miquelon PR=Porto Rico -PS=Territ\u00f3rio da Palestina +PS=Territ\u00f3rios palestinos PY=Paraguai QA=Catar RE=Reuni\u00e3o RO=Rom\u00eania +RS=S\u00e9rvia RU=R\u00fassia RW=Ruanda SA=Ar\u00e1bia Saudita @@ -383,7 +849,6 @@ TF=Territ\u00f3rios Franceses do Sul TH=Tail\u00e2ndia TJ=Tadjiquist\u00e3o -TL=Timor Leste TM=Turcomenist\u00e3o TN=Tun\u00edsia TR=Turquia @@ -403,4 +868,33 @@ YE=I\u00eamen ZA=\u00c1frica do Sul ZM=Z\u00e2mbia -ZW=Zimb\u00e1bwe +ZW=Zimb\u00e1bue +001=Mundo +002=\u00c1frica +003=Am\u00e9rica do Norte +005=Am\u00e9rica do Sul +011=\u00c1frica Ocidental +013=Am\u00e9rica Central +014=\u00c1frica Oriental +015=\u00c1frica do Norte +017=\u00c1frica Central +018=\u00c1frica Austral +019=Am\u00e9ricas +021=Am\u00e9rica Setentrional +029=Caribe +030=\u00c1sia Oriental +034=\u00c1sia do Sul +035=\u00c1sia Centro-Oriental +039=Europa do Sul +053=Austr\u00e1lia e Nova Zel\u00e2ndia +054=Melan\u00e9sia +057=Regi\u00e3o da Micron\u00e9sia +061=Polin\u00e9sia +142=\u00c1sia +143=\u00c1sia Central +145=\u00c1sia Ocidental +150=Europa +151=Europa Oriental +154=Europa Setentrional +155=Europa Ocidental +419=Am\u00e9rica Latina
--- a/src/share/classes/sun/util/resources/pt/LocaleNames_pt_BR.properties Mon Dec 23 14:03:25 2013 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -# -# Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. -# - -# -# COPYRIGHT AND PERMISSION NOTICE -# -# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved. -# Distributed under the Terms of Use in http://www.unicode.org/copyright.html. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of the Unicode data files and any associated documentation (the "Data -# Files") or Unicode software and any associated documentation (the -# "Software") to deal in the Data Files or Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, and/or sell copies of the Data Files or Software, and -# to permit persons to whom the Data Files or Software are furnished to do -# so, provided that (a) the above copyright notice(s) and this permission -# notice appear with all copies of the Data Files or Software, (b) both the -# above copyright notice(s) and this permission notice appear in associated -# documentation, and (c) there is clear notice in each modified Data File or -# in the Software as well as in the documentation associated with the Data -# File(s) or Software that the data or software has been modified. -# -# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF -# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS -# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR -# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -# PERFORMANCE OF THE DATA FILES OR SOFTWARE. -# -# Except as contained in this notice, the name of a copyright holder shall not -# be used in advertising or otherwise to promote the sale, use or other -# dealings in these Data Files or Software without prior written -# authorization of the copyright holder. -# - -# Generated automatically from the Common Locale Data Repository. DO NOT EDIT! - -ce=checheno -ik=inupiaque -jv=javan\u00eas -nd=ndebele do norte -nr=ndebele do sul -st=soto do sul -AX=Ilhas Aland -BA=B\u00f3snia-Herzegovina -BH=Bahrain -KP=Cor\u00e9ia do Norte -MK=Maced\u00f4nia -ZW=Zimb\u00e1bue
--- a/src/share/classes/sun/util/resources/pt/LocaleNames_pt_PT.properties Mon Dec 23 14:03:25 2013 -0500 +++ b/src/share/classes/sun/util/resources/pt/LocaleNames_pt_PT.properties Mon Dec 23 14:05:20 2013 -0500 @@ -1,104 +1,204 @@ # -# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2013, 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. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# 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. # +#Copyright (C) 1991-2012 Unicode, Inc. All rights reserved. Distributed under the +#Terms of Use in http://www.unicode.org/copyright.html. + +#Permission is hereby granted, free of charge, to any person obtaining a copy of +#the Unicode data files and any associated documentation (the "Data Files") or +#Unicode software and any associated documentation (the "Software") to deal in +#the Data Files or Software without restriction, including without limitation +#the rights to use, copy, modify, merge, publish, distribute, and/or sell copies +#of the Data Files or Software, and to permit persons to whom the Data Files or +#Software are furnished to do so, provided that (a) the above copyright notice(s) +#and this permission notice appear with all copies of the Data Files or +#Software, (b) both the above copyright notice(s) and this permission notice +#appear in associated documentation, and (c) there is clear notice in each +#modified Data File or in the Software as well as in the documentation +#associated with the Data File(s) or Software that the data or software has been +#modified. + +#THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +#PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +#THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +#DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +#OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR +#SOFTWARE. + +#Except as contained in this notice, the name of a copyright holder shall not be +#used in advertising or otherwise to promote the sale, use or other dealings in +#these Data Files or Software without prior written authorization of the +#copyright holder. + # -# COPYRIGHT AND PERMISSION NOTICE -# -# Copyright (C) 1991-2007 Unicode, Inc. All rights reserved. -# Distributed under the Terms of Use in http://www.unicode.org/copyright.html. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of the Unicode data files and any associated documentation (the "Data -# Files") or Unicode software and any associated documentation (the -# "Software") to deal in the Data Files or Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, and/or sell copies of the Data Files or Software, and -# to permit persons to whom the Data Files or Software are furnished to do -# so, provided that (a) the above copyright notice(s) and this permission -# notice appear with all copies of the Data Files or Software, (b) both the -# above copyright notice(s) and this permission notice appear in associated -# documentation, and (c) there is clear notice in each modified Data File or -# in the Software as well as in the documentation associated with the Data -# File(s) or Software that the data or software has been modified. +# Generated automatically from the Common Locale Data Repository. DO NOT EDIT! # -# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF -# THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS -# INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR -# CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF -# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -# PERFORMANCE OF THE DATA FILES OR SOFTWARE. -# -# Except as contained in this notice, the name of a copyright holder shall not -# be used in advertising or otherwise to promote the sale, use or other -# dealings in these Data Files or Software without prior written -# authorization of the copyright holder. -# - -# Generated automatically from the Common Locale Data Repository. DO NOT EDIT! - +af=afrikaans +ce=chechene cs=checo et=est\u00f3nio +hi=Hindi +hy=arm\u00e9nio +ig=igbo +ik=Inupiaq +jv=jv +mk=maced\u00f3nio +oc=proven\u00e7al +os=oss\u00e9tico pl=polaco -sl=esloveno +rm=Romanche +ta=T\u00e2mil +tg=tajique +to=tonga +afa=Afeghani (1927-2002) +ang=Florim das Antilhas Holandesas +art=idioma artifical +awa=Awadhi +bad=Dinar da B\u00f3snia-Herzeg\u00f3vina +bai=bamileke Languages +bam=Marco b\u00f3snio-herzeg\u00f3vino convers\u00edvel +bug=Buginese +cad=D\u00f3lar canadiano +cel=idioma c\u00e9ltico +chn=jarg\u00e3o chinook +cpe=crioulo ou pidgin do ingl\u00eas +cpf=crioulo ou pidgin do franc\u00eas +cpp=crioulo ou pidgin do portugu\u00eas +cus=idioma cuchita +dra=idioma drav\u00edtico +dyu=diula +egy=eg\u00edpcio cl\u00e1ssico +enm=ingl\u00eas medieval +fiu=idioma ugro-fin\u00eas +frm=franc\u00eas medieval +frs=fr\u00edsio oriental +gmh=alem\u00e3o medieval alto +grc=grego cl\u00e1ssico +gsw=alem\u00e3o da Su\u00ed\u00e7a +hsb=sorbiano superior +iba=Iban +khi=khoisan +lez=lezghiano +mga=irland\u00eas, medieval (900-1200) +nah=Nauatle +nds=baixo alem\u00e3o +nic=C\u00f3rdoba nicaraguano +non=norse, old +peo=persa arcaico (aprox. 600-400 a.C.) +pra=idioma pr\u00e1cito +pro=proven\u00e7al, arcaico (at\u00e9 1500) +rom=roman\u00eas +sai=idioma ind\u00edgeno sul-americano +sal=salishan languages +sgn=linguages de sinais +ssa=idioma nilo-sariano +tai=idioma tail\u00e2ndes +tet=T\u00e9tum +tog=togan\u00eas +tyv=tuviniano +wen=idioma s\u00f3rbio +Armn=arm\u00e9nio +Blis=s\u00edmbolos Bliss +Egyd=eg\u00edpcio dem\u00f3tico +Egyh=eg\u00edpcio hier\u00e1tico +Inds=indus +Laoo=Lao +Lina=linear A +Linb=linear B +Sylo=siloti nagri +Tale=tai le +Taml=tamil +Telu=telugu +Xsux=cuneiforme sumero-acadiano +Zxxx=n\u00e3o escrito +Zzzz=inv\u00e1lido ou desconhecido AE=Emiratos \u00c1rabes Unidos +AI=Anguila AM=Arm\u00e9nia AQ=Ant\u00e1rctica -AZ=Azerbeij\u00e3o -BA=B\u00f3snia-Herzegovina +AX=Ilhas \u00c5land +BF=Burkina-Faso +BH=Bahrein BJ=Benim +BW=Botswana BY=Bielorr\u00fassia +CC=Ilhas Cocos +CG=Congo-Brazzaville CM=Camar\u00f5es CX=Ilha do Natal CZ=Rep\u00fablica Checa EE=Est\u00f3nia EG=Egipto -EH=Sahara Ocidental -ER=Eritreia +EH=Sara Ocidental FK=Ilhas Falkland +FM=Estados Federados da Micron\u00e9sia +FO=Ilhas Faro\u00e9 GL=Gronel\u00e2ndia -GS=Ilhas South Georgia e South Sandwich GW=Guin\u00e9-Bissau -HK=Hong Kong - Regi\u00e3o Administrativa Especial da China +HK=Regi\u00e3o Administrativa Especial de Hong Kong +IR=Ir\u00e3o KE=Qu\u00e9nia KG=Quirguizist\u00e3o KN=Saint Kitts e Nevis -KP=Coreia do Norte -KR=Coreia do Sul KY=Ilhas Caim\u00e3o KZ=Cazaquist\u00e3o -LA=Lao, Rep\u00fablica Popular Democr\u00e1tica +LA=Laos, Rep\u00fablica Popular Democr\u00e1tica do LV=Let\u00f3nia MC=M\u00f3naco MD=Mold\u00e1via, Rep\u00fablica da MG=Madag\u00e1scar -MK=Maced\u00f3nia, Rep\u00fablica da -MO=Macau - Regi\u00e3o Administrativa Especial da China +MK=Maced\u00f3nia +MM=Mianmar +MO=Regi\u00e3o Administrativa Especial de Macau MP=Ilhas Mariana do Norte +MS=Monserrate MU=Maur\u00edcias NC=Nova Caled\u00f3nia -PG=Papua Nova Guin\u00e9 +NL=Pa\u00edses Baixos +PG=Papu\u00e1sia-Nova Guin\u00e9 PL=Pol\u00f3nia PS=Territ\u00f3rio Palestiniano -RE=Reunion +QA=Qatar RO=Rom\u00e9nia SC=Seicheles SG=Singapura SI=Eslov\u00e9nia SM=S\u00e3o Marino TC=Ilhas Turcas e Caicos -TD=Tchade -TF=Territ\u00f3rios Franceses a Sul TJ=Tajiquist\u00e3o TM=Turquemenist\u00e3o -UM=Ilhas Minor Outlying (E.U.A) -UZ=Uzbaquist\u00e3o -VA=Santa S\u00e9 (Estado da Cidade do Vaticano) -VC=Saint Vincent e Grenadines -VG=Ilhas Virgin Brit\u00e2nicas -VI=Ilhas Virgin E.U.A. +TT=Trindade e Tobago +UZ=Usbequist\u00e3o +VI=Ilhas Virgens E.U.A. VN=Vietname YE=I\u00e9men +ZW=Zimbabwe +009=Oce\u00e2nia +015=Norte de \u00c1frica +035=Sudeste Asi\u00e1tico +154=Europa do Norte
--- a/test/java/time/tck/java/time/AbstractTCKTest.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/AbstractTCKTest.java Mon Dec 23 14:05:20 2013 -0500 @@ -58,17 +58,18 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertSame; +import static org.testng.Assert.fail; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; +import java.io.DataOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.ObjectStreamConstants; import java.io.Serializable; import java.lang.reflect.Field; -import java.util.Arrays; import java.util.Formatter; /** @@ -164,6 +165,42 @@ } } + /** + * Verify the class cannot be deserialized from a handcoded stream. + * Fail if the deserialization does <em>not</em> throw an Exception. + * @param serClass the class to embed in the handcoded stream + * @throws Exception if an unexpected condition occurs + */ + protected static void assertNotSerializable(Class<?> serClass) throws Exception { + Field field = serClass.getDeclaredField("serialVersionUID"); + field.setAccessible(true); + long serVer = (Long) field.get(null); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (DataOutputStream out = new DataOutputStream(baos)) { + out.writeShort(ObjectStreamConstants.STREAM_MAGIC); + out.writeShort(ObjectStreamConstants.STREAM_VERSION); + out.writeByte(ObjectStreamConstants.TC_OBJECT); + out.writeByte(ObjectStreamConstants.TC_CLASSDESC); + out.writeUTF(serClass.getName()); + out.writeLong(serVer); + out.writeByte(ObjectStreamConstants.SC_SERIALIZABLE); // Flags ObjectStreamConstants + out.writeShort(0); // number of fields + out.writeByte(ObjectStreamConstants.TC_ENDBLOCKDATA); + out.writeByte(ObjectStreamConstants.TC_NULL); // no superclasses + } + + byte[] bytes = baos.toByteArray(); + + try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes); + ObjectInputStream in = new ObjectInputStream(bis)) { + Object o = in.readObject(); + } catch (Exception ioe) { + // Expected exception + return; + } + fail("Class should not be deserializable " + serClass.getName()); + } + /** * Utility method to dump a byte array in a java syntax.
--- a/test/java/time/tck/java/time/chrono/serial/TCKChronoLocalDateSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/chrono/serial/TCKChronoLocalDateSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -161,4 +161,25 @@ assertSerializedBySer(date, hijrahDateBytes, hijrahChronoBytes, dateBytes); } + + + //----------------------------------------------------------------------- + // Regular data factory for names and descriptions of available calendars + //----------------------------------------------------------------------- + @DataProvider(name = "invalidSerialformClasses") + Object[][] invalid_serial_classes() { + return new Object[][]{ + {JapaneseEra.class}, + {JapaneseDate.class}, + {MinguoDate.class}, + {ThaiBuddhistDate.class}, + {HijrahDate.class}, + }; + } + + @Test(dataProvider="invalidSerialformClasses") + public void test_invalid_serialform(Class<?> clazz) throws Exception { + assertNotSerializable(clazz); + } + }
--- a/test/java/time/tck/java/time/chrono/serial/TCKChronologySerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/chrono/serial/TCKChronologySerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -111,4 +111,24 @@ assertSerializedBySer(chrono, bytes); } + + //----------------------------------------------------------------------- + // Regular data factory for names and descriptions of available calendars + //----------------------------------------------------------------------- + @DataProvider(name = "invalidSerialformClasses") + Object[][] invalid_serial_classes() { + return new Object[][]{ + {IsoChronology.class}, + {JapaneseChronology.class}, + {MinguoChronology.class}, + {ThaiBuddhistChronology.class}, + {HijrahChronology.class}, + }; + } + + @Test(dataProvider="invalidSerialformClasses") + public void test_invalid_serialform(Class<?> clazz) throws Exception { + assertNotSerializable(clazz); + } + }
--- a/test/java/time/tck/java/time/serial/TCKDurationSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKDurationSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -110,4 +110,9 @@ assertSerializableSame(Duration.ZERO); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(Duration.class); + } + }
--- a/test/java/time/tck/java/time/serial/TCKInstantSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKInstantSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -91,5 +91,10 @@ assertSerializedBySer(Instant.ofEpochSecond(654321, 123456789), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(Instant.class); + } + }
--- a/test/java/time/tck/java/time/serial/TCKLocalDateSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKLocalDateSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -102,4 +102,9 @@ assertSerializedBySer(LocalDate.of(2012, 9, 16), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(LocalDate.class); + } + }
--- a/test/java/time/tck/java/time/serial/TCKLocalDateTimeSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKLocalDateTimeSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -99,4 +99,9 @@ assertSerializedBySer(LocalDateTime.of(2012, 9, 16, 22, 17, 59, 459_000_000), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(LocalDateTime.class); + } + }
--- a/test/java/time/tck/java/time/serial/TCKLocalTimeSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKLocalTimeSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -141,5 +141,9 @@ assertSerializedBySer(LocalTime.of(22, 17, 59, 459_000_000), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(LocalTime.class); + } }
--- a/test/java/time/tck/java/time/serial/TCKMonthDaySerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKMonthDaySerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -99,4 +99,9 @@ assertSerializedBySer(MonthDay.of(9, 16), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(MonthDay.class); + } + }
--- a/test/java/time/tck/java/time/serial/TCKOffsetDateTimeSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKOffsetDateTimeSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -111,4 +111,9 @@ assertSerializedBySer(OffsetDateTime.of(ldt, ZoneOffset.ofHours(1)), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(OffsetDateTime.class); + } + }
--- a/test/java/time/tck/java/time/serial/TCKOffsetTimeSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKOffsetTimeSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -107,5 +107,9 @@ assertSerializedBySer(OffsetTime.of(22, 17, 59, 464_000_000, ZoneOffset.ofHours(1)), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(OffsetTime.class); + } }
--- a/test/java/time/tck/java/time/serial/TCKPeriodSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKPeriodSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -78,4 +78,9 @@ assertSerializable(Period.of(1, 2, 3)); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(Period.class); + } + }
--- a/test/java/time/tck/java/time/serial/TCKYearMonthSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKYearMonthSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -100,4 +100,9 @@ assertSerializedBySer(YearMonth.of(2012, 9), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(YearMonth.class); + } + }
--- a/test/java/time/tck/java/time/serial/TCKYearSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKYearSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -91,4 +91,9 @@ assertSerializedBySer(Year.of(2012), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(Year.class); + } + }
--- a/test/java/time/tck/java/time/serial/TCKZoneOffsetSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKZoneOffsetSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -114,5 +114,9 @@ assertSerializedBySer(ZoneOffset.ofTotalSeconds(53265), bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(ZoneOffset.class); + } }
--- a/test/java/time/tck/java/time/serial/TCKZonedDateTimeSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/serial/TCKZonedDateTimeSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -139,4 +139,9 @@ assertSerializedBySer(zdt, bytes); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(ZonedDateTime.class); + } + }
--- a/test/java/time/tck/java/time/temporal/serial/TCKValueRangeSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/temporal/serial/TCKValueRangeSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -60,11 +60,16 @@ package tck.java.time.temporal.serial; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.fail; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.InvalidObjectException; +import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.time.temporal.ValueRange; +import java.util.Arrays; import org.testng.annotations.Test; @@ -117,4 +122,57 @@ } } + @Test + public void test_invalid_serialform() throws Exception { + byte[] template = { + (byte)172, (byte)237, 0, 5, 115, 114, 0, 29, 106, 97, /* \u00ac \u00ed \u0000 \u0005 s r \u0000 \u001d j a */ + 118, 97, 46, 116, 105, 109, 101, 46, 116, 101, /* v a . t i m e . t e */ + 109, 112, 111, 114, 97, 108, 46, 86, 97, 108, /* m p o r a l . V a l */ + 117, 101, 82, 97, 110, 103, 101, (byte)154, 113, (byte)169, /* u e R a n g e \u009a q \u00a9 */ + 86, (byte)242, (byte)205, 90, (byte)184, 2, 0, 4, 74, 0, /* V \u00f2 \u00cd Z \u00b8 \u0002 \u0000 \u0004 J \u0000 */ + 10, 109, 97, 120, 76, 97, 114, 103, 101, 115, /* m a x L a r g e s */ + 116, 74, 0, 11, 109, 97, 120, 83, 109, 97, /* t J \u0000 \u000b m a x S m a */ + 108, 108, 101, 115, 116, 74, 0, 10, 109, 105,/* l l e s t J \u0000 m i */ + 110, 76, 97, 114, 103, 101, 115, 116, 74, 0, /* n L a r g e s t J \u0000 */ + 11, 109, 105, 110, 83, 109, 97, 108, 108, 101, /* \u000b m i n S m a l l e */ + 115, 116, 120, 112, 0, 0, 0, 0, 0, 0, /* s t x p \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 */ + 0, 40, 0, 0, 0, 0, 0, 0, 0, 30, /* \u0000 ( \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u001e */ + 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, /* \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0000 \u0014 \u0000 \u0000 */ + 0, 0, 0, 0, 0, 10, /* \u0000 \u0000 \u0000 \u0000 \u0000 */ + }; + + // minSmallest > minLargest, insert invalid values and deserialize + byte[] bad1 = {0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 4}; + byte[] val = Arrays.copyOf(template, template.length); + System.arraycopy(bad1, 0, val, 114, bad1.length); + try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(val))) { + in.readObject(); + fail("Invalid minSmallest > minLargest " + ValueRange.class.getName()); + } catch (InvalidObjectException ioe) { + // Expected exception + } + + // maxSmallest > maxLargest, insert invalid values and deserialize + byte[] bad2 = {0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 3}; + val = Arrays.copyOf(template, template.length); + System.arraycopy(bad1, 0, val, 114, bad2.length); + try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(val))) { + in.readObject(); + fail("Invalid maxSmallest > maxLargest " + ValueRange.class.getName()); + } catch (InvalidObjectException ioe) { + // Expected exception + } + + // minLagest > maxLargest, insert invalid values and deserialize + byte[] bad3 = {0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 4}; + val = Arrays.copyOf(template, template.length); + System.arraycopy(bad1, 0, val, 114, bad3.length); + try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(val))) { + in.readObject(); + fail("Invalid minLagest > maxLargest " + ValueRange.class.getName()); + } catch (InvalidObjectException ioe) { + // Expected exception + } + } + }
--- a/test/java/time/tck/java/time/temporal/serial/TCKWeekFieldsSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/temporal/serial/TCKWeekFieldsSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -56,13 +56,21 @@ */ package tck.java.time.temporal.serial; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.fail; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import tck.java.time.AbstractTCKTest; import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.time.DayOfWeek; import java.time.temporal.WeekFields; +import java.util.Arrays; /** * Test serialization of WeekFields. @@ -90,5 +98,58 @@ return objects; } + @Test + public void test_invalid_serialform() throws Exception { + WeekFields wf = WeekFields.of(DayOfWeek.MONDAY, 7); + ByteArrayOutputStream baos = new ByteArrayOutputStream(64); + ObjectOutputStream out = new ObjectOutputStream(baos); + out.writeObject(wf); + byte[] template = baos.toByteArray(); + + // (minimalDays = 5) { + byte[] good1 = {0, 0, 0, 5}; + byte[] val = Arrays.copyOf(template, template.length); + System.arraycopy(good1, 0, val, 105, good1.length); + try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(val))) { + Object o = in.readObject(); + assertEquals(o, WeekFields.of(DayOfWeek.MONDAY, 5), "Should be MONDAY, min = 5"); + } catch (Exception ioe) { + fail("Unexpected exception " + ioe); + } + + // (minimalDays < 1) { + byte[] bad1 = {0, 0, 0, 0}; + val = Arrays.copyOf(template, template.length); + System.arraycopy(bad1, 0, val, 105, bad1.length); + try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(val))) { + in.readObject(); + fail("Invalid minimalDays < 1 " + WeekFields.class.getName()); + } catch (Exception ioe) { + // Expected exception + } + + // (minimalDays > 7) { + byte[] bad2 = {0, 0, 0, 8}; + val = Arrays.copyOf(template, template.length); + System.arraycopy(bad2, 0, val, 105, bad2.length); + try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(val))) { + in.readObject(); + fail("Invalid minimalDays > 7 " + WeekFields.class.getName()); + } catch (Exception ioe) { + // Expected exception + } + + // (StartDay = null) { + byte[] bad3 = {0x70}; + val = Arrays.copyOf(template, 110); + System.arraycopy(bad3, 0, val, 105 + 4, bad3.length); + try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(val))) { + in.readObject(); + fail("Invalid startDay == null " + WeekFields.class.getName()); + } catch (Exception ioe) { + // Expected exception + } + + } }
--- a/test/java/time/tck/java/time/zone/serial/TCKZoneOffsetTransitionRuleSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/zone/serial/TCKZoneOffsetTransitionRuleSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -133,4 +133,9 @@ assertSerializable(test); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(ZoneOffsetTransitionRule.class); + } + }
--- a/test/java/time/tck/java/time/zone/serial/TCKZoneOffsetTransitionSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/zone/serial/TCKZoneOffsetTransitionSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -110,4 +110,9 @@ assertSerializable(test); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(ZoneOffsetTransition.class); + } + }
--- a/test/java/time/tck/java/time/zone/serial/TCKZoneRulesSerialization.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/java/time/tck/java/time/zone/serial/TCKZoneRulesSerialization.java Mon Dec 23 14:05:20 2013 -0500 @@ -70,11 +70,13 @@ import static org.testng.Assert.assertEquals; +import tck.java.time.AbstractTCKTest; + /** * Test serialization of ZoneRules. */ @Test -public class TCKZoneRulesSerialization { +public class TCKZoneRulesSerialization extends AbstractTCKTest{ public void test_serialization_loaded() throws Exception { assertSerialization(europeLondon()); @@ -118,5 +120,9 @@ return ZoneId.of("America/New_York").getRules(); } + @Test + public void test_invalid_serialform() throws Exception { + assertNotSerializable(ZoneRules.class); + } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/javax/xml/jaxp/parsers/8029955/EntityScannerTest.java Mon Dec 23 14:05:20 2013 -0500 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2013, 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 8029955 + * @summary test that the size of whitespace lookup buffer is adjusted as needed + * @run main EntityScannerTest + */ + +import java.io.*; +import org.xml.sax.InputSource; +import org.xml.sax.XMLReader; +import org.xml.sax.helpers.XMLReaderFactory; + + +/** + * + * @author Joe Wang huizhe.wang@oracle.com + */ +public class EntityScannerTest { + + /** + * main method. + * + * @param args Standard args. + */ + public static void main(String[] args) { + try { + StringBuilder builder = new StringBuilder(); + builder.append("<root attr=\""); + for (int i = 0; i < 200; i++) { + builder.append("\n"); + } + builder.append("foo."); + builder.append("\" />"); + final XMLReader reader = XMLReaderFactory.createXMLReader(); + System.out.println(reader.getClass().getName()); + reader.parse(new InputSource(new StringReader(builder.toString()))); + } catch (ArrayIndexOutOfBoundsException e) { + throw new RuntimeException("Test failed: ArrayIndexOutOfBoundsException " + e.getMessage()); + } catch (Exception e) { + throw new RuntimeException(e.getMessage()); + } + } + +}
--- a/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/DHKeyExchange/DHEKeySizing.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/DHKeyExchange/DHEKeySizing.java Mon Dec 23 14:05:20 2013 -0500 @@ -443,7 +443,7 @@ TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); tmf.init(ts); - SSLContext sslCtx = SSLContext.getInstance("TLS"); + SSLContext sslCtx = SSLContext.getInstance("TLSv1"); sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); return sslCtx;
--- a/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/EngineArgs/DebugReportsOneExtraByte.java Mon Dec 23 14:05:20 2013 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2013, 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 @@ -159,7 +159,7 @@ TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); tmf.init(ts); - SSLContext sslCtx = SSLContext.getInstance("TLS"); + SSLContext sslCtx = SSLContext.getInstance("TLSv1"); sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/CustomizedDefaultProtocols.java Mon Dec 23 14:05:20 2013 -0500 @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2013, 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. + */ + +// SunJSSE does not support dynamic system properties, no way to re-use +// system properties in samevm/agentvm mode. + +/* + * @test + * @bug 7093640 + * @summary Enable TLS 1.1 and TLS 1.2 by default in client side of SunJSSE + * @run main/othervm -Djdk.tls.client.protocols="SSLv3,TLSv1,TLSv1.1" + * CustomizedDefaultProtocols + */ + +import javax.net.*; +import javax.net.ssl.*; +import java.util.Arrays; + +public class CustomizedDefaultProtocols { + static enum ContextVersion { + TLS_CV_01("SSL", + new String[] {"SSLv3", "TLSv1", "TLSv1.1"}), + TLS_CV_02("TLS", + new String[] {"SSLv3", "TLSv1", "TLSv1.1"}), + TLS_CV_03("SSLv3", + new String[] {"SSLv3", "TLSv1"}), + TLS_CV_04("TLSv1", + new String[] {"SSLv3", "TLSv1"}), + TLS_CV_05("TLSv1.1", + new String[] {"SSLv3", "TLSv1", "TLSv1.1"}), + TLS_CV_06("TLSv1.2", + new String[] {"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}), + TLS_CV_07("Default", + new String[] {"SSLv3", "TLSv1", "TLSv1.1"}); + + final String contextVersion; + final String[] enabledProtocols; + final static String[] supportedProtocols = new String[] { + "SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}; + + ContextVersion(String contextVersion, String[] enabledProtocols) { + this.contextVersion = contextVersion; + this.enabledProtocols = enabledProtocols; + } + } + + private static boolean checkProtocols(String[] target, String[] expected) { + boolean success = true; + if (target.length == 0) { + System.out.println("\tError: No protocols"); + success = false; + } + + if (!Arrays.equals(target, expected)) { + System.out.println("\tError: Expected to get protocols " + + Arrays.toString(expected)); + System.out.println("\tError: The actual protocols " + + Arrays.toString(target)); + success = false; + } + + return success; + } + + private static boolean checkCipherSuites(String[] target) { + boolean success = true; + if (target.length == 0) { + System.out.println("\tError: No cipher suites"); + success = false; + } + + return success; + } + + public static void main(String[] args) throws Exception { + boolean failed = false; + for (ContextVersion cv : ContextVersion.values()) { + System.out.println("Checking SSLContext of " + cv.contextVersion); + SSLContext context = SSLContext.getInstance(cv.contextVersion); + + // Default SSLContext is initialized automatically. + if (!cv.contextVersion.equals("Default")) { + // Use default TK, KM and random. + context.init((KeyManager[])null, (TrustManager[])null, null); + } + + // + // Check SSLContext + // + // Check default SSLParameters of SSLContext + System.out.println("\tChecking default SSLParameters"); + SSLParameters parameters = context.getDefaultSSLParameters(); + + String[] protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + String[] ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // Check supported SSLParameters of SSLContext + System.out.println("\tChecking supported SSLParameters"); + parameters = context.getSupportedSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // + // Check SSLEngine + // + // Check SSLParameters of SSLEngine + System.out.println(); + System.out.println("\tChecking SSLEngine of this SSLContext"); + System.out.println("\tChecking SSLEngine.getSSLParameters()"); + SSLEngine engine = context.createSSLEngine(); + engine.setUseClientMode(true); + parameters = engine.getSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getEnabledProtocols()"); + protocols = engine.getEnabledProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()"); + ciphers = engine.getEnabledCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getSupportedProtocols()"); + protocols = engine.getSupportedProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println( + "\tChecking SSLEngine.getSupportedCipherSuites()"); + ciphers = engine.getSupportedCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // + // Check SSLSocket + // + // Check SSLParameters of SSLSocket + System.out.println(); + System.out.println("\tChecking SSLSocket of this SSLContext"); + System.out.println("\tChecking SSLSocket.getSSLParameters()"); + SocketFactory fac = context.getSocketFactory(); + SSLSocket socket = (SSLSocket)fac.createSocket(); + parameters = socket.getSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getEnabledProtocols()"); + protocols = socket.getEnabledProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()"); + ciphers = socket.getEnabledCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getSupportedProtocols()"); + protocols = socket.getSupportedProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println( + "\tChecking SSLEngine.getSupportedCipherSuites()"); + ciphers = socket.getSupportedCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // + // Check SSLServerSocket + // + // Check SSLParameters of SSLServerSocket + System.out.println(); + System.out.println("\tChecking SSLServerSocket of this SSLContext"); + System.out.println("\tChecking SSLServerSocket.getSSLParameters()"); + SSLServerSocketFactory sf = context.getServerSocketFactory(); + SSLServerSocket ssocket = (SSLServerSocket)sf.createServerSocket(); + parameters = ssocket.getSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getEnabledProtocols()"); + protocols = ssocket.getEnabledProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()"); + ciphers = ssocket.getEnabledCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getSupportedProtocols()"); + protocols = ssocket.getSupportedProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println( + "\tChecking SSLEngine.getSupportedCipherSuites()"); + ciphers = ssocket.getSupportedCipherSuites(); + failed |= !checkCipherSuites(ciphers); + } + + if (failed) { + throw new Exception("Run into problems, see log for more details"); + } else { + System.out.println("\t... Success"); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/DefaultEnabledProtocols.java Mon Dec 23 14:05:20 2013 -0500 @@ -0,0 +1,238 @@ +/* + * Copyright (c) 2013, 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. + */ + +// SunJSSE does not support dynamic system properties, no way to re-use +// system properties in samevm/agentvm mode. + +/* + * @test + * @bug 7093640 + * @summary Enable TLS 1.1 and TLS 1.2 by default in client side of SunJSSE + * @run main/othervm DefaultEnabledProtocols + */ + +import javax.net.*; +import javax.net.ssl.*; +import java.util.Arrays; + +public class DefaultEnabledProtocols { + static enum ContextVersion { + TLS_CV_01("SSL", + new String[] {"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}), + TLS_CV_02("TLS", + new String[] {"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}), + TLS_CV_03("SSLv3", + new String[] {"SSLv3", "TLSv1"}), + TLS_CV_04("TLSv1", + new String[] {"SSLv3", "TLSv1"}), + TLS_CV_05("TLSv1.1", + new String[] {"SSLv3", "TLSv1", "TLSv1.1"}), + TLS_CV_06("TLSv1.2", + new String[] {"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}), + TLS_CV_07("Default", + new String[] {"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}); + + final String contextVersion; + final String[] enabledProtocols; + final static String[] supportedProtocols = new String[] { + "SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}; + + ContextVersion(String contextVersion, String[] enabledProtocols) { + this.contextVersion = contextVersion; + this.enabledProtocols = enabledProtocols; + } + } + + private static boolean checkProtocols(String[] target, String[] expected) { + boolean success = true; + if (target.length == 0) { + System.out.println("\tError: No protocols"); + success = false; + } + + if (!Arrays.equals(target, expected)) { + System.out.println("\tError: Expected to get protocols " + + Arrays.toString(expected)); + System.out.println("\tError: The actual protocols " + + Arrays.toString(target)); + success = false; + } + + return success; + } + + private static boolean checkCipherSuites(String[] target) { + boolean success = true; + if (target.length == 0) { + System.out.println("\tError: No cipher suites"); + success = false; + } + + return success; + } + + public static void main(String[] args) throws Exception { + boolean failed = false; + for (ContextVersion cv : ContextVersion.values()) { + System.out.println("Checking SSLContext of " + cv.contextVersion); + SSLContext context = SSLContext.getInstance(cv.contextVersion); + + // Default SSLContext is initialized automatically. + if (!cv.contextVersion.equals("Default")) { + // Use default TK, KM and random. + context.init((KeyManager[])null, (TrustManager[])null, null); + } + + // + // Check SSLContext + // + // Check default SSLParameters of SSLContext + System.out.println("\tChecking default SSLParameters"); + SSLParameters parameters = context.getDefaultSSLParameters(); + + String[] protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + String[] ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // Check supported SSLParameters of SSLContext + System.out.println("\tChecking supported SSLParameters"); + parameters = context.getSupportedSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // + // Check SSLEngine + // + // Check SSLParameters of SSLEngine + System.out.println(); + System.out.println("\tChecking SSLEngine of this SSLContext"); + System.out.println("\tChecking SSLEngine.getSSLParameters()"); + SSLEngine engine = context.createSSLEngine(); + engine.setUseClientMode(true); + parameters = engine.getSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getEnabledProtocols()"); + protocols = engine.getEnabledProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()"); + ciphers = engine.getEnabledCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getSupportedProtocols()"); + protocols = engine.getSupportedProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println( + "\tChecking SSLEngine.getSupportedCipherSuites()"); + ciphers = engine.getSupportedCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // + // Check SSLSocket + // + // Check SSLParameters of SSLSocket + System.out.println(); + System.out.println("\tChecking SSLSocket of this SSLContext"); + System.out.println("\tChecking SSLSocket.getSSLParameters()"); + SocketFactory fac = context.getSocketFactory(); + SSLSocket socket = (SSLSocket)fac.createSocket(); + parameters = socket.getSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getEnabledProtocols()"); + protocols = socket.getEnabledProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()"); + ciphers = socket.getEnabledCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getSupportedProtocols()"); + protocols = socket.getSupportedProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println( + "\tChecking SSLEngine.getSupportedCipherSuites()"); + ciphers = socket.getSupportedCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // + // Check SSLServerSocket + // + // Check SSLParameters of SSLServerSocket + System.out.println(); + System.out.println("\tChecking SSLServerSocket of this SSLContext"); + System.out.println("\tChecking SSLServerSocket.getSSLParameters()"); + SSLServerSocketFactory sf = context.getServerSocketFactory(); + SSLServerSocket ssocket = (SSLServerSocket)sf.createServerSocket(); + parameters = ssocket.getSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getEnabledProtocols()"); + protocols = ssocket.getEnabledProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()"); + ciphers = ssocket.getEnabledCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getSupportedProtocols()"); + protocols = ssocket.getSupportedProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println( + "\tChecking SSLEngine.getSupportedCipherSuites()"); + ciphers = ssocket.getSupportedCipherSuites(); + failed |= !checkCipherSuites(ciphers); + } + + if (failed) { + throw new Exception("Run into problems, see log for more details"); + } else { + System.out.println("\t... Success"); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/IllegalProtocolProperty.java Mon Dec 23 14:05:20 2013 -0500 @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2013, 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. + */ + +// SunJSSE does not support dynamic system properties, no way to re-use +// system properties in samevm/agentvm mode. + +/* + * @test + * @bug 7093640 + * @summary Enable TLS 1.1 and TLS 1.2 by default in client side of SunJSSE + * @run main/othervm -Djdk.tls.client.protocols="XSLv3,TLSv1" + * IllegalProtocolProperty + */ + +import javax.net.ssl.*; +import java.security.NoSuchAlgorithmException; + +public class IllegalProtocolProperty { + static enum ContextVersion { + TLS_CV_01("SSL", "TLSv1", "TLSv1.2", true), + TLS_CV_02("TLS", "TLSv1", "TLSv1.2", true), + TLS_CV_03("SSLv3", "TLSv1", "TLSv1.2", false), + TLS_CV_04("TLSv1", "TLSv1", "TLSv1.2", false), + TLS_CV_05("TLSv1.1", "TLSv1.1", "TLSv1.2", false), + TLS_CV_06("TLSv1.2", "TLSv1.2", "TLSv1.2", false), + TLS_CV_07("Default", "TLSv1", "TLSv1.2", true); + + final String contextVersion; + final String defaultProtocolVersion; + final String supportedProtocolVersion; + final boolean impacted; + + ContextVersion(String contextVersion, String defaultProtocolVersion, + String supportedProtocolVersion, boolean impacted) { + this.contextVersion = contextVersion; + this.defaultProtocolVersion = defaultProtocolVersion; + this.supportedProtocolVersion = supportedProtocolVersion; + this.impacted = impacted; + } + } + + public static void main(String[] args) throws Exception { + for (ContextVersion cv : ContextVersion.values()) { + System.out.println("Checking SSLContext of " + cv.contextVersion); + + SSLContext context; + try { + context = SSLContext.getInstance(cv.contextVersion); + if (cv.impacted) { + throw new Exception( + "illegal system property jdk.tls.client.protocols: " + + System.getProperty("jdk.tls.client.protocols")); + } + } catch (NoSuchAlgorithmException nsae) { + if (cv.impacted) { + System.out.println( + "\tIgnore: illegal system property " + + "jdk.tls.client.protocols=" + + System.getProperty("jdk.tls.client.protocols")); + continue; + } else { + throw nsae; + } + } + + // Default SSLContext is initialized automatically. + if (!cv.contextVersion.equals("Default")) { + // Use default TK, KM and random. + context.init((KeyManager[])null, (TrustManager[])null, null); + } + + SSLParameters parameters = context.getDefaultSSLParameters(); + + String[] protocols = parameters.getProtocols(); + String[] ciphers = parameters.getCipherSuites(); + + if (protocols.length == 0 || ciphers.length == 0) { + throw new Exception("No default protocols or cipher suites"); + } + + boolean isMatch = false; + for (String protocol : protocols) { + System.out.println("\tdefault protocol version " + protocol); + if (protocol.equals(cv.defaultProtocolVersion)) { + isMatch = true; + break; + } + } + + if (!isMatch) { + throw new Exception("No matched default protocol"); + } + + parameters = context.getSupportedSSLParameters(); + + protocols = parameters.getProtocols(); + ciphers = parameters.getCipherSuites(); + + if (protocols.length == 0 || ciphers.length == 0) { + throw new Exception("No supported protocols or cipher suites"); + } + + isMatch = false; + for (String protocol : protocols) { + System.out.println("\tsupported protocol version " + protocol); + if (protocol.equals(cv.supportedProtocolVersion)) { + isMatch = true; + break; + } + } + + if (!isMatch) { + throw new Exception("No matched supported protocol"); + } + System.out.println("\t... Success"); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/NoOldVersionContext.java Mon Dec 23 14:05:20 2013 -0500 @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2013, 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. + */ + +// SunJSSE does not support dynamic system properties, no way to re-use +// system properties in samevm/agentvm mode. + +/* + * @test + * @bug 7093640 + * @summary Enable TLS 1.1 and TLS 1.2 by default in client side of SunJSSE + * @run main/othervm -Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2" + * NoOldVersionContext + */ + +import javax.net.*; +import javax.net.ssl.*; +import java.util.Arrays; + +public class NoOldVersionContext { + static enum ContextVersion { + TLS_CV_01("SSL", + new String[] {"TLSv1", "TLSv1.1", "TLSv1.2"}), + TLS_CV_02("TLS", + new String[] {"TLSv1", "TLSv1.1", "TLSv1.2"}), + TLS_CV_03("SSLv3", + new String[] {"SSLv3", "TLSv1"}), + TLS_CV_04("TLSv1", + new String[] {"SSLv3", "TLSv1"}), + TLS_CV_05("TLSv1.1", + new String[] {"SSLv3", "TLSv1", "TLSv1.1"}), + TLS_CV_06("TLSv1.2", + new String[] {"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}), + TLS_CV_07("Default", + new String[] {"TLSv1", "TLSv1.1", "TLSv1.2"}); + + final String contextVersion; + final String[] enabledProtocols; + final static String[] supportedProtocols = new String[] { + "SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}; + + ContextVersion(String contextVersion, String[] enabledProtocols) { + this.contextVersion = contextVersion; + this.enabledProtocols = enabledProtocols; + } + } + + private static boolean checkProtocols(String[] target, String[] expected) { + boolean success = true; + if (target.length == 0) { + System.out.println("\tError: No protocols"); + success = false; + } + + if (!Arrays.equals(target, expected)) { + System.out.println("\tError: Expected to get protocols " + + Arrays.toString(expected)); + System.out.println("\tError: The actual protocols " + + Arrays.toString(target)); + success = false; + } + + return success; + } + + private static boolean checkCipherSuites(String[] target) { + boolean success = true; + if (target.length == 0) { + System.out.println("\tError: No cipher suites"); + success = false; + } + + return success; + } + + public static void main(String[] args) throws Exception { + boolean failed = false; + for (ContextVersion cv : ContextVersion.values()) { + System.out.println("Checking SSLContext of " + cv.contextVersion); + SSLContext context = SSLContext.getInstance(cv.contextVersion); + + // Default SSLContext is initialized automatically. + if (!cv.contextVersion.equals("Default")) { + // Use default TK, KM and random. + context.init((KeyManager[])null, (TrustManager[])null, null); + } + + // + // Check SSLContext + // + // Check default SSLParameters of SSLContext + System.out.println("\tChecking default SSLParameters"); + SSLParameters parameters = context.getDefaultSSLParameters(); + + String[] protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + String[] ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // Check supported SSLParameters of SSLContext + System.out.println("\tChecking supported SSLParameters"); + parameters = context.getSupportedSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // + // Check SSLEngine + // + // Check SSLParameters of SSLEngine + System.out.println(); + System.out.println("\tChecking SSLEngine of this SSLContext"); + System.out.println("\tChecking SSLEngine.getSSLParameters()"); + SSLEngine engine = context.createSSLEngine(); + engine.setUseClientMode(true); + parameters = engine.getSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getEnabledProtocols()"); + protocols = engine.getEnabledProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()"); + ciphers = engine.getEnabledCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getSupportedProtocols()"); + protocols = engine.getSupportedProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println( + "\tChecking SSLEngine.getSupportedCipherSuites()"); + ciphers = engine.getSupportedCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // + // Check SSLSocket + // + // Check SSLParameters of SSLSocket + System.out.println(); + System.out.println("\tChecking SSLSocket of this SSLContext"); + System.out.println("\tChecking SSLSocket.getSSLParameters()"); + SocketFactory fac = context.getSocketFactory(); + SSLSocket socket = (SSLSocket)fac.createSocket(); + parameters = socket.getSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getEnabledProtocols()"); + protocols = socket.getEnabledProtocols(); + failed |= !checkProtocols(protocols, cv.enabledProtocols); + + System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()"); + ciphers = socket.getEnabledCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getSupportedProtocols()"); + protocols = socket.getSupportedProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println( + "\tChecking SSLEngine.getSupportedCipherSuites()"); + ciphers = socket.getSupportedCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + // + // Check SSLServerSocket + // + // Check SSLParameters of SSLServerSocket + System.out.println(); + System.out.println("\tChecking SSLServerSocket of this SSLContext"); + System.out.println("\tChecking SSLServerSocket.getSSLParameters()"); + SSLServerSocketFactory sf = context.getServerSocketFactory(); + SSLServerSocket ssocket = (SSLServerSocket)sf.createServerSocket(); + parameters = ssocket.getSSLParameters(); + + protocols = parameters.getProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + ciphers = parameters.getCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getEnabledProtocols()"); + protocols = ssocket.getEnabledProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()"); + ciphers = ssocket.getEnabledCipherSuites(); + failed |= !checkCipherSuites(ciphers); + + System.out.println("\tChecking SSLEngine.getSupportedProtocols()"); + protocols = ssocket.getSupportedProtocols(); + failed |= !checkProtocols(protocols, cv.supportedProtocols); + + System.out.println( + "\tChecking SSLEngine.getSupportedCipherSuites()"); + ciphers = ssocket.getSupportedCipherSuites(); + failed |= !checkCipherSuites(ciphers); + } + + if (failed) { + throw new Exception("Run into problems, see log for more details"); + } else { + System.out.println("\t... Success"); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLContextImpl/SSLContextVersion.java Mon Dec 23 14:05:20 2013 -0500 @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2011, 2013, 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. + */ + +// SunJSSE does not support dynamic system properties, no way to re-use +// system properties in samevm/agentvm mode. + +/* + * @test + * @bug 6976117 + * @summary SSLContext.getInstance("TLSv1.1") returns SSLEngines/SSLSockets + * without TLSv1.1 enabled + * @run main/othervm SSLContextVersion + */ + +import javax.net.ssl.*; + +public class SSLContextVersion { + static enum ContextVersion { + TLS_CV_01("SSL", "TLSv1.2", "TLSv1.2"), + TLS_CV_02("TLS", "TLSv1.2", "TLSv1.2"), + TLS_CV_03("SSLv3", "TLSv1", "TLSv1.2"), + TLS_CV_04("TLSv1", "TLSv1", "TLSv1.2"), + TLS_CV_05("TLSv1.1", "TLSv1.1", "TLSv1.2"), + TLS_CV_06("TLSv1.2", "TLSv1.2", "TLSv1.2"), + TLS_CV_07("Default", "TLSv1.2", "TLSv1.2"); + + final String contextVersion; + final String defaultProtocolVersion; + final String supportedProtocolVersion; + + ContextVersion(String contextVersion, String defaultProtocolVersion, + String supportedProtocolVersion) { + this.contextVersion = contextVersion; + this.defaultProtocolVersion = defaultProtocolVersion; + this.supportedProtocolVersion = supportedProtocolVersion; + } + } + + public static void main(String[] args) throws Exception { + for (ContextVersion cv : ContextVersion.values()) { + System.out.println("Checking SSLContext of " + cv.contextVersion); + SSLContext context = SSLContext.getInstance(cv.contextVersion); + + // Default SSLContext is initialized automatically. + if (!cv.contextVersion.equals("Default")) { + // Use default TK, KM and random. + context.init((KeyManager[])null, (TrustManager[])null, null); + } + + SSLParameters parameters = context.getDefaultSSLParameters(); + + String[] protocols = parameters.getProtocols(); + String[] ciphers = parameters.getCipherSuites(); + + if (protocols.length == 0 || ciphers.length == 0) { + throw new Exception("No default protocols or cipher suites"); + } + + boolean isMatch = false; + for (String protocol : protocols) { + System.out.println("\tdefault protocol version " + protocol); + if (protocol.equals(cv.defaultProtocolVersion)) { + isMatch = true; + break; + } + } + + if (!isMatch) { + throw new Exception("No matched default protocol"); + } + + parameters = context.getSupportedSSLParameters(); + + protocols = parameters.getProtocols(); + ciphers = parameters.getCipherSuites(); + + if (protocols.length == 0 || ciphers.length == 0) { + throw new Exception("No supported protocols or cipher suites"); + } + + isMatch = false; + for (String protocol : protocols) { + System.out.println("\tsupported protocol version " + protocol); + if (protocol.equals(cv.supportedProtocolVersion)) { + isMatch = true; + break; + } + } + + if (!isMatch) { + throw new Exception("No matched supported protocol"); + } + System.out.println("\t... Success"); + } + } +}
--- a/test/sun/security/ssl/javax/net/ssl/SSLContextVersion.java Mon Dec 23 14:03:25 2013 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2011, 2012, 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 6976117 - * @summary SSLContext.getInstance("TLSv1.1") returns SSLEngines/SSLSockets - * without TLSv1.1 enabled - */ - -import javax.net.ssl.*; - -public class SSLContextVersion { - static enum ContextVersion { - TLS_CV_01("SSL", "TLSv1", "TLSv1.2"), - TLS_CV_02("TLS", "TLSv1", "TLSv1.2"), - TLS_CV_03("SSLv3", "TLSv1", "TLSv1.2"), - TLS_CV_04("TLSv1", "TLSv1", "TLSv1.2"), - TLS_CV_05("TLSv1.1", "TLSv1.1", "TLSv1.2"), - TLS_CV_06("TLSv1.2", "TLSv1.2", "TLSv1.2"), - TLS_CV_07("Default", "TLSv1", "TLSv1.2"); - - final String contextVersion; - final String defaultProtocolVersion; - final String supportedProtocolVersion; - - ContextVersion(String contextVersion, String defaultProtocolVersion, - String supportedProtocolVersion) { - this.contextVersion = contextVersion; - this.defaultProtocolVersion = defaultProtocolVersion; - this.supportedProtocolVersion = supportedProtocolVersion; - } - } - - public static void main(String[] args) throws Exception { - for (ContextVersion cv : ContextVersion.values()) { - System.out.println("Checking SSLContext of " + cv.contextVersion); - SSLContext context = SSLContext.getInstance(cv.contextVersion); - - // Default SSLContext is initialized automatically. - if (!cv.contextVersion.equals("Default")) { - // Use default TK, KM and random. - context.init((KeyManager[])null, (TrustManager[])null, null); - } - - SSLParameters parameters = context.getDefaultSSLParameters(); - - String[] protocols = parameters.getProtocols(); - String[] ciphers = parameters.getCipherSuites(); - - if (protocols.length == 0 || ciphers.length == 0) { - throw new Exception("No default protocols or cipher suites"); - } - - boolean isMatch = false; - for (String protocol : protocols) { - System.out.println("\tdefault protocol version " + protocol); - if (protocol.equals(cv.defaultProtocolVersion)) { - isMatch = true; - break; - } - } - - if (!isMatch) { - throw new Exception("No matched default protocol"); - } - - parameters = context.getSupportedSSLParameters(); - - protocols = parameters.getProtocols(); - ciphers = parameters.getCipherSuites(); - - if (protocols.length == 0 || ciphers.length == 0) { - throw new Exception("No supported protocols or cipher suites"); - } - - isMatch = false; - for (String protocol : protocols) { - System.out.println("\tsupported protocol version " + protocol); - if (protocol.equals(cv.supportedProtocolVersion)) { - isMatch = true; - break; - } - } - - if (!isMatch) { - throw new Exception("No matched supported protocol"); - } - System.out.println("\t... Success"); - } - } -}
--- a/test/sun/text/resources/LocaleData Mon Dec 23 14:03:25 2013 -0500 +++ b/test/sun/text/resources/LocaleData Mon Dec 23 14:05:20 2013 -0500 @@ -3550,8 +3550,9 @@ CurrencyNames/es_US/USD=US$ CalendarData/es_US/firstDayOfWeek=1 #bug 4400849 +#bug 7090826 pt data updated to CLDR 21.0.1 LocaleNames/pt/aa=afar -LocaleNames/pt/ab=abkhazian +LocaleNames/pt/ab=abc\u00e1zio LocaleNames/pt/ae=av\u00e9stico LocaleNames/pt/af=afric\u00e2ner LocaleNames/pt/am=am\u00e1rico @@ -3572,7 +3573,7 @@ LocaleNames/pt/br=bret\u00e3o LocaleNames/pt/bs=b\u00f3snio LocaleNames/pt/ca=catal\u00e3o -LocaleNames/pt/ce=chechene +LocaleNames/pt/ce=checheno LocaleNames/pt/ch=chamorro LocaleNames/pt/co=c\u00f3rsico LocaleNames/pt/cr=cree @@ -3597,7 +3598,7 @@ LocaleNames/pt/fj=fijiano LocaleNames/pt/fo=fero\u00eas LocaleNames/pt/fr=franc\u00eas -LocaleNames/pt/fy=fris\u00e3o +LocaleNames/pt/fy=fr\u00edsio ocidental LocaleNames/pt/ga=irland\u00eas LocaleNames/pt/gd=ga\u00e9lico escoc\u00eas LocaleNames/pt/gl=galego @@ -3606,7 +3607,7 @@ LocaleNames/pt/gv=manx LocaleNames/pt/ha=hau\u00e7\u00e1 LocaleNames/pt/he=hebraico -LocaleNames/pt/hi=hindi +LocaleNames/pt/hi=h\u00edndi LocaleNames/pt/ho=hiri motu LocaleNames/pt/hr=croata LocaleNames/pt/ht=haitiano @@ -3629,14 +3630,14 @@ LocaleNames/pt/ka=georgiano LocaleNames/pt/kg=congol\u00eas LocaleNames/pt/ki=quicuio -LocaleNames/pt/kj=Kuanyama +LocaleNames/pt/kj=kuanyama LocaleNames/pt/kk=cazaque LocaleNames/pt/kl=groenland\u00eas LocaleNames/pt/km=cmer LocaleNames/pt/kn=canar\u00eas LocaleNames/pt/ko=coreano LocaleNames/pt/kr=can\u00fari -LocaleNames/pt/ks=kashmiri +LocaleNames/pt/ks=caxemira LocaleNames/pt/ku=curdo LocaleNames/pt/kv=komi LocaleNames/pt/kw=c\u00f3rnico @@ -3644,14 +3645,14 @@ LocaleNames/pt/la=latim LocaleNames/pt/lb=luxemburgu\u00eas LocaleNames/pt/lg=luganda -LocaleNames/pt/li=limburgish +LocaleNames/pt/li=limburgu\u00eas LocaleNames/pt/ln=lingala LocaleNames/pt/lo=laosiano LocaleNames/pt/lt=lituano LocaleNames/pt/lu=luba-catanga LocaleNames/pt/lv=let\u00e3o LocaleNames/pt/mg=malgaxe -LocaleNames/pt/mh=marshall\u00eas +LocaleNames/pt/mh=marshal\u00eas LocaleNames/pt/mi=maori LocaleNames/pt/mk=maced\u00f4nio LocaleNames/pt/ml=malaiala @@ -3663,16 +3664,16 @@ LocaleNames/pt/my=birman\u00eas LocaleNames/pt/na=nauruano LocaleNames/pt/nb=bokm\u00e5l noruegu\u00eas -LocaleNames/pt/nd=ndebele, north +LocaleNames/pt/nd=ndebele do norte LocaleNames/pt/ne=nepali LocaleNames/pt/ng=dongo LocaleNames/pt/nl=holand\u00eas LocaleNames/pt/nn=nynorsk noruegu\u00eas LocaleNames/pt/no=noruegu\u00eas -LocaleNames/pt/nr=ndebele, south +LocaleNames/pt/nr=ndebele do sul LocaleNames/pt/nv=navajo -LocaleNames/pt/ny=nianja; chicheua; cheua -LocaleNames/pt/oc=occit\u00e2nico (ap\u00f3s 1500); proven\u00e7al +LocaleNames/pt/ny=nianja +LocaleNames/pt/oc=occit\u00e2nico LocaleNames/pt/oj=ojibwa LocaleNames/pt/om=oromo LocaleNames/pt/or=oriya @@ -3680,10 +3681,10 @@ LocaleNames/pt/pa=panjabi LocaleNames/pt/pi=p\u00e1li LocaleNames/pt/pl=polon\u00eas -LocaleNames/pt/ps=pashto (pushto) +LocaleNames/pt/ps=pashto LocaleNames/pt/pt=portugu\u00eas LocaleNames/pt/qu=qu\u00edchua -LocaleNames/pt/rm=rhaeto-romance +LocaleNames/pt/rm=reto-romano LocaleNames/pt/rn=rundi LocaleNames/pt/ro=romeno LocaleNames/pt/ru=russo @@ -3691,19 +3692,19 @@ LocaleNames/pt/sa=s\u00e2nscrito LocaleNames/pt/sc=sardo LocaleNames/pt/sd=sindi -LocaleNames/pt/se=northern sami +LocaleNames/pt/se=sami do norte LocaleNames/pt/sg=sango LocaleNames/pt/si=cingal\u00eas LocaleNames/pt/sk=eslovaco -LocaleNames/pt/sl=eslov\u00eanio +LocaleNames/pt/sl=esloveno LocaleNames/pt/so=somali LocaleNames/pt/sq=alban\u00eas LocaleNames/pt/sr=s\u00e9rvio LocaleNames/pt/ss=swati -LocaleNames/pt/st=soto, do sul +LocaleNames/pt/st=soto do sul LocaleNames/pt/su=sundan\u00eas LocaleNames/pt/sv=sueco -LocaleNames/pt/sw=sua\u00edli +LocaleNames/pt/sw=suaili LocaleNames/pt/ta=t\u00e2mil LocaleNames/pt/te=telugu LocaleNames/pt/tg=tadjique @@ -3711,7 +3712,7 @@ LocaleNames/pt/ti=tigr\u00ednia LocaleNames/pt/tk=turcomano LocaleNames/pt/tn=tswana -LocaleNames/pt/to=tonga (ilhas tonga) +LocaleNames/pt/to=tongan\u00eas LocaleNames/pt/tr=turco LocaleNames/pt/ts=tsonga LocaleNames/pt/tt=tatar @@ -3724,8 +3725,8 @@ LocaleNames/pt/ve=venda LocaleNames/pt/vi=vietnamita LocaleNames/pt/vo=volapuque -LocaleNames/pt/wa=walloon -LocaleNames/pt/wo=uolofe +LocaleNames/pt/wa=val\u00e3o +LocaleNames/pt/wo=u\u00f3lofe LocaleNames/pt/xh=xosa LocaleNames/pt/yi=i\u00eddiche LocaleNames/pt/yo=ioruba @@ -3743,11 +3744,11 @@ LocaleNames/pt/AT=\u00c1ustria LocaleNames/pt/AU=Austr\u00e1lia LocaleNames/pt/AZ=Azerbaij\u00e3o -LocaleNames/pt/BA=B\u00f3snia-Herzeg\u00f3vina +LocaleNames/pt/BA=B\u00f3snia-Herzegovina LocaleNames/pt/BE=B\u00e9lgica LocaleNames/pt/BF=Burquina Faso LocaleNames/pt/BG=Bulg\u00e1ria -LocaleNames/pt/BH=Bareine +LocaleNames/pt/BH=Bahrain LocaleNames/pt/BM=Bermudas LocaleNames/pt/BO=Bol\u00edvia LocaleNames/pt/BR=Brasil @@ -3755,8 +3756,8 @@ LocaleNames/pt/BV=Ilha Bouvet LocaleNames/pt/BW=Botsuana LocaleNames/pt/CA=Canad\u00e1 -LocaleNames/pt/CC=Ilhas Cocos (Keeling) -LocaleNames/pt/CD=Congo, Rep\u00fablica Democr\u00e1tica do +LocaleNames/pt/CC=Ilhas Coco +LocaleNames/pt/CD=Congo-Kinshasa LocaleNames/pt/CF=Rep\u00fablica Centro-Africana LocaleNames/pt/CH=Su\u00ed\u00e7a LocaleNames/pt/CI=Costa do Marfim @@ -3776,12 +3777,12 @@ LocaleNames/pt/EE=Est\u00f4nia LocaleNames/pt/EG=Egito LocaleNames/pt/EH=Saara Ocidental -LocaleNames/pt/ER=Eritr\u00e9ia +LocaleNames/pt/ER=Eritreia LocaleNames/pt/ES=Espanha LocaleNames/pt/ET=Eti\u00f3pia LocaleNames/pt/FI=Finl\u00e2ndia LocaleNames/pt/FK=Ilhas Malvinas -LocaleNames/pt/FM=Micron\u00e9sia, Estados Federados da +LocaleNames/pt/FM=Micron\u00e9sia LocaleNames/pt/FO=Ilhas Faroe LocaleNames/pt/FR=Fran\u00e7a LocaleNames/pt/GA=Gab\u00e3o @@ -3819,11 +3820,11 @@ LocaleNames/pt/KI=Quiribati LocaleNames/pt/KM=Comores LocaleNames/pt/KN=S\u00e3o Cristov\u00e3o e Nevis -LocaleNames/pt/KP=Cor\u00e9ia, Norte -LocaleNames/pt/KR=Cor\u00e9ia, Sul +LocaleNames/pt/KP=Coreia do Norte +LocaleNames/pt/KR=Coreia do Sul LocaleNames/pt/KY=Ilhas Caiman LocaleNames/pt/KZ=Casaquist\u00e3o -LocaleNames/pt/LA=Rep\u00fablica Democr\u00e1tica Popular de Lao +LocaleNames/pt/LA=Rep\u00fablica Popular Democr\u00e1tica do Laos LocaleNames/pt/LB=L\u00edbano LocaleNames/pt/LC=Santa L\u00facia LocaleNames/pt/LR=Lib\u00e9ria @@ -3834,10 +3835,10 @@ LocaleNames/pt/LY=L\u00edbia LocaleNames/pt/MA=Marrocos LocaleNames/pt/MC=M\u00f4naco -LocaleNames/pt/MD=Moldova, Rep\u00fablica de +LocaleNames/pt/MD=Mold\u00e1via LocaleNames/pt/MH=Ilhas Marshall -LocaleNames/pt/MK=Maced\u00f4nia, Rep\u00fablica da -LocaleNames/pt/MM=Mianm\u00e1 +LocaleNames/pt/MK=Maced\u00f4nia +LocaleNames/pt/MM=Mianmar [Birm\u00e2nia] LocaleNames/pt/MN=Mong\u00f3lia LocaleNames/pt/MO=Macau, Regi\u00e3o Admin. Especial da China LocaleNames/pt/MP=Ilhas Marianas do Norte @@ -3854,7 +3855,7 @@ LocaleNames/pt/NF=Ilha Norfolk LocaleNames/pt/NG=Nig\u00e9ria LocaleNames/pt/NI=Nicar\u00e1gua -LocaleNames/pt/NL=Pa\u00edses Baixos +LocaleNames/pt/NL=Holanda LocaleNames/pt/NO=Noruega LocaleNames/pt/NZ=Nova Zel\u00e2ndia LocaleNames/pt/OM=Om\u00e3 @@ -3866,7 +3867,7 @@ LocaleNames/pt/PL=Pol\u00f4nia LocaleNames/pt/PM=Saint Pierre e Miquelon LocaleNames/pt/PR=Porto Rico -LocaleNames/pt/PS=Territ\u00f3rio da Palestina +LocaleNames/pt/PS=Territ\u00f3rios palestinos LocaleNames/pt/PY=Paraguai LocaleNames/pt/QA=Catar LocaleNames/pt/RE=Reuni\u00e3o @@ -3892,7 +3893,7 @@ LocaleNames/pt/TF=Territ\u00f3rios Franceses do Sul LocaleNames/pt/TH=Tail\u00e2ndia LocaleNames/pt/TJ=Tadjiquist\u00e3o -LocaleNames/pt/TL=Timor Leste +LocaleNames/pt/TL=Timor-Leste LocaleNames/pt/TM=Turcomenist\u00e3o LocaleNames/pt/TN=Tun\u00edsia LocaleNames/pt/TR=Turquia @@ -3912,7 +3913,7 @@ LocaleNames/pt/YE=I\u00eamen LocaleNames/pt/ZA=\u00c1frica do Sul LocaleNames/pt/ZM=Z\u00e2mbia -LocaleNames/pt/ZW=Zimb\u00e1bwe +LocaleNames/pt/ZW=Zimb\u00e1bue # pt_PT LocaleNames/pt_PT/cs=checo LocaleNames/pt_PT/et=est\u00f3nio @@ -3921,7 +3922,7 @@ LocaleNames/pt_PT/AE=Emiratos \u00c1rabes Unidos LocaleNames/pt_PT/AM=Arm\u00e9nia LocaleNames/pt_PT/AQ=Ant\u00e1rctica -LocaleNames/pt_PT/AZ=Azerbeij\u00e3o +LocaleNames/pt_PT/AZ=Azerbaij\u00e3o LocaleNames/pt_PT/BA=B\u00f3snia-Herzegovina LocaleNames/pt_PT/BJ=Benim LocaleNames/pt_PT/BY=Bielorr\u00fassia @@ -3930,13 +3931,13 @@ LocaleNames/pt_PT/CZ=Rep\u00fablica Checa LocaleNames/pt_PT/EE=Est\u00f3nia LocaleNames/pt_PT/EG=Egipto -LocaleNames/pt_PT/EH=Sahara Ocidental +LocaleNames/pt_PT/EH=Sara Ocidental LocaleNames/pt_PT/ER=Eritreia LocaleNames/pt_PT/FK=Ilhas Falkland LocaleNames/pt_PT/GL=Gronel\u00e2ndia -LocaleNames/pt_PT/GS=Ilhas South Georgia e South Sandwich +LocaleNames/pt_PT/GS=Ge\u00f3rgia do Sul e Ilhas Sandwich do Sul LocaleNames/pt_PT/GW=Guin\u00e9-Bissau -LocaleNames/pt_PT/HK=Hong Kong - Regi\u00e3o Administrativa Especial da China +LocaleNames/pt_PT/HK=Regi\u00e3o Administrativa Especial de Hong Kong LocaleNames/pt_PT/KE=Qu\u00e9nia LocaleNames/pt_PT/KG=Quirguizist\u00e3o LocaleNames/pt_PT/KN=Saint Kitts e Nevis @@ -3944,36 +3945,36 @@ LocaleNames/pt_PT/KR=Coreia do Sul LocaleNames/pt_PT/KY=Ilhas Caim\u00e3o LocaleNames/pt_PT/KZ=Cazaquist\u00e3o -LocaleNames/pt_PT/LA=Lao, Rep\u00fablica Popular Democr\u00e1tica +LocaleNames/pt_PT/LA=Laos, Rep\u00fablica Popular Democr\u00e1tica do LocaleNames/pt_PT/LV=Let\u00f3nia LocaleNames/pt_PT/MC=M\u00f3naco LocaleNames/pt_PT/MD=Mold\u00e1via, Rep\u00fablica da LocaleNames/pt_PT/MG=Madag\u00e1scar -LocaleNames/pt_PT/MK=Maced\u00f3nia, Rep\u00fablica da -LocaleNames/pt_PT/MO=Macau - Regi\u00e3o Administrativa Especial da China +LocaleNames/pt_PT/MK=Maced\u00f3nia +LocaleNames/pt_PT/MO=Regi\u00e3o Administrativa Especial de Macau LocaleNames/pt_PT/MP=Ilhas Mariana do Norte LocaleNames/pt_PT/MU=Maur\u00edcias LocaleNames/pt_PT/NC=Nova Caled\u00f3nia -LocaleNames/pt_PT/PG=Papua Nova Guin\u00e9 +LocaleNames/pt_PT/PG=Papu\u00e1sia-Nova Guin\u00e9 LocaleNames/pt_PT/PL=Pol\u00f3nia LocaleNames/pt_PT/PS=Territ\u00f3rio Palestiniano -LocaleNames/pt_PT/RE=Reunion +LocaleNames/pt_PT/RE=Reuni\u00e3o LocaleNames/pt_PT/RO=Rom\u00e9nia LocaleNames/pt_PT/SC=Seicheles LocaleNames/pt_PT/SG=Singapura LocaleNames/pt_PT/SI=Eslov\u00e9nia LocaleNames/pt_PT/SM=S\u00e3o Marino LocaleNames/pt_PT/TC=Ilhas Turcas e Caicos -LocaleNames/pt_PT/TD=Tchade -LocaleNames/pt_PT/TF=Territ\u00f3rios Franceses a Sul +LocaleNames/pt_PT/TD=Chade +LocaleNames/pt_PT/TF=Territ\u00f3rios Franceses do Sul LocaleNames/pt_PT/TJ=Tajiquist\u00e3o LocaleNames/pt_PT/TM=Turquemenist\u00e3o -LocaleNames/pt_PT/UM=Ilhas Minor Outlying (E.U.A) -LocaleNames/pt_PT/UZ=Uzbaquist\u00e3o -LocaleNames/pt_PT/VA=Santa S\u00e9 (Estado da Cidade do Vaticano) -LocaleNames/pt_PT/VC=Saint Vincent e Grenadines -LocaleNames/pt_PT/VG=Ilhas Virgin Brit\u00e2nicas -LocaleNames/pt_PT/VI=Ilhas Virgin E.U.A. +LocaleNames/pt_PT/UM=Ilhas Menores Distantes dos Estados Unidos +LocaleNames/pt_PT/UZ=Usbequist\u00e3o +LocaleNames/pt_PT/VA=Vaticano +LocaleNames/pt_PT/VC=S\u00e3o Vicente e Granadinas +LocaleNames/pt_PT/VG=Ilhas Virgens Brit\u00e2nicas +LocaleNames/pt_PT/VI=Ilhas Virgens E.U.A. LocaleNames/pt_PT/VN=Vietname LocaleNames/pt_PT/YE=I\u00e9men #bug 6290792 Gaelic support @@ -4685,11 +4686,13 @@ FormatData/fi/TimePatterns/1='klo 'H.mm.ss # bug 6455680 Update locale data derived from CLDR1.3 to CLDR1.4 +# bug 7090826 pt data updated to CLDR 21.0.1 LocaleNames/pt/CS=S\u00e9rvia e Montenegro # bug 6498742: data for IR & ZW changed -LocaleNames/pt_PT/IR=Ir\u00e3 -LocaleNames/pt_PT/ZW=Zimb\u00e1bwe +# bug 7090826 pt data updated to CLDR 21.0.1 +LocaleNames/pt_PT/IR=Ir\u00e3o +LocaleNames/pt_PT/ZW=Zimbabwe LocaleNames/el/ar=\u0391\u03c1\u03b1\u03b2\u03b9\u03ba\u03ac LocaleNames/el/be=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03b9\u03ba\u03ac @@ -5452,26 +5455,26 @@ LocaleNames/pt_BR/AX=Ilhas Aland LocaleNames/pt_BR/BA=B\u00f3snia-Herzegovina LocaleNames/pt_BR/BH=Bahrain -LocaleNames/pt_BR/KP=Cor\u00e9ia do Norte +LocaleNames/pt_BR/KP=Coreia do Norte LocaleNames/pt_BR/MK=Maced\u00f4nia LocaleNames/pt_BR/ZW=Zimb\u00e1bue LocaleNames/pt_PT/ee=eve LocaleNames/pt_PT/fo=fero\u00eas LocaleNames/pt_PT/gl=galego LocaleNames/pt_PT/ha=hau\u00e7\u00e1 -LocaleNames/pt_PT/hy=arm\u00eanio -LocaleNames/pt_PT/ig=ibo +LocaleNames/pt_PT/hy=arm\u00e9nio +LocaleNames/pt_PT/ig=igbo LocaleNames/pt_PT/ki=quicuio LocaleNames/pt_PT/kl=groenland\u00eas LocaleNames/pt_PT/km=cmer -LocaleNames/pt_PT/mh=marshall\u00eas -LocaleNames/pt_PT/mk=maced\u00f4nio -LocaleNames/pt_PT/nr=ndebele, south -LocaleNames/pt_PT/os=ossetic -LocaleNames/pt_PT/st=soto, do sul -LocaleNames/pt_PT/ta=t\u00e2mil -LocaleNames/pt_PT/AI=Anguilla -LocaleNames/pt_PT/AX=\u00c5land Islands +LocaleNames/pt_PT/mh=marshal\u00eas +LocaleNames/pt_PT/mk=maced\u00f3nio +LocaleNames/pt_PT/nr=ndebele do sul +LocaleNames/pt_PT/os=oss\u00e9tico +LocaleNames/pt_PT/st=soto do sul +LocaleNames/pt_PT/ta=T\u00e2mil +LocaleNames/pt_PT/AI=Anguila +LocaleNames/pt_PT/AX=Ilhas \u00c5land # JE, GG, IM (6544471) LocaleNames//JE=Jersey
--- a/test/sun/text/resources/LocaleDataTest.java Mon Dec 23 14:03:25 2013 -0500 +++ b/test/sun/text/resources/LocaleDataTest.java Mon Dec 23 14:05:20 2013 -0500 @@ -35,7 +35,7 @@ * 6645405 6650730 6910489 6573250 6870908 6585666 6716626 6914413 6916787 * 6919624 6998391 7019267 7020960 7025837 7020583 7036905 7066203 7101495 * 7003124 7085757 7028073 7171028 7189611 8000983 7195759 8004489 8006509 - * 7114053 7074882 7040556 8013836 8021121 6192407 6931564 8027695 + * 7114053 7074882 7040556 8013836 8021121 6192407 6931564 8027695 7090826 * @summary Verify locale data * */