Merge
This commit is contained in:
commit
e2b0df2fcf
jdk
make
src
java.base
macosx
classes/sun/nio/fs
native/libnio/fs
share
classes
com/sun
java
io
lang
net
security
text
util
sun
invoke/util
net/www
nio/fs
security
pkcs
pkcs12
provider/certpath
rsa
tools/keytool
util
x509
text/normalizer
util
native/libjli
unix/classes
windows/classes/java/io
java.desktop
macosx/classes/apple/laf
share
classes
java/awt
javax
sun/awt
native
unix/classes/sun/awt/X11
windows
classes/sun/awt/shell
native/libawt/windows
java.security.jgss/share/classes
java.sql/share/classes/java/sql
jdk.accessibility/windows
classes
META-INF/services
com/sun/java/accessibility
conf
jdk.crypto.mscapi/windows/native/libsunmscapi
jdk.jartool/share/classes/sun/security/tools/jarsigner
test
@ -28,7 +28,7 @@ default: all
|
|||||||
include $(SPEC)
|
include $(SPEC)
|
||||||
include MakeBase.gmk
|
include MakeBase.gmk
|
||||||
|
|
||||||
SAMPLE_TARGET_DIR := $(SUPPORT_OUTPUTDIR)/sample
|
SAMPLE_TARGET_DIR := $(SUPPORT_OUTPUTDIR)/sample/image
|
||||||
SAMPLE_SOURCE_DIR := $(JDK_TOPDIR)/src/sample/share
|
SAMPLE_SOURCE_DIR := $(JDK_TOPDIR)/src/sample/share
|
||||||
SAMPLE_CLOSED_SOURCE_DIR := $(JDK_TOPDIR)/src/closed/sample/share
|
SAMPLE_CLOSED_SOURCE_DIR := $(JDK_TOPDIR)/src/closed/sample/share
|
||||||
SAMPLE_SOLARIS_SOURCE_DIR := $(JDK_TOPDIR)/src/sample/solaris
|
SAMPLE_SOLARIS_SOURCE_DIR := $(JDK_TOPDIR)/src/sample/solaris
|
||||||
|
@ -31,17 +31,12 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
|
|||||||
TARGETS += $(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCallbacks.h \
|
TARGETS += $(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCallbacks.h \
|
||||||
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.h \
|
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.h \
|
||||||
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgePackages.h \
|
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgePackages.h \
|
||||||
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.c \
|
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.c
|
||||||
$(CONF_DST_DIR)/accessibility.properties
|
|
||||||
|
|
||||||
$(INCLUDE_DST_OS_DIR)/bridge/%: \
|
$(INCLUDE_DST_OS_DIR)/bridge/%: \
|
||||||
$(JDK_TOPDIR)/src/jdk.accessibility/windows/native/include/bridge/%
|
$(JDK_TOPDIR)/src/jdk.accessibility/windows/native/include/bridge/%
|
||||||
$(install-file)
|
$(install-file)
|
||||||
|
|
||||||
$(CONF_DST_DIR)/accessibility.properties: \
|
|
||||||
$(JDK_TOPDIR)/src/jdk.accessibility/windows/conf/accessibility.properties
|
|
||||||
$(install-file)
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -21,4 +21,4 @@
|
|||||||
# or visit www.oracle.com if you need additional information or have any
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
tzdata2015d
|
tzdata2015e
|
||||||
|
@ -361,9 +361,10 @@ Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
|
|||||||
# time this summer, and carry out studies on the possibility of canceling the
|
# time this summer, and carry out studies on the possibility of canceling the
|
||||||
# practice altogether in future years."
|
# practice altogether in future years."
|
||||||
#
|
#
|
||||||
# From Paul Eggert (2015-04-20):
|
# From Paul Eggert (2015-04-24):
|
||||||
# For now, assume DST will be canceled. Any resumption would likely
|
# Yesterday the office of Egyptian President El-Sisi announced his
|
||||||
# use different rules anyway.
|
# decision to abandon DST permanently. See Ahram Online 2015-04-24.
|
||||||
|
# http://english.ahram.org.eg/NewsContent/1/64/128509/Egypt/Politics-/Sisi-cancels-daylight-saving-time-in-Egypt.aspx
|
||||||
|
|
||||||
Rule Egypt 2008 only - Aug lastThu 24:00 0 -
|
Rule Egypt 2008 only - Aug lastThu 24:00 0 -
|
||||||
Rule Egypt 2009 only - Aug 20 24:00 0 -
|
Rule Egypt 2009 only - Aug 20 24:00 0 -
|
||||||
@ -810,20 +811,41 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
|
|||||||
# will resume again at 02:00 on Saturday, August 2, 2014....
|
# will resume again at 02:00 on Saturday, August 2, 2014....
|
||||||
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=586
|
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=586
|
||||||
|
|
||||||
# From Paul Eggert (2014-06-05):
|
# From Milamber (2015-06-08):
|
||||||
# For now, guess that later spring and fall transitions will use 2014's rules,
|
# (Google Translation) The hour will thus be delayed 60 minutes
|
||||||
|
# Sunday, June 14 at 3:00, the ministry said in a statement, adding
|
||||||
|
# that the time will be advanced again 60 minutes Sunday, July 19,
|
||||||
|
# 2015 at 2:00. The move comes under 2.12.126 Decree of 26 Jumada I
|
||||||
|
# 1433 (18 April 2012) and the decision of the Head of Government of
|
||||||
|
# 16 N. 3-29-15 Chaaban 1435 (4 June 2015).
|
||||||
|
# Source (french):
|
||||||
|
# http://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/
|
||||||
|
#
|
||||||
|
# From Milamber (2015-06-09):
|
||||||
|
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=863
|
||||||
|
#
|
||||||
|
# From Michael Deckers (2015-06-09):
|
||||||
|
# [The gov.ma announcement] would (probably) make the switch on 2015-07-19 go
|
||||||
|
# from 03:00 to 04:00 rather than from 02:00 to 03:00, as in the patch....
|
||||||
|
# I think the patch is correct and the quoted text is wrong; the text in
|
||||||
|
# <http://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/> agrees
|
||||||
|
# with the patch.
|
||||||
|
|
||||||
|
# From Paul Eggert (2015-06-08):
|
||||||
|
# For now, guess that later spring and fall transitions will use 2015's rules,
|
||||||
# and guess that Morocco will switch to standard time at 03:00 the last
|
# and guess that Morocco will switch to standard time at 03:00 the last
|
||||||
# Saturday before Ramadan, and back to DST at 02:00 the first Saturday after
|
# Sunday before Ramadan, and back to DST at 02:00 the first Sunday after
|
||||||
# Ramadan. To implement this, transition dates for 2015 through 2037 were
|
# Ramadan. To implement this, transition dates for 2016 through 2037 were
|
||||||
# determined by running the following program under GNU Emacs 24.3, with the
|
# determined by running the following program under GNU Emacs 24.3, with the
|
||||||
# results integrated by hand into the table below.
|
# results integrated by hand into the table below.
|
||||||
# (let ((islamic-year 1436))
|
# (let ((islamic-year 1437))
|
||||||
|
# (require 'cal-islam)
|
||||||
# (while (< islamic-year 1460)
|
# (while (< islamic-year 1460)
|
||||||
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
|
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
|
||||||
# (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
|
# (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
|
||||||
# (saturday 6))
|
# (sunday 0))
|
||||||
# (while (/= saturday (mod (setq a (1- a)) 7)))
|
# (while (/= sunday (mod (setq a (1- a)) 7)))
|
||||||
# (while (/= saturday (mod b 7))
|
# (while (/= sunday (mod b 7))
|
||||||
# (setq b (1+ b)))
|
# (setq b (1+ b)))
|
||||||
# (setq a (calendar-gregorian-from-absolute a))
|
# (setq a (calendar-gregorian-from-absolute a))
|
||||||
# (setq b (calendar-gregorian-from-absolute b))
|
# (setq b (calendar-gregorian-from-absolute b))
|
||||||
@ -867,32 +889,30 @@ Rule Morocco 2012 only - Aug 20 2:00 1:00 S
|
|||||||
Rule Morocco 2013 only - Jul 7 3:00 0 -
|
Rule Morocco 2013 only - Jul 7 3:00 0 -
|
||||||
Rule Morocco 2013 only - Aug 10 2:00 1:00 S
|
Rule Morocco 2013 only - Aug 10 2:00 1:00 S
|
||||||
Rule Morocco 2013 max - Oct lastSun 3:00 0 -
|
Rule Morocco 2013 max - Oct lastSun 3:00 0 -
|
||||||
Rule Morocco 2014 2022 - Mar lastSun 2:00 1:00 S
|
Rule Morocco 2014 2021 - Mar lastSun 2:00 1:00 S
|
||||||
Rule Morocco 2014 only - Jun 28 3:00 0 -
|
Rule Morocco 2014 only - Jun 28 3:00 0 -
|
||||||
Rule Morocco 2014 only - Aug 2 2:00 1:00 S
|
Rule Morocco 2014 only - Aug 2 2:00 1:00 S
|
||||||
Rule Morocco 2015 only - Jun 13 3:00 0 -
|
Rule Morocco 2015 only - Jun 14 3:00 0 -
|
||||||
Rule Morocco 2015 only - Jul 18 2:00 1:00 S
|
Rule Morocco 2015 only - Jul 19 2:00 1:00 S
|
||||||
Rule Morocco 2016 only - Jun 4 3:00 0 -
|
Rule Morocco 2016 only - Jun 5 3:00 0 -
|
||||||
Rule Morocco 2016 only - Jul 9 2:00 1:00 S
|
Rule Morocco 2016 only - Jul 10 2:00 1:00 S
|
||||||
Rule Morocco 2017 only - May 20 3:00 0 -
|
Rule Morocco 2017 only - May 21 3:00 0 -
|
||||||
Rule Morocco 2017 only - Jul 1 2:00 1:00 S
|
Rule Morocco 2017 only - Jul 2 2:00 1:00 S
|
||||||
Rule Morocco 2018 only - May 12 3:00 0 -
|
Rule Morocco 2018 only - May 13 3:00 0 -
|
||||||
Rule Morocco 2018 only - Jun 16 2:00 1:00 S
|
Rule Morocco 2018 only - Jun 17 2:00 1:00 S
|
||||||
Rule Morocco 2019 only - May 4 3:00 0 -
|
Rule Morocco 2019 only - May 5 3:00 0 -
|
||||||
Rule Morocco 2019 only - Jun 8 2:00 1:00 S
|
Rule Morocco 2019 only - Jun 9 2:00 1:00 S
|
||||||
Rule Morocco 2020 only - Apr 18 3:00 0 -
|
Rule Morocco 2020 only - Apr 19 3:00 0 -
|
||||||
Rule Morocco 2020 only - May 30 2:00 1:00 S
|
Rule Morocco 2020 only - May 24 2:00 1:00 S
|
||||||
Rule Morocco 2021 only - Apr 10 3:00 0 -
|
Rule Morocco 2021 only - Apr 11 3:00 0 -
|
||||||
Rule Morocco 2021 only - May 15 2:00 1:00 S
|
Rule Morocco 2021 only - May 16 2:00 1:00 S
|
||||||
Rule Morocco 2022 only - Apr 2 3:00 0 -
|
Rule Morocco 2022 only - May 8 2:00 1:00 S
|
||||||
Rule Morocco 2022 only - May 7 2:00 1:00 S
|
Rule Morocco 2023 only - Apr 23 2:00 1:00 S
|
||||||
Rule Morocco 2023 only - Apr 22 2:00 1:00 S
|
Rule Morocco 2024 only - Apr 14 2:00 1:00 S
|
||||||
Rule Morocco 2024 only - Apr 13 2:00 1:00 S
|
Rule Morocco 2025 only - Apr 6 2:00 1:00 S
|
||||||
Rule Morocco 2025 only - Apr 5 2:00 1:00 S
|
|
||||||
Rule Morocco 2026 max - Mar lastSun 2:00 1:00 S
|
Rule Morocco 2026 max - Mar lastSun 2:00 1:00 S
|
||||||
Rule Morocco 2035 only - Oct 27 3:00 0 -
|
Rule Morocco 2036 only - Oct 19 3:00 0 -
|
||||||
Rule Morocco 2036 only - Oct 18 3:00 0 -
|
Rule Morocco 2037 only - Oct 4 3:00 0 -
|
||||||
Rule Morocco 2037 only - Oct 10 3:00 0 -
|
|
||||||
|
|
||||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||||
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
|
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
|
||||||
|
@ -26,11 +26,10 @@
|
|||||||
# This file is in the public domain, so clarified as of
|
# This file is in the public domain, so clarified as of
|
||||||
# 2009-05-17 by Arthur David Olson.
|
# 2009-05-17 by Arthur David Olson.
|
||||||
#
|
#
|
||||||
# From Paul Eggert (2014-07-18):
|
# From Paul Eggert (2015-05-02):
|
||||||
# This file contains a table of two-letter country codes. Columns are
|
# This file contains a table of two-letter country codes. Columns are
|
||||||
# separated by a single tab. Lines beginning with '#' are comments.
|
# separated by a single tab. Lines beginning with '#' are comments.
|
||||||
# Although all text currently uses ASCII encoding, this is planned to
|
# All text uses UTF-8 encoding. The columns of the table are as follows:
|
||||||
# change to UTF-8 soon. The columns of the table are as follows:
|
|
||||||
#
|
#
|
||||||
# 1. ISO 3166-1 alpha-2 country code, current as of
|
# 1. ISO 3166-1 alpha-2 country code, current as of
|
||||||
# ISO 3166-1 Newsletter VI-16 (2013-07-11). See: Updates on ISO 3166
|
# ISO 3166-1 Newsletter VI-16 (2013-07-11). See: Updates on ISO 3166
|
||||||
@ -61,7 +60,7 @@ AS Samoa (American)
|
|||||||
AT Austria
|
AT Austria
|
||||||
AU Australia
|
AU Australia
|
||||||
AW Aruba
|
AW Aruba
|
||||||
AX Aaland Islands
|
AX Åland Islands
|
||||||
AZ Azerbaijan
|
AZ Azerbaijan
|
||||||
BA Bosnia & Herzegovina
|
BA Bosnia & Herzegovina
|
||||||
BB Barbados
|
BB Barbados
|
||||||
@ -90,7 +89,7 @@ CD Congo (Dem. Rep.)
|
|||||||
CF Central African Rep.
|
CF Central African Rep.
|
||||||
CG Congo (Rep.)
|
CG Congo (Rep.)
|
||||||
CH Switzerland
|
CH Switzerland
|
||||||
CI Cote d'Ivoire
|
CI Côte d'Ivoire
|
||||||
CK Cook Islands
|
CK Cook Islands
|
||||||
CL Chile
|
CL Chile
|
||||||
CM Cameroon
|
CM Cameroon
|
||||||
@ -234,7 +233,7 @@ PT Portugal
|
|||||||
PW Palau
|
PW Palau
|
||||||
PY Paraguay
|
PY Paraguay
|
||||||
QA Qatar
|
QA Qatar
|
||||||
RE Reunion
|
RE Réunion
|
||||||
RO Romania
|
RO Romania
|
||||||
RS Serbia
|
RS Serbia
|
||||||
RU Russia
|
RU Russia
|
||||||
|
@ -2684,7 +2684,17 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton
|
|||||||
-4:00 US A%sT
|
-4:00 US A%sT
|
||||||
|
|
||||||
# Cayman Is
|
# Cayman Is
|
||||||
# See America/Panama.
|
|
||||||
|
# From Paul Eggert (2015-05-15):
|
||||||
|
# The Cayman government has decided to introduce DST in 2016, the idea being
|
||||||
|
# to keep in sync with New York. The legislation hasn't passed but the change
|
||||||
|
# seems quite likely. See: Meade B. Cayman 27.
|
||||||
|
# http://www.cayman27.com.ky/2015/05/15/clock-ticks-toward-daylight-saving-time-in-cayman
|
||||||
|
|
||||||
|
Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown
|
||||||
|
-5:07:11 - KMT 1912 Feb # Kingston Mean Time
|
||||||
|
-5:00 - EST 2016
|
||||||
|
-5:00 US E%sT
|
||||||
|
|
||||||
# Costa Rica
|
# Costa Rica
|
||||||
|
|
||||||
@ -3207,7 +3217,6 @@ Zone America/Managua -5:45:08 - LMT 1890
|
|||||||
Zone America/Panama -5:18:08 - LMT 1890
|
Zone America/Panama -5:18:08 - LMT 1890
|
||||||
-5:19:36 - CMT 1908 Apr 22 # Colón Mean Time
|
-5:19:36 - CMT 1908 Apr 22 # Colón Mean Time
|
||||||
-5:00 - EST
|
-5:00 - EST
|
||||||
Link America/Panama America/Cayman
|
|
||||||
|
|
||||||
# Puerto Rico
|
# Puerto Rico
|
||||||
# There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.
|
# There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
# I suggest the use of _Summer time_ instead of the more cumbersome
|
# I suggest the use of _Summer time_ instead of the more cumbersome
|
||||||
# _daylight-saving time_. _Summer time_ seems to be in general use
|
# _daylight-saving time_. _Summer time_ seems to be in general use
|
||||||
# in Europe and South America.
|
# in Europe and South America.
|
||||||
# -- E O Cutler, _New York Times_ (1937-02-14), quoted in
|
# -- E O Cutler, _New York Times_ (1937-02-14), quoted in
|
||||||
# H L Mencken, _The American Language: Supplement I_ (1960), p 466
|
# H L Mencken, _The American Language: Supplement I_ (1960), p 466
|
||||||
#
|
#
|
||||||
# Earlier editions of these tables also used the North American style
|
# Earlier editions of these tables also used the North American style
|
||||||
|
@ -29,7 +29,7 @@ CLDRSRCDIR := $(JDK_TOPDIR)/src/jdk.localedata/share/classes/sun/util/cldr/resou
|
|||||||
GENSRC_BASEDIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base
|
GENSRC_BASEDIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base
|
||||||
GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.localedata
|
GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.localedata
|
||||||
|
|
||||||
CLDR_BASEMETAINFO_FILE := $(GENSRC_DIR)/sun/util/cldr/CLDRBaseLocaleDataMetaInfo.java
|
CLDR_BASEMETAINFO_FILE := $(GENSRC_BASEDIR)/sun/util/cldr/CLDRBaseLocaleDataMetaInfo.java
|
||||||
CLDR_METAINFO_FILE := $(GENSRC_DIR)/sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo_jdk_localedata.java
|
CLDR_METAINFO_FILE := $(GENSRC_DIR)/sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo_jdk_localedata.java
|
||||||
|
|
||||||
CLDR_BASE_LOCALES := "en-US"
|
CLDR_BASE_LOCALES := "en-US"
|
||||||
|
@ -59,17 +59,6 @@ FindSrcDirsForLib = \
|
|||||||
$(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \
|
$(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \
|
||||||
$(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2)))
|
$(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2)))
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Find lib dir for module
|
|
||||||
# Param 1 - module name
|
|
||||||
ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
|
|
||||||
FindLibDirForModule = \
|
|
||||||
$(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)$(OPENJDK_TARGET_CPU_LIBDIR)
|
|
||||||
else
|
|
||||||
FindLibDirForModule = \
|
|
||||||
$(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Find a library
|
# Find a library
|
||||||
# Param 1 - module name
|
# Param 1 - module name
|
||||||
|
@ -81,7 +81,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBNIO, \
|
|||||||
LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \
|
LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \
|
||||||
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet/net.lib \
|
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet/net.lib \
|
||||||
advapi32.lib, \
|
advapi32.lib, \
|
||||||
LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread -framework CoreFoundation, \
|
LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread \
|
||||||
|
-framework CoreFoundation -framework CoreServices, \
|
||||||
LDFLAGS_SUFFIX :=, \
|
LDFLAGS_SUFFIX :=, \
|
||||||
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
|
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
|
||||||
RC_FLAGS := $(RC_FLAGS) \
|
RC_FLAGS := $(RC_FLAGS) \
|
||||||
|
@ -228,7 +228,8 @@ public class ModuleArchive implements Archive {
|
|||||||
private static String nativeDir(String filename) {
|
private static String nativeDir(String filename) {
|
||||||
if (System.getProperty("os.name").startsWith("Windows")) {
|
if (System.getProperty("os.name").startsWith("Windows")) {
|
||||||
if (filename.endsWith(".dll") || filename.endsWith(".diz")
|
if (filename.endsWith(".dll") || filename.endsWith(".diz")
|
||||||
|| filename.endsWith(".pdb") || filename.endsWith(".map")) {
|
|| filename.endsWith(".pdb") || filename.endsWith(".map")
|
||||||
|
|| filename.endsWith(".cpl")) {
|
||||||
return "bin";
|
return "bin";
|
||||||
} else {
|
} else {
|
||||||
return "lib";
|
return "lib";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -49,6 +49,8 @@ public class MacOSXFileSystemProvider extends BsdFileSystemProvider {
|
|||||||
FileTypeDetector getFileTypeDetector() {
|
FileTypeDetector getFileTypeDetector() {
|
||||||
Path userMimeTypes = Paths.get(AccessController.doPrivileged(
|
Path userMimeTypes = Paths.get(AccessController.doPrivileged(
|
||||||
new GetPropertyAction("user.home")), ".mime.types");
|
new GetPropertyAction("user.home")), ".mime.types");
|
||||||
return new MimeTypesFileTypeDetector(userMimeTypes);
|
|
||||||
|
return chain(new MimeTypesFileTypeDetector(userMimeTypes),
|
||||||
|
new UTIFileTypeDetector());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package sun.nio.fs;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.security.AccessController;
|
||||||
|
import java.security.PrivilegedAction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* File type detector that uses a file extension to look up its MIME type
|
||||||
|
* via the Apple Uniform Type Identifier interfaces.
|
||||||
|
*/
|
||||||
|
class UTIFileTypeDetector extends AbstractFileTypeDetector {
|
||||||
|
UTIFileTypeDetector() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
private native String probe0(String fileExtension) throws IOException;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String implProbeContentType(Path path) throws IOException {
|
||||||
|
Path fn = path.getFileName();
|
||||||
|
if (fn == null)
|
||||||
|
return null; // no file name
|
||||||
|
|
||||||
|
String ext = getExtension(fn.toString());
|
||||||
|
if (ext.isEmpty())
|
||||||
|
return null; // no extension
|
||||||
|
|
||||||
|
return probe0(ext);
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
AccessController.doPrivileged(new PrivilegedAction<>() {
|
||||||
|
@Override
|
||||||
|
public Void run() {
|
||||||
|
System.loadLibrary("nio");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
127
jdk/src/java.base/macosx/native/libnio/fs/UTIFileTypeDetector.c
Normal file
127
jdk/src/java.base/macosx/native/libnio/fs/UTIFileTypeDetector.c
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "jni.h"
|
||||||
|
#include "jni_util.h"
|
||||||
|
|
||||||
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
|
#include <CoreServices/CoreServices.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a CF string from the given Java string.
|
||||||
|
* If javaString is NULL, NULL is returned.
|
||||||
|
* If a memory error occurs, and OutOfMemoryError is thrown and
|
||||||
|
* NULL is returned.
|
||||||
|
*/
|
||||||
|
static CFStringRef toCFString(JNIEnv *env, jstring javaString)
|
||||||
|
{
|
||||||
|
if (javaString == NULL) {
|
||||||
|
return NULL;
|
||||||
|
} else {
|
||||||
|
CFStringRef result = NULL;
|
||||||
|
jsize length = (*env)->GetStringLength(env, javaString);
|
||||||
|
const jchar *chars = (*env)->GetStringChars(env, javaString, NULL);
|
||||||
|
if (chars == NULL) {
|
||||||
|
JNU_ThrowOutOfMemoryError(env, "toCFString failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
result = CFStringCreateWithCharacters(NULL, (const UniChar *)chars,
|
||||||
|
length);
|
||||||
|
(*env)->ReleaseStringChars(env, javaString, chars);
|
||||||
|
if (result == NULL) {
|
||||||
|
JNU_ThrowOutOfMemoryError(env, "toCFString failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a Java string from the given CF string.
|
||||||
|
* If cfString is NULL, NULL is returned.
|
||||||
|
* If a memory error occurs, and OutOfMemoryError is thrown and
|
||||||
|
* NULL is returned.
|
||||||
|
*/
|
||||||
|
static jstring toJavaString(JNIEnv *env, CFStringRef cfString)
|
||||||
|
{
|
||||||
|
if (cfString == NULL) {
|
||||||
|
return NULL;
|
||||||
|
} else {
|
||||||
|
jstring javaString = NULL;
|
||||||
|
|
||||||
|
CFIndex length = CFStringGetLength(cfString);
|
||||||
|
const UniChar *constchars = CFStringGetCharactersPtr(cfString);
|
||||||
|
if (constchars) {
|
||||||
|
javaString = (*env)->NewString(env, constchars, length);
|
||||||
|
} else {
|
||||||
|
UniChar *chars = malloc(length * sizeof(UniChar));
|
||||||
|
if (chars == NULL) {
|
||||||
|
JNU_ThrowOutOfMemoryError(env, "toJavaString failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
CFStringGetCharacters(cfString, CFRangeMake(0, length), chars);
|
||||||
|
javaString = (*env)->NewString(env, chars, length);
|
||||||
|
free(chars);
|
||||||
|
}
|
||||||
|
return javaString;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the content type corresponding to the supplied file extension.
|
||||||
|
* The mapping is determined using Uniform Type Identifiers (UTIs). If
|
||||||
|
* the file extension parameter is NULL, a CFString cannot be created
|
||||||
|
* from the file extension parameter, there is no UTI corresponding to
|
||||||
|
* the file extension, the UTI cannot supply a MIME type for the file
|
||||||
|
* extension, or a Java string cannot be created, then NULL is returned;
|
||||||
|
* otherwise the MIME type string is returned.
|
||||||
|
*/
|
||||||
|
JNIEXPORT jstring JNICALL
|
||||||
|
Java_sun_nio_fs_UTIFileTypeDetector_probe0(JNIEnv* env, jobject ftd,
|
||||||
|
jstring ext)
|
||||||
|
{
|
||||||
|
jstring result = NULL;
|
||||||
|
|
||||||
|
CFStringRef extension = toCFString(env, ext);
|
||||||
|
if (extension != NULL) {
|
||||||
|
CFStringRef uti =
|
||||||
|
UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
|
||||||
|
extension, NULL);
|
||||||
|
CFRelease(extension);
|
||||||
|
|
||||||
|
if (uti != NULL) {
|
||||||
|
CFStringRef mimeType =
|
||||||
|
UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType);
|
||||||
|
CFRelease(uti);
|
||||||
|
|
||||||
|
if (mimeType != NULL) {
|
||||||
|
result = toJavaString(env, mimeType);
|
||||||
|
CFRelease(mimeType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright (c) 2015 Red Hat, Inc.
|
* Copyright (c) 2015 Red Hat, Inc.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -62,14 +62,16 @@ final class GHASH {
|
|||||||
|
|
||||||
private static final int AES_BLOCK_SIZE = 16;
|
private static final int AES_BLOCK_SIZE = 16;
|
||||||
|
|
||||||
// Multiplies state0, state1 by V0, V1.
|
// Multiplies state[0], state[1] by subkeyH[0], subkeyH[1].
|
||||||
private void blockMult(long V0, long V1) {
|
private static void blockMult(long[] st, long[] subH) {
|
||||||
long Z0 = 0;
|
long Z0 = 0;
|
||||||
long Z1 = 0;
|
long Z1 = 0;
|
||||||
|
long V0 = subH[0];
|
||||||
|
long V1 = subH[1];
|
||||||
long X;
|
long X;
|
||||||
|
|
||||||
// Separate loops for processing state0 and state1.
|
// Separate loops for processing state[0] and state[1].
|
||||||
X = state0;
|
X = st[0];
|
||||||
for (int i = 0; i < 64; i++) {
|
for (int i = 0; i < 64; i++) {
|
||||||
// Zi+1 = Zi if bit i of x is 0
|
// Zi+1 = Zi if bit i of x is 0
|
||||||
long mask = X >> 63;
|
long mask = X >> 63;
|
||||||
@ -89,7 +91,7 @@ final class GHASH {
|
|||||||
X <<= 1;
|
X <<= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
X = state1;
|
X = st[1];
|
||||||
for (int i = 64; i < 127; i++) {
|
for (int i = 64; i < 127; i++) {
|
||||||
// Zi+1 = Zi if bit i of x is 0
|
// Zi+1 = Zi if bit i of x is 0
|
||||||
long mask = X >> 63;
|
long mask = X >> 63;
|
||||||
@ -115,15 +117,18 @@ final class GHASH {
|
|||||||
Z1 ^= V1 & mask;
|
Z1 ^= V1 & mask;
|
||||||
|
|
||||||
// Save result.
|
// Save result.
|
||||||
state0 = Z0;
|
st[0] = Z0;
|
||||||
state1 = Z1;
|
st[1] = Z1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* subkeyH and state are stored in long[] for GHASH intrinsic use */
|
||||||
|
|
||||||
// hash subkey H; should not change after the object has been constructed
|
// hash subkey H; should not change after the object has been constructed
|
||||||
private final long subkeyH0, subkeyH1;
|
private final long[] subkeyH;
|
||||||
|
|
||||||
// buffer for storing hash
|
// buffer for storing hash
|
||||||
private long state0, state1;
|
private final long[] state;
|
||||||
|
|
||||||
// variables for save/restore calls
|
// variables for save/restore calls
|
||||||
private long stateSave0, stateSave1;
|
private long stateSave0, stateSave1;
|
||||||
@ -141,8 +146,10 @@ final class GHASH {
|
|||||||
if ((subkeyH == null) || subkeyH.length != AES_BLOCK_SIZE) {
|
if ((subkeyH == null) || subkeyH.length != AES_BLOCK_SIZE) {
|
||||||
throw new ProviderException("Internal error");
|
throw new ProviderException("Internal error");
|
||||||
}
|
}
|
||||||
this.subkeyH0 = getLong(subkeyH, 0);
|
state = new long[2];
|
||||||
this.subkeyH1 = getLong(subkeyH, 8);
|
this.subkeyH = new long[2];
|
||||||
|
this.subkeyH[0] = getLong(subkeyH, 0);
|
||||||
|
this.subkeyH[1] = getLong(subkeyH, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -151,33 +158,30 @@ final class GHASH {
|
|||||||
* this object for different data w/ the same H.
|
* this object for different data w/ the same H.
|
||||||
*/
|
*/
|
||||||
void reset() {
|
void reset() {
|
||||||
state0 = 0;
|
state[0] = 0;
|
||||||
state1 = 0;
|
state[1] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the current snapshot of this GHASH object.
|
* Save the current snapshot of this GHASH object.
|
||||||
*/
|
*/
|
||||||
void save() {
|
void save() {
|
||||||
stateSave0 = state0;
|
stateSave0 = state[0];
|
||||||
stateSave1 = state1;
|
stateSave1 = state[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restores this object using the saved snapshot.
|
* Restores this object using the saved snapshot.
|
||||||
*/
|
*/
|
||||||
void restore() {
|
void restore() {
|
||||||
state0 = stateSave0;
|
state[0] = stateSave0;
|
||||||
state1 = stateSave1;
|
state[1] = stateSave1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processBlock(byte[] data, int ofs) {
|
private static void processBlock(byte[] data, int ofs, long[] st, long[] subH) {
|
||||||
if (data.length - ofs < AES_BLOCK_SIZE) {
|
st[0] ^= getLong(data, ofs);
|
||||||
throw new RuntimeException("need complete block");
|
st[1] ^= getLong(data, ofs + 8);
|
||||||
}
|
blockMult(st, subH);
|
||||||
state0 ^= getLong(data, ofs);
|
|
||||||
state1 ^= getLong(data, ofs + 8);
|
|
||||||
blockMult(subkeyH0, subkeyH1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void update(byte[] in) {
|
void update(byte[] in) {
|
||||||
@ -185,22 +189,57 @@ final class GHASH {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void update(byte[] in, int inOfs, int inLen) {
|
void update(byte[] in, int inOfs, int inLen) {
|
||||||
if (inLen - inOfs > in.length) {
|
if (inLen == 0) {
|
||||||
throw new RuntimeException("input length out of bound");
|
return;
|
||||||
|
}
|
||||||
|
ghashRangeCheck(in, inOfs, inLen, state, subkeyH);
|
||||||
|
processBlocks(in, inOfs, inLen/AES_BLOCK_SIZE, state, subkeyH);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ghashRangeCheck(byte[] in, int inOfs, int inLen, long[] st, long[] subH) {
|
||||||
|
if (inLen < 0) {
|
||||||
|
throw new RuntimeException("invalid input length: " + inLen);
|
||||||
|
}
|
||||||
|
if (inOfs < 0) {
|
||||||
|
throw new RuntimeException("invalid offset: " + inOfs);
|
||||||
|
}
|
||||||
|
if (inLen > in.length - inOfs) {
|
||||||
|
throw new RuntimeException("input length out of bound: " +
|
||||||
|
inLen + " > " + (in.length - inOfs));
|
||||||
}
|
}
|
||||||
if (inLen % AES_BLOCK_SIZE != 0) {
|
if (inLen % AES_BLOCK_SIZE != 0) {
|
||||||
throw new RuntimeException("input length unsupported");
|
throw new RuntimeException("input length/block size mismatch: " +
|
||||||
|
inLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = inOfs; i < (inOfs + inLen); i += AES_BLOCK_SIZE) {
|
// These two checks are for C2 checking
|
||||||
processBlock(in, i);
|
if (st.length != 2) {
|
||||||
|
throw new RuntimeException("internal state has invalid length: " +
|
||||||
|
st.length);
|
||||||
|
}
|
||||||
|
if (subH.length != 2) {
|
||||||
|
throw new RuntimeException("internal subkeyH has invalid length: " +
|
||||||
|
subH.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* This is an intrinsified method. The method's argument list must match
|
||||||
|
* the hotspot signature. This method and methods called by it, cannot
|
||||||
|
* throw exceptions or allocate arrays as it will breaking intrinsics
|
||||||
|
*/
|
||||||
|
private static void processBlocks(byte[] data, int inOfs, int blocks, long[] st, long[] subH) {
|
||||||
|
int offset = inOfs;
|
||||||
|
while (blocks > 0) {
|
||||||
|
processBlock(data, offset, st, subH);
|
||||||
|
blocks--;
|
||||||
|
offset += AES_BLOCK_SIZE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] digest() {
|
byte[] digest() {
|
||||||
byte[] result = new byte[AES_BLOCK_SIZE];
|
byte[] result = new byte[AES_BLOCK_SIZE];
|
||||||
putLong(result, 0, state0);
|
putLong(result, 0, state[0]);
|
||||||
putLong(result, 8, state1);
|
putLong(result, 8, state[1]);
|
||||||
reset();
|
reset();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -121,7 +121,7 @@ public final class OAEPParameters extends AlgorithmParametersSpi {
|
|||||||
} else if (data.isContextSpecific((byte) 0x01)) {
|
} else if (data.isContextSpecific((byte) 0x01)) {
|
||||||
// mgf algid
|
// mgf algid
|
||||||
AlgorithmId val = AlgorithmId.parse(data.data.getDerValue());
|
AlgorithmId val = AlgorithmId.parse(data.data.getDerValue());
|
||||||
if (!val.getOID().equals((Object) OID_MGF1)) {
|
if (!val.getOID().equals(OID_MGF1)) {
|
||||||
throw new IOException("Only MGF1 mgf is supported");
|
throw new IOException("Only MGF1 mgf is supported");
|
||||||
}
|
}
|
||||||
AlgorithmId params = AlgorithmId.parse(
|
AlgorithmId params = AlgorithmId.parse(
|
||||||
@ -144,7 +144,7 @@ public final class OAEPParameters extends AlgorithmParametersSpi {
|
|||||||
} else if (data.isContextSpecific((byte) 0x02)) {
|
} else if (data.isContextSpecific((byte) 0x02)) {
|
||||||
// pSource algid
|
// pSource algid
|
||||||
AlgorithmId val = AlgorithmId.parse(data.data.getDerValue());
|
AlgorithmId val = AlgorithmId.parse(data.data.getDerValue());
|
||||||
if (!val.getOID().equals((Object) OID_PSpecified)) {
|
if (!val.getOID().equals(OID_PSpecified)) {
|
||||||
throw new IOException("Wrong OID for pSpecified");
|
throw new IOException("Wrong OID for pSpecified");
|
||||||
}
|
}
|
||||||
DerInputStream dis = new DerInputStream(val.getEncodedParams());
|
DerInputStream dis = new DerInputStream(val.getEncodedParams());
|
||||||
|
@ -1235,7 +1235,7 @@ class Attribute implements Comparable<Attribute> {
|
|||||||
int sofar = 0; // how far have we processed the layout?
|
int sofar = 0; // how far have we processed the layout?
|
||||||
for (;;) {
|
for (;;) {
|
||||||
// for each dash, collect everything up to the dash
|
// for each dash, collect everything up to the dash
|
||||||
result.append(layout.substring(sofar, dash));
|
result.append(layout, sofar, dash);
|
||||||
sofar = dash+1; // skip the dash
|
sofar = dash+1; // skip the dash
|
||||||
// then collect intermediate values
|
// then collect intermediate values
|
||||||
int value0 = parseIntBefore(layout, dash);
|
int value0 = parseIntBefore(layout, dash);
|
||||||
@ -1249,7 +1249,7 @@ class Attribute implements Comparable<Attribute> {
|
|||||||
dash = findCaseDash(layout, sofar);
|
dash = findCaseDash(layout, sofar);
|
||||||
if (dash < 0) break;
|
if (dash < 0) break;
|
||||||
}
|
}
|
||||||
result.append(layout.substring(sofar)); // collect the rest
|
result.append(layout, sofar, layout.length()); // collect the rest
|
||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
static {
|
static {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1994, 2003, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -34,8 +34,7 @@ package java.io;
|
|||||||
* @author Arthur van Hoff
|
* @author Arthur van Hoff
|
||||||
* @since 1.0
|
* @since 1.0
|
||||||
*/
|
*/
|
||||||
public
|
public class BufferedOutputStream extends FilterOutputStream {
|
||||||
class BufferedOutputStream extends FilterOutputStream {
|
|
||||||
/**
|
/**
|
||||||
* The internal buffer where data is stored.
|
* The internal buffer where data is stored.
|
||||||
*/
|
*/
|
||||||
@ -90,6 +89,7 @@ class BufferedOutputStream extends FilterOutputStream {
|
|||||||
* @param b the byte to be written.
|
* @param b the byte to be written.
|
||||||
* @exception IOException if an I/O error occurs.
|
* @exception IOException if an I/O error occurs.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public synchronized void write(int b) throws IOException {
|
public synchronized void write(int b) throws IOException {
|
||||||
if (count >= buf.length) {
|
if (count >= buf.length) {
|
||||||
flushBuffer();
|
flushBuffer();
|
||||||
@ -113,6 +113,7 @@ class BufferedOutputStream extends FilterOutputStream {
|
|||||||
* @param len the number of bytes to write.
|
* @param len the number of bytes to write.
|
||||||
* @exception IOException if an I/O error occurs.
|
* @exception IOException if an I/O error occurs.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public synchronized void write(byte b[], int off, int len) throws IOException {
|
public synchronized void write(byte b[], int off, int len) throws IOException {
|
||||||
if (len >= buf.length) {
|
if (len >= buf.length) {
|
||||||
/* If the request length exceeds the size of the output buffer,
|
/* If the request length exceeds the size of the output buffer,
|
||||||
@ -136,6 +137,7 @@ class BufferedOutputStream extends FilterOutputStream {
|
|||||||
* @exception IOException if an I/O error occurs.
|
* @exception IOException if an I/O error occurs.
|
||||||
* @see java.io.FilterOutputStream#out
|
* @see java.io.FilterOutputStream#out
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public synchronized void flush() throws IOException {
|
public synchronized void flush() throws IOException {
|
||||||
flushBuffer();
|
flushBuffer();
|
||||||
out.flush();
|
out.flush();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -41,13 +41,15 @@ package java.io;
|
|||||||
* @author Jonathan Payne
|
* @author Jonathan Payne
|
||||||
* @since 1.0
|
* @since 1.0
|
||||||
*/
|
*/
|
||||||
public
|
public class FilterOutputStream extends OutputStream {
|
||||||
class FilterOutputStream extends OutputStream {
|
|
||||||
/**
|
/**
|
||||||
* The underlying output stream to be filtered.
|
* The underlying output stream to be filtered.
|
||||||
*/
|
*/
|
||||||
protected OutputStream out;
|
protected OutputStream out;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the stream is closed; implicitly initialized to false.
|
||||||
|
*/
|
||||||
private boolean closed;
|
private boolean closed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -75,6 +77,7 @@ class FilterOutputStream extends OutputStream {
|
|||||||
* @param b the <code>byte</code>.
|
* @param b the <code>byte</code>.
|
||||||
* @exception IOException if an I/O error occurs.
|
* @exception IOException if an I/O error occurs.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void write(int b) throws IOException {
|
public void write(int b) throws IOException {
|
||||||
out.write(b);
|
out.write(b);
|
||||||
}
|
}
|
||||||
@ -95,6 +98,7 @@ class FilterOutputStream extends OutputStream {
|
|||||||
* @exception IOException if an I/O error occurs.
|
* @exception IOException if an I/O error occurs.
|
||||||
* @see java.io.FilterOutputStream#write(byte[], int, int)
|
* @see java.io.FilterOutputStream#write(byte[], int, int)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void write(byte b[]) throws IOException {
|
public void write(byte b[]) throws IOException {
|
||||||
write(b, 0, b.length);
|
write(b, 0, b.length);
|
||||||
}
|
}
|
||||||
@ -119,6 +123,7 @@ class FilterOutputStream extends OutputStream {
|
|||||||
* @exception IOException if an I/O error occurs.
|
* @exception IOException if an I/O error occurs.
|
||||||
* @see java.io.FilterOutputStream#write(int)
|
* @see java.io.FilterOutputStream#write(int)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void write(byte b[], int off, int len) throws IOException {
|
public void write(byte b[], int off, int len) throws IOException {
|
||||||
if ((off | len | (b.length - (len + off)) | (off + len)) < 0)
|
if ((off | len | (b.length - (len + off)) | (off + len)) < 0)
|
||||||
throw new IndexOutOfBoundsException();
|
throw new IndexOutOfBoundsException();
|
||||||
@ -138,6 +143,7 @@ class FilterOutputStream extends OutputStream {
|
|||||||
* @exception IOException if an I/O error occurs.
|
* @exception IOException if an I/O error occurs.
|
||||||
* @see java.io.FilterOutputStream#out
|
* @see java.io.FilterOutputStream#out
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void flush() throws IOException {
|
public void flush() throws IOException {
|
||||||
out.flush();
|
out.flush();
|
||||||
}
|
}
|
||||||
@ -154,13 +160,40 @@ class FilterOutputStream extends OutputStream {
|
|||||||
* @see java.io.FilterOutputStream#flush()
|
* @see java.io.FilterOutputStream#flush()
|
||||||
* @see java.io.FilterOutputStream#out
|
* @see java.io.FilterOutputStream#out
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("try")
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
if (closed)
|
if (closed) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
closed = true;
|
closed = true;
|
||||||
try (OutputStream ostream = out) {
|
|
||||||
|
Throwable flushException = null;
|
||||||
|
try {
|
||||||
flush();
|
flush();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
flushException = e;
|
||||||
|
throw e;
|
||||||
|
} finally {
|
||||||
|
if (flushException == null) {
|
||||||
|
out.close();
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
out.close();
|
||||||
|
} catch (Throwable closeException) {
|
||||||
|
// evaluate possible precedence of flushException over closeException
|
||||||
|
if ((flushException instanceof ThreadDeath) &&
|
||||||
|
!(closeException instanceof ThreadDeath)) {
|
||||||
|
flushException.addSuppressed(closeException);
|
||||||
|
throw (ThreadDeath) flushException;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flushException != closeException) {
|
||||||
|
closeException.addSuppressed(flushException);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw closeException;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ public class StringWriter extends Writer {
|
|||||||
* @param len Number of characters to write
|
* @param len Number of characters to write
|
||||||
*/
|
*/
|
||||||
public void write(String str, int off, int len) {
|
public void write(String str, int off, int len) {
|
||||||
buf.append(str.substring(off, off + len));
|
buf.append(str, off, off + len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -515,8 +515,12 @@ abstract class AbstractStringBuilder implements Appendable, CharSequence {
|
|||||||
+ s.length());
|
+ s.length());
|
||||||
int len = end - start;
|
int len = end - start;
|
||||||
ensureCapacityInternal(count + len);
|
ensureCapacityInternal(count + len);
|
||||||
for (int i = start, j = count; i < end; i++, j++)
|
if (s instanceof String) {
|
||||||
value[j] = s.charAt(i);
|
((String)s).getChars(start, end, value, count);
|
||||||
|
} else {
|
||||||
|
for (int i = start, j = count; i < end; i++, j++)
|
||||||
|
value[j] = s.charAt(i);
|
||||||
|
}
|
||||||
count += len;
|
count += len;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,10 +25,14 @@
|
|||||||
|
|
||||||
package java.net;
|
package java.net;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import sun.security.action.*;
|
|
||||||
import java.security.AccessController;
|
import java.security.AccessController;
|
||||||
|
import java.util.Spliterator;
|
||||||
|
import java.util.Spliterators;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class represents a Network Interface made up of a name,
|
* This class represents a Network Interface made up of a name,
|
||||||
@ -95,8 +99,8 @@ public final class NetworkInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience method to return an Enumeration with all or a
|
* Get an Enumeration with all or a subset of the InetAddresses bound to
|
||||||
* subset of the InetAddresses bound to this network interface.
|
* this network interface.
|
||||||
* <p>
|
* <p>
|
||||||
* If there is a security manager, its {@code checkConnect}
|
* If there is a security manager, its {@code checkConnect}
|
||||||
* method is called for each InetAddress. Only InetAddresses where
|
* method is called for each InetAddress. Only InetAddresses where
|
||||||
@ -104,53 +108,56 @@ public final class NetworkInterface {
|
|||||||
* will be returned in the Enumeration. However, if the caller has the
|
* will be returned in the Enumeration. However, if the caller has the
|
||||||
* {@link NetPermission}("getNetworkInformation") permission, then all
|
* {@link NetPermission}("getNetworkInformation") permission, then all
|
||||||
* InetAddresses are returned.
|
* InetAddresses are returned.
|
||||||
|
*
|
||||||
* @return an Enumeration object with all or a subset of the InetAddresses
|
* @return an Enumeration object with all or a subset of the InetAddresses
|
||||||
* bound to this network interface
|
* bound to this network interface
|
||||||
|
* @see #inetAddresses()
|
||||||
*/
|
*/
|
||||||
public Enumeration<InetAddress> getInetAddresses() {
|
public Enumeration<InetAddress> getInetAddresses() {
|
||||||
|
return enumerationFromArray(getCheckedInetAddresses());
|
||||||
|
}
|
||||||
|
|
||||||
class checkedAddresses implements Enumeration<InetAddress> {
|
/**
|
||||||
|
* Get a Stream of all or a subset of the InetAddresses bound to this
|
||||||
|
* network interface.
|
||||||
|
* <p>
|
||||||
|
* If there is a security manager, its {@code checkConnect}
|
||||||
|
* method is called for each InetAddress. Only InetAddresses where
|
||||||
|
* the {@code checkConnect} doesn't throw a SecurityException will be
|
||||||
|
* returned in the Stream. However, if the caller has the
|
||||||
|
* {@link NetPermission}("getNetworkInformation") permission, then all
|
||||||
|
* InetAddresses are returned.
|
||||||
|
*
|
||||||
|
* @return a Stream object with all or a subset of the InetAddresses
|
||||||
|
* bound to this network interface
|
||||||
|
* @since 1.9
|
||||||
|
*/
|
||||||
|
public Stream<InetAddress> inetAddresses() {
|
||||||
|
return streamFromArray(getCheckedInetAddresses());
|
||||||
|
}
|
||||||
|
|
||||||
private int i=0, count=0;
|
private InetAddress[] getCheckedInetAddresses() {
|
||||||
private InetAddress local_addrs[];
|
InetAddress[] local_addrs = new InetAddress[addrs.length];
|
||||||
|
boolean trusted = true;
|
||||||
|
|
||||||
checkedAddresses() {
|
SecurityManager sec = System.getSecurityManager();
|
||||||
local_addrs = new InetAddress[addrs.length];
|
if (sec != null) {
|
||||||
boolean trusted = true;
|
try {
|
||||||
|
sec.checkPermission(new NetPermission("getNetworkInformation"));
|
||||||
SecurityManager sec = System.getSecurityManager();
|
} catch (SecurityException e) {
|
||||||
if (sec != null) {
|
trusted = false;
|
||||||
try {
|
|
||||||
sec.checkPermission(new NetPermission("getNetworkInformation"));
|
|
||||||
} catch (SecurityException e) {
|
|
||||||
trusted = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int j=0; j<addrs.length; j++) {
|
|
||||||
try {
|
|
||||||
if (sec != null && !trusted) {
|
|
||||||
sec.checkConnect(addrs[j].getHostAddress(), -1);
|
|
||||||
}
|
|
||||||
local_addrs[count++] = addrs[j];
|
|
||||||
} catch (SecurityException e) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public InetAddress nextElement() {
|
|
||||||
if (i < count) {
|
|
||||||
return local_addrs[i++];
|
|
||||||
} else {
|
|
||||||
throw new NoSuchElementException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasMoreElements() {
|
|
||||||
return (i < count);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new checkedAddresses();
|
int i = 0;
|
||||||
|
for (int j = 0; j < addrs.length; j++) {
|
||||||
|
try {
|
||||||
|
if (!trusted) {
|
||||||
|
sec.checkConnect(addrs[j].getHostAddress(), -1);
|
||||||
|
}
|
||||||
|
local_addrs[i++] = addrs[j];
|
||||||
|
} catch (SecurityException e) { }
|
||||||
|
}
|
||||||
|
return Arrays.copyOf(local_addrs, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -188,30 +195,23 @@ public final class NetworkInterface {
|
|||||||
*
|
*
|
||||||
* @return an Enumeration object with all of the subinterfaces
|
* @return an Enumeration object with all of the subinterfaces
|
||||||
* of this network interface
|
* of this network interface
|
||||||
|
* @see #subInterfaces()
|
||||||
* @since 1.6
|
* @since 1.6
|
||||||
*/
|
*/
|
||||||
public Enumeration<NetworkInterface> getSubInterfaces() {
|
public Enumeration<NetworkInterface> getSubInterfaces() {
|
||||||
class subIFs implements Enumeration<NetworkInterface> {
|
return enumerationFromArray(childs);
|
||||||
|
}
|
||||||
private int i=0;
|
|
||||||
|
|
||||||
subIFs() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public NetworkInterface nextElement() {
|
|
||||||
if (i < childs.length) {
|
|
||||||
return childs[i++];
|
|
||||||
} else {
|
|
||||||
throw new NoSuchElementException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasMoreElements() {
|
|
||||||
return (i < childs.length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new subIFs();
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a Stream of all subinterfaces (also known as virtual
|
||||||
|
* interfaces) attached to this network interface.
|
||||||
|
*
|
||||||
|
* @return a Stream object with all of the subinterfaces
|
||||||
|
* of this network interface
|
||||||
|
* @since 1.9
|
||||||
|
*/
|
||||||
|
public Stream<NetworkInterface> subInterfaces() {
|
||||||
|
return streamFromArray(childs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -326,43 +326,80 @@ public final class NetworkInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all the interfaces on this machine. The {@code Enumeration}
|
* Returns an {@code Enumeration} of all the interfaces on this machine. The
|
||||||
* contains at least one element, possibly representing a loopback
|
* {@code Enumeration} contains at least one element, possibly representing
|
||||||
* interface that only supports communication between entities on
|
* a loopback interface that only supports communication between entities on
|
||||||
* this machine.
|
* this machine.
|
||||||
*
|
*
|
||||||
* NOTE: can use getNetworkInterfaces()+getInetAddresses()
|
* @apiNote this method can be used in combination with
|
||||||
* to obtain all IP addresses for this node
|
* {@link #getInetAddresses()} to obtain all IP addresses for this node
|
||||||
*
|
*
|
||||||
* @return an Enumeration of NetworkInterfaces found on this machine
|
* @return an Enumeration of NetworkInterfaces found on this machine
|
||||||
* @exception SocketException if an I/O error occurs.
|
* @exception SocketException if an I/O error occurs.
|
||||||
|
* @see #networkInterfaces()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public static Enumeration<NetworkInterface> getNetworkInterfaces()
|
public static Enumeration<NetworkInterface> getNetworkInterfaces()
|
||||||
throws SocketException {
|
throws SocketException {
|
||||||
final NetworkInterface[] netifs = getAll();
|
NetworkInterface[] netifs = getAll();
|
||||||
|
assert netifs != null && netifs.length > 0;
|
||||||
|
|
||||||
// specified to return null if no network interfaces
|
return enumerationFromArray(netifs);
|
||||||
if (netifs == null)
|
}
|
||||||
return null;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a {@code Stream} of all the interfaces on this machine. The
|
||||||
|
* {@code Stream} contains at least one interface, possibly representing a
|
||||||
|
* loopback interface that only supports communication between entities on
|
||||||
|
* this machine.
|
||||||
|
*
|
||||||
|
* @apiNote this method can be used in combination with
|
||||||
|
* {@link #inetAddresses()}} to obtain a stream of all IP addresses for
|
||||||
|
* this node, for example:
|
||||||
|
* <pre> {@code
|
||||||
|
* Stream<InetAddress> addrs = NetworkInterface.networkInterfaces()
|
||||||
|
* .flatMap(NetworkInterface::inetAddresses);
|
||||||
|
* }</pre>
|
||||||
|
*
|
||||||
|
* @return a Stream of NetworkInterfaces found on this machine
|
||||||
|
* @exception SocketException if an I/O error occurs.
|
||||||
|
* @since 1.9
|
||||||
|
*/
|
||||||
|
public static Stream<NetworkInterface> networkInterfaces()
|
||||||
|
throws SocketException {
|
||||||
|
NetworkInterface[] netifs = getAll();
|
||||||
|
assert netifs != null && netifs.length > 0;
|
||||||
|
|
||||||
|
return streamFromArray(netifs);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static <T> Enumeration<T> enumerationFromArray(T[] a) {
|
||||||
return new Enumeration<>() {
|
return new Enumeration<>() {
|
||||||
private int i = 0;
|
int i = 0;
|
||||||
public NetworkInterface nextElement() {
|
|
||||||
if (netifs != null && i < netifs.length) {
|
@Override
|
||||||
NetworkInterface netif = netifs[i++];
|
public T nextElement() {
|
||||||
return netif;
|
if (i < a.length) {
|
||||||
|
return a[i++];
|
||||||
} else {
|
} else {
|
||||||
throw new NoSuchElementException();
|
throw new NoSuchElementException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean hasMoreElements() {
|
public boolean hasMoreElements() {
|
||||||
return (netifs != null && i < netifs.length);
|
return i < a.length;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static <T> Stream<T> streamFromArray(T[] a) {
|
||||||
|
return StreamSupport.stream(
|
||||||
|
Spliterators.spliterator(
|
||||||
|
a,
|
||||||
|
Spliterator.DISTINCT | Spliterator.IMMUTABLE | Spliterator.NONNULL),
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
|
||||||
private native static NetworkInterface[] getAll()
|
private native static NetworkInterface[] getAll()
|
||||||
throws SocketException;
|
throws SocketException;
|
||||||
|
|
||||||
|
@ -2018,7 +2018,7 @@ public final class URI
|
|||||||
StringBuilder sb = new StringBuilder(base.length() + cn);
|
StringBuilder sb = new StringBuilder(base.length() + cn);
|
||||||
// 5.2 (6a)
|
// 5.2 (6a)
|
||||||
if (i >= 0)
|
if (i >= 0)
|
||||||
sb.append(base.substring(0, i + 1));
|
sb.append(base, 0, i + 1);
|
||||||
// 5.2 (6b)
|
// 5.2 (6b)
|
||||||
sb.append(child);
|
sb.append(child);
|
||||||
path = sb.toString();
|
path = sb.toString();
|
||||||
@ -2686,7 +2686,7 @@ public final class URI
|
|||||||
if (!match(c, lowMask, highMask)) {
|
if (!match(c, lowMask, highMask)) {
|
||||||
if (sb == null) {
|
if (sb == null) {
|
||||||
sb = new StringBuffer();
|
sb = new StringBuffer();
|
||||||
sb.append(s.substring(0, i));
|
sb.append(s, 0, i);
|
||||||
}
|
}
|
||||||
appendEscape(sb, (byte)c);
|
appendEscape(sb, (byte)c);
|
||||||
} else {
|
} else {
|
||||||
@ -2698,7 +2698,7 @@ public final class URI
|
|||||||
|| Character.isISOControl(c))) {
|
|| Character.isISOControl(c))) {
|
||||||
if (sb == null) {
|
if (sb == null) {
|
||||||
sb = new StringBuffer();
|
sb = new StringBuffer();
|
||||||
sb.append(s.substring(0, i));
|
sb.append(s, 0, i);
|
||||||
}
|
}
|
||||||
appendEncoded(sb, c);
|
appendEncoded(sb, c);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,8 @@
|
|||||||
package java.security;
|
package java.security;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class representing a collection of Permission objects.
|
* Abstract class representing a collection of Permission objects.
|
||||||
@ -126,9 +128,34 @@ public abstract class PermissionCollection implements java.io.Serializable {
|
|||||||
* Returns an enumeration of all the Permission objects in the collection.
|
* Returns an enumeration of all the Permission objects in the collection.
|
||||||
*
|
*
|
||||||
* @return an enumeration of all the Permissions.
|
* @return an enumeration of all the Permissions.
|
||||||
|
* @see #elementsAsStream()
|
||||||
*/
|
*/
|
||||||
public abstract Enumeration<Permission> elements();
|
public abstract Enumeration<Permission> elements();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a stream of all the Permission objects in the collection.
|
||||||
|
*
|
||||||
|
* <p> The collection should not be modified (see {@link #add}) during the
|
||||||
|
* execution of the terminal stream operation. Otherwise, the result of the
|
||||||
|
* terminal stream operation is undefined.
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* The default implementation creates a stream whose source is derived from
|
||||||
|
* the enumeration returned from a call to {@link #elements()}.
|
||||||
|
*
|
||||||
|
* @return a stream of all the Permissions.
|
||||||
|
* @since 1.9
|
||||||
|
*/
|
||||||
|
public Stream<Permission> elementsAsStream() {
|
||||||
|
int characteristics = isReadOnly()
|
||||||
|
? Spliterator.NONNULL | Spliterator.IMMUTABLE
|
||||||
|
: Spliterator.NONNULL;
|
||||||
|
return StreamSupport.stream(
|
||||||
|
Spliterators.spliteratorUnknownSize(
|
||||||
|
elements().asIterator(), characteristics),
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marks this PermissionCollection object as "readonly". After
|
* Marks this PermissionCollection object as "readonly". After
|
||||||
* a PermissionCollection object
|
* a PermissionCollection object
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -2238,7 +2238,7 @@ public class X509CertSelector implements CertSelector {
|
|||||||
+ subjectPublicKeyAlgID + ", xcert subjectPublicKeyAlgID = "
|
+ subjectPublicKeyAlgID + ", xcert subjectPublicKeyAlgID = "
|
||||||
+ algID.getOID());
|
+ algID.getOID());
|
||||||
}
|
}
|
||||||
if (!subjectPublicKeyAlgID.equals((Object)algID.getOID())) {
|
if (!subjectPublicKeyAlgID.equals(algID.getOID())) {
|
||||||
if (debug != null) {
|
if (debug != null) {
|
||||||
debug.println("X509CertSelector.match: "
|
debug.println("X509CertSelector.match: "
|
||||||
+ "subject public key alg IDs don't match");
|
+ "subject public key alg IDs don't match");
|
||||||
|
@ -329,8 +329,8 @@ final class MergeCollation {
|
|||||||
PatternEntry e = patterns.get(i);
|
PatternEntry e = patterns.get(i);
|
||||||
if (e.chars.regionMatches(0,entry.chars,0,
|
if (e.chars.regionMatches(0,entry.chars,0,
|
||||||
e.chars.length())) {
|
e.chars.length())) {
|
||||||
excessChars.append(entry.chars.substring(e.chars.length(),
|
excessChars.append(entry.chars, e.chars.length(),
|
||||||
entry.chars.length()));
|
entry.chars.length());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1239,7 +1239,7 @@ public class MessageFormat extends Format {
|
|||||||
int lastOffset = 0;
|
int lastOffset = 0;
|
||||||
int last = result.length();
|
int last = result.length();
|
||||||
for (int i = 0; i <= maxOffset; ++i) {
|
for (int i = 0; i <= maxOffset; ++i) {
|
||||||
result.append(pattern.substring(lastOffset, offsets[i]));
|
result.append(pattern, lastOffset, offsets[i]);
|
||||||
lastOffset = offsets[i];
|
lastOffset = offsets[i];
|
||||||
int argumentNumber = argumentNumbers[i];
|
int argumentNumber = argumentNumbers[i];
|
||||||
if (arguments == null || argumentNumber >= arguments.length) {
|
if (arguments == null || argumentNumber >= arguments.length) {
|
||||||
@ -1332,7 +1332,7 @@ public class MessageFormat extends Format {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.append(pattern.substring(lastOffset, pattern.length()));
|
result.append(pattern, lastOffset, pattern.length());
|
||||||
if (characterIterators != null && last != result.length()) {
|
if (characterIterators != null && last != result.length()) {
|
||||||
characterIterators.add(createAttributedCharacterIterator(
|
characterIterators.add(createAttributedCharacterIterator(
|
||||||
result.substring(last)));
|
result.substring(last)));
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -4268,6 +4268,7 @@ public class Collections {
|
|||||||
|
|
||||||
public boolean hasMoreElements() { return false; }
|
public boolean hasMoreElements() { return false; }
|
||||||
public E nextElement() { throw new NoSuchElementException(); }
|
public E nextElement() { throw new NoSuchElementException(); }
|
||||||
|
public Iterator<E> asIterator() { return emptyIterator(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -5199,6 +5200,11 @@ public class Collections {
|
|||||||
* interoperability with legacy APIs that require an enumeration
|
* interoperability with legacy APIs that require an enumeration
|
||||||
* as input.
|
* as input.
|
||||||
*
|
*
|
||||||
|
* <p>The iterator returned from a call to {@link Enumeration#asIterator()}
|
||||||
|
* does not support removal of elements from the specified collection. This
|
||||||
|
* is necessary to avoid unintentionally increasing the capabilities of the
|
||||||
|
* returned enumeration.
|
||||||
|
*
|
||||||
* @param <T> the class of the objects in the collection
|
* @param <T> the class of the objects in the collection
|
||||||
* @param c the collection for which an enumeration is to be returned.
|
* @param c the collection for which an enumeration is to be returned.
|
||||||
* @return an enumeration over the specified collection.
|
* @return an enumeration over the specified collection.
|
||||||
|
@ -88,18 +88,22 @@ public class LinkedList<E>
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Pointer to first node.
|
* Pointer to first node.
|
||||||
* Invariant: (first == null && last == null) ||
|
|
||||||
* (first.prev == null && first.item != null)
|
|
||||||
*/
|
*/
|
||||||
transient Node<E> first;
|
transient Node<E> first;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pointer to last node.
|
* Pointer to last node.
|
||||||
* Invariant: (first == null && last == null) ||
|
|
||||||
* (last.next == null && last.item != null)
|
|
||||||
*/
|
*/
|
||||||
transient Node<E> last;
|
transient Node<E> last;
|
||||||
|
|
||||||
|
/*
|
||||||
|
void dataStructureInvariants() {
|
||||||
|
assert (size == 0)
|
||||||
|
? (first == null && last == null)
|
||||||
|
: (first.prev == null && last.next == null);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs an empty list.
|
* Constructs an empty list.
|
||||||
*/
|
*/
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -265,6 +265,10 @@ class JarFile extends ZipFile {
|
|||||||
public JarEntry nextElement() {
|
public JarEntry nextElement() {
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Iterator<JarEntry> asIterator() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -526,6 +526,10 @@ class ZipFile implements ZipConstants, Closeable {
|
|||||||
return ze;
|
return ze;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Iterator<ZipEntry> asIterator() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -511,7 +511,7 @@ public class BytecodeName {
|
|||||||
if (s.charAt(0) != ESCAPE_C && i > 0)
|
if (s.charAt(0) != ESCAPE_C && i > 0)
|
||||||
sb.append(NULL_ESCAPE);
|
sb.append(NULL_ESCAPE);
|
||||||
// append the string so far, which is unremarkable:
|
// append the string so far, which is unremarkable:
|
||||||
sb.append(s.substring(0, i));
|
sb.append(s, 0, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
// rewrite \ to \-, / to \|, etc.
|
// rewrite \ to \-, / to \|, etc.
|
||||||
@ -544,7 +544,7 @@ public class BytecodeName {
|
|||||||
if (sb == null) {
|
if (sb == null) {
|
||||||
sb = new StringBuilder(s.length());
|
sb = new StringBuilder(s.length());
|
||||||
// append the string so far, which is unremarkable:
|
// append the string so far, which is unremarkable:
|
||||||
sb.append(s.substring(stringStart, i));
|
sb.append(s, stringStart, i);
|
||||||
}
|
}
|
||||||
++i; // skip both characters
|
++i; // skip both characters
|
||||||
c = oc;
|
c = oc;
|
||||||
|
@ -451,7 +451,7 @@ public class ParseUtil {
|
|||||||
if (!match(c, lowMask, highMask) && !isEscaped(s, i)) {
|
if (!match(c, lowMask, highMask) && !isEscaped(s, i)) {
|
||||||
if (sb == null) {
|
if (sb == null) {
|
||||||
sb = new StringBuffer();
|
sb = new StringBuffer();
|
||||||
sb.append(s.substring(0, i));
|
sb.append(s, 0, i);
|
||||||
}
|
}
|
||||||
appendEscape(sb, (byte)c);
|
appendEscape(sb, (byte)c);
|
||||||
} else {
|
} else {
|
||||||
@ -463,7 +463,7 @@ public class ParseUtil {
|
|||||||
|| Character.isISOControl(c))) {
|
|| Character.isISOControl(c))) {
|
||||||
if (sb == null) {
|
if (sb == null) {
|
||||||
sb = new StringBuffer();
|
sb = new StringBuffer();
|
||||||
sb.append(s.substring(0, i));
|
sb.append(s, 0, i);
|
||||||
}
|
}
|
||||||
appendEncoded(sb, c);
|
appendEncoded(sb, c);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -41,6 +41,27 @@ public abstract class AbstractFileTypeDetector
|
|||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the extension of a file name, specifically the portion of the
|
||||||
|
* parameter string after the first dot. If the parameter is {@code null},
|
||||||
|
* empty, does not contain a dot, or the dot is the last character, then an
|
||||||
|
* empty string is returned, otherwise the characters after the dot are
|
||||||
|
* returned.
|
||||||
|
*
|
||||||
|
* @param name A file name
|
||||||
|
* @return The characters after the first dot or an empty string.
|
||||||
|
*/
|
||||||
|
protected final String getExtension(String name) {
|
||||||
|
String ext = "";
|
||||||
|
if (name != null && !name.isEmpty()) {
|
||||||
|
int dot = name.indexOf('.');
|
||||||
|
if ((dot >= 0) && (dot < name.length() - 1)) {
|
||||||
|
ext = name.substring(dot + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ext;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Invokes the appropriate probe method to guess a file's content type,
|
* Invokes the appropriate probe method to guess a file's content type,
|
||||||
* and checks that the content type's syntax is valid.
|
* and checks that the content type's syntax is valid.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -163,9 +163,9 @@ public class ContentInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public byte[] getData() throws IOException {
|
public byte[] getData() throws IOException {
|
||||||
if (contentType.equals((Object)DATA_OID) ||
|
if (contentType.equals(DATA_OID) ||
|
||||||
contentType.equals((Object)OLD_DATA_OID) ||
|
contentType.equals(OLD_DATA_OID) ||
|
||||||
contentType.equals((Object)TIMESTAMP_TOKEN_INFO_OID)) {
|
contentType.equals(TIMESTAMP_TOKEN_INFO_OID)) {
|
||||||
if (content == null)
|
if (content == null)
|
||||||
return null;
|
return null;
|
||||||
else
|
else
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -182,13 +182,12 @@ public class PKCS7 {
|
|||||||
contentType = contentInfo.contentType;
|
contentType = contentInfo.contentType;
|
||||||
DerValue content = contentInfo.getContent();
|
DerValue content = contentInfo.getContent();
|
||||||
|
|
||||||
if (contentType.equals((Object)ContentInfo.SIGNED_DATA_OID)) {
|
if (contentType.equals(ContentInfo.SIGNED_DATA_OID)) {
|
||||||
parseSignedData(content);
|
parseSignedData(content);
|
||||||
} else if (contentType.equals((Object)ContentInfo.OLD_SIGNED_DATA_OID)) {
|
} else if (contentType.equals(ContentInfo.OLD_SIGNED_DATA_OID)) {
|
||||||
// This is for backwards compatibility with JDK 1.1.x
|
// This is for backwards compatibility with JDK 1.1.x
|
||||||
parseOldSignedData(content);
|
parseOldSignedData(content);
|
||||||
} else if (contentType.equals((Object)
|
} else if (contentType.equals(ContentInfo.NETSCAPE_CERT_SEQUENCE_OID)){
|
||||||
ContentInfo.NETSCAPE_CERT_SEQUENCE_OID)){
|
|
||||||
parseNetscapeCertChain(content);
|
parseNetscapeCertChain(content);
|
||||||
} else {
|
} else {
|
||||||
throw new ParsingException("content type " + contentType +
|
throw new ParsingException("content type " + contentType +
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -307,7 +307,7 @@ public class SignerInfo implements DerEncoder {
|
|||||||
authenticatedAttributes.getAttributeValue(
|
authenticatedAttributes.getAttributeValue(
|
||||||
PKCS9Attribute.CONTENT_TYPE_OID);
|
PKCS9Attribute.CONTENT_TYPE_OID);
|
||||||
if (contentType == null ||
|
if (contentType == null ||
|
||||||
!contentType.equals((Object)content.contentType))
|
!contentType.equals(content.contentType))
|
||||||
return null; // contentType does not match, bad SignerInfo
|
return null; // contentType does not match, bad SignerInfo
|
||||||
|
|
||||||
// now, check message digest
|
// now, check message digest
|
||||||
|
@ -789,7 +789,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (params != null) {
|
if (params != null) {
|
||||||
if (algorithm.equals((Object)pbes2_OID)) {
|
if (algorithm.equals(pbes2_OID)) {
|
||||||
algParams = AlgorithmParameters.getInstance("PBES2");
|
algParams = AlgorithmParameters.getInstance("PBES2");
|
||||||
} else {
|
} else {
|
||||||
algParams = AlgorithmParameters.getInstance("PBE");
|
algParams = AlgorithmParameters.getInstance("PBE");
|
||||||
@ -926,7 +926,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
|||||||
private static String mapPBEParamsToAlgorithm(ObjectIdentifier algorithm,
|
private static String mapPBEParamsToAlgorithm(ObjectIdentifier algorithm,
|
||||||
AlgorithmParameters algParams) throws NoSuchAlgorithmException {
|
AlgorithmParameters algParams) throws NoSuchAlgorithmException {
|
||||||
// Check for PBES2 algorithms
|
// Check for PBES2 algorithms
|
||||||
if (algorithm.equals((Object)pbes2_OID) && algParams != null) {
|
if (algorithm.equals(pbes2_OID) && algParams != null) {
|
||||||
return algParams.toString();
|
return algParams.toString();
|
||||||
}
|
}
|
||||||
return algorithm.toString();
|
return algorithm.toString();
|
||||||
@ -1937,7 +1937,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
|||||||
ContentInfo authSafe = new ContentInfo(s);
|
ContentInfo authSafe = new ContentInfo(s);
|
||||||
ObjectIdentifier contentType = authSafe.getContentType();
|
ObjectIdentifier contentType = authSafe.getContentType();
|
||||||
|
|
||||||
if (contentType.equals((Object)ContentInfo.DATA_OID)) {
|
if (contentType.equals(ContentInfo.DATA_OID)) {
|
||||||
authSafeData = authSafe.getData();
|
authSafeData = authSafe.getData();
|
||||||
} else /* signed data */ {
|
} else /* signed data */ {
|
||||||
throw new IOException("public key protected PKCS12 not supported");
|
throw new IOException("public key protected PKCS12 not supported");
|
||||||
@ -1965,14 +1965,14 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
|||||||
safeContents = new ContentInfo(sci);
|
safeContents = new ContentInfo(sci);
|
||||||
contentType = safeContents.getContentType();
|
contentType = safeContents.getContentType();
|
||||||
safeContentsData = null;
|
safeContentsData = null;
|
||||||
if (contentType.equals((Object)ContentInfo.DATA_OID)) {
|
if (contentType.equals(ContentInfo.DATA_OID)) {
|
||||||
|
|
||||||
if (debug != null) {
|
if (debug != null) {
|
||||||
debug.println("Loading PKCS#7 data content-type");
|
debug.println("Loading PKCS#7 data content-type");
|
||||||
}
|
}
|
||||||
|
|
||||||
safeContentsData = safeContents.getData();
|
safeContentsData = safeContents.getData();
|
||||||
} else if (contentType.equals((Object)ContentInfo.ENCRYPTED_DATA_OID)) {
|
} else if (contentType.equals(ContentInfo.ENCRYPTED_DATA_OID)) {
|
||||||
if (password == null) {
|
if (password == null) {
|
||||||
|
|
||||||
if (debug != null) {
|
if (debug != null) {
|
||||||
@ -2178,12 +2178,12 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
|||||||
+ bagValue.tag);
|
+ bagValue.tag);
|
||||||
}
|
}
|
||||||
bagValue = bagValue.data.getDerValue();
|
bagValue = bagValue.data.getDerValue();
|
||||||
if (bagId.equals((Object)PKCS8ShroudedKeyBag_OID)) {
|
if (bagId.equals(PKCS8ShroudedKeyBag_OID)) {
|
||||||
PrivateKeyEntry kEntry = new PrivateKeyEntry();
|
PrivateKeyEntry kEntry = new PrivateKeyEntry();
|
||||||
kEntry.protectedPrivKey = bagValue.toByteArray();
|
kEntry.protectedPrivKey = bagValue.toByteArray();
|
||||||
bagItem = kEntry;
|
bagItem = kEntry;
|
||||||
privateKeyCount++;
|
privateKeyCount++;
|
||||||
} else if (bagId.equals((Object)CertBag_OID)) {
|
} else if (bagId.equals(CertBag_OID)) {
|
||||||
DerInputStream cs = new DerInputStream(bagValue.toByteArray());
|
DerInputStream cs = new DerInputStream(bagValue.toByteArray());
|
||||||
DerValue[] certValues = cs.getSequence(2);
|
DerValue[] certValues = cs.getSequence(2);
|
||||||
ObjectIdentifier certId = certValues[0].getOID();
|
ObjectIdentifier certId = certValues[0].getOID();
|
||||||
@ -2198,7 +2198,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
|||||||
(new ByteArrayInputStream(certValue.getOctetString()));
|
(new ByteArrayInputStream(certValue.getOctetString()));
|
||||||
bagItem = cert;
|
bagItem = cert;
|
||||||
certificateCount++;
|
certificateCount++;
|
||||||
} else if (bagId.equals((Object)SecretBag_OID)) {
|
} else if (bagId.equals(SecretBag_OID)) {
|
||||||
DerInputStream ss = new DerInputStream(bagValue.toByteArray());
|
DerInputStream ss = new DerInputStream(bagValue.toByteArray());
|
||||||
DerValue[] secretValues = ss.getSequence(2);
|
DerValue[] secretValues = ss.getSequence(2);
|
||||||
ObjectIdentifier secretId = secretValues[0].getOID();
|
ObjectIdentifier secretId = secretValues[0].getOID();
|
||||||
@ -2249,12 +2249,12 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
|||||||
throw new IOException("Attribute " + attrId +
|
throw new IOException("Attribute " + attrId +
|
||||||
" should have a value " + e.getMessage());
|
" should have a value " + e.getMessage());
|
||||||
}
|
}
|
||||||
if (attrId.equals((Object)PKCS9FriendlyName_OID)) {
|
if (attrId.equals(PKCS9FriendlyName_OID)) {
|
||||||
alias = valSet[0].getBMPString();
|
alias = valSet[0].getBMPString();
|
||||||
} else if (attrId.equals((Object)PKCS9LocalKeyId_OID)) {
|
} else if (attrId.equals(PKCS9LocalKeyId_OID)) {
|
||||||
keyId = valSet[0].getOctetString();
|
keyId = valSet[0].getOctetString();
|
||||||
} else if
|
} else if
|
||||||
(attrId.equals((Object)TrustedKeyUsage_OID)) {
|
(attrId.equals(TrustedKeyUsage_OID)) {
|
||||||
trustedKeyUsage = new ObjectIdentifier[valSet.length];
|
trustedKeyUsage = new ObjectIdentifier[valSet.length];
|
||||||
for (int k = 0; k < valSet.length; k++) {
|
for (int k = 0; k < valSet.length; k++) {
|
||||||
trustedKeyUsage[k] = valSet[k].getOID();
|
trustedKeyUsage[k] = valSet[k].getOID();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -322,7 +322,7 @@ public final class OCSP {
|
|||||||
|
|
||||||
List<AccessDescription> descriptions = aia.getAccessDescriptions();
|
List<AccessDescription> descriptions = aia.getAccessDescriptions();
|
||||||
for (AccessDescription description : descriptions) {
|
for (AccessDescription description : descriptions) {
|
||||||
if (description.getAccessMethod().equals((Object)
|
if (description.getAccessMethod().equals(
|
||||||
AccessDescription.Ad_OCSP_Id)) {
|
AccessDescription.Ad_OCSP_Id)) {
|
||||||
|
|
||||||
GeneralName generalName = description.getAccessLocation();
|
GeneralName generalName = description.getAccessLocation();
|
||||||
|
@ -239,7 +239,7 @@ public final class OCSPResponse {
|
|||||||
// responseType
|
// responseType
|
||||||
derIn = tmp.data;
|
derIn = tmp.data;
|
||||||
ObjectIdentifier responseType = derIn.getOID();
|
ObjectIdentifier responseType = derIn.getOID();
|
||||||
if (responseType.equals((Object)OCSP_BASIC_RESPONSE_OID)) {
|
if (responseType.equals(OCSP_BASIC_RESPONSE_OID)) {
|
||||||
if (debug != null) {
|
if (debug != null) {
|
||||||
debug.println("OCSP response type: basic");
|
debug.println("OCSP response type: basic");
|
||||||
}
|
}
|
||||||
@ -338,8 +338,7 @@ public final class OCSPResponse {
|
|||||||
debug.println("OCSP extension: " + ext);
|
debug.println("OCSP extension: " + ext);
|
||||||
}
|
}
|
||||||
// Only the NONCE extension is recognized
|
// Only the NONCE extension is recognized
|
||||||
if (ext.getExtensionId().equals((Object)
|
if (ext.getExtensionId().equals(OCSP.NONCE_EXTENSION_OID))
|
||||||
OCSP.NONCE_EXTENSION_OID))
|
|
||||||
{
|
{
|
||||||
nonce = ext.getExtensionValue();
|
nonce = ext.getExtensionValue();
|
||||||
} else if (ext.isCritical()) {
|
} else if (ext.isCritical()) {
|
||||||
|
@ -202,7 +202,7 @@ class URICertStore extends CertStoreSpi {
|
|||||||
* object of a certificate's Authority Information Access Extension.
|
* object of a certificate's Authority Information Access Extension.
|
||||||
*/
|
*/
|
||||||
static CertStore getInstance(AccessDescription ad) {
|
static CertStore getInstance(AccessDescription ad) {
|
||||||
if (!ad.getAccessMethod().equals((Object)
|
if (!ad.getAccessMethod().equals(
|
||||||
AccessDescription.Ad_CAISSUERS_Id)) {
|
AccessDescription.Ad_CAISSUERS_Id)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ public abstract class RSASignature extends SignatureSpi {
|
|||||||
throw new IOException("SEQUENCE length error");
|
throw new IOException("SEQUENCE length error");
|
||||||
}
|
}
|
||||||
AlgorithmId algId = AlgorithmId.parse(values[0]);
|
AlgorithmId algId = AlgorithmId.parse(values[0]);
|
||||||
if (algId.getOID().equals((Object)oid) == false) {
|
if (algId.getOID().equals(oid) == false) {
|
||||||
throw new IOException("ObjectIdentifier mismatch: "
|
throw new IOException("ObjectIdentifier mismatch: "
|
||||||
+ algId.getOID());
|
+ algId.getOID());
|
||||||
}
|
}
|
||||||
|
@ -1280,7 +1280,7 @@ public final class Main {
|
|||||||
Iterator<PKCS10Attribute> attrs = req.getAttributes().getAttributes().iterator();
|
Iterator<PKCS10Attribute> attrs = req.getAttributes().getAttributes().iterator();
|
||||||
while (attrs.hasNext()) {
|
while (attrs.hasNext()) {
|
||||||
PKCS10Attribute attr = attrs.next();
|
PKCS10Attribute attr = attrs.next();
|
||||||
if (attr.getAttributeId().equals((Object)PKCS9Attribute.EXTENSION_REQUEST_OID)) {
|
if (attr.getAttributeId().equals(PKCS9Attribute.EXTENSION_REQUEST_OID)) {
|
||||||
reqex = (CertificateExtensions)attr.getAttributeValue();
|
reqex = (CertificateExtensions)attr.getAttributeValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2338,7 +2338,7 @@ public final class Main {
|
|||||||
req.getSubjectName(), pkey.getFormat(), pkey.getAlgorithm());
|
req.getSubjectName(), pkey.getFormat(), pkey.getAlgorithm());
|
||||||
for (PKCS10Attribute attr: req.getAttributes().getAttributes()) {
|
for (PKCS10Attribute attr: req.getAttributes().getAttributes()) {
|
||||||
ObjectIdentifier oid = attr.getAttributeId();
|
ObjectIdentifier oid = attr.getAttributeId();
|
||||||
if (oid.equals((Object)PKCS9Attribute.EXTENSION_REQUEST_OID)) {
|
if (oid.equals(PKCS9Attribute.EXTENSION_REQUEST_OID)) {
|
||||||
CertificateExtensions exts = (CertificateExtensions)attr.getAttributeValue();
|
CertificateExtensions exts = (CertificateExtensions)attr.getAttributeValue();
|
||||||
if (exts != null) {
|
if (exts != null) {
|
||||||
printExtensions(rb.getString("Extension.Request."), exts, out);
|
printExtensions(rb.getString("Extension.Request."), exts, out);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -318,14 +318,6 @@ class ObjectIdentifier implements Serializable
|
|||||||
out.write (DerValue.tag_ObjectId, encoding);
|
out.write (DerValue.tag_ObjectId, encoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use equals((Object)oid)
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public boolean equals(ObjectIdentifier other) {
|
|
||||||
return equals((Object)other);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares this identifier with another, for equality.
|
* Compares this identifier with another, for equality.
|
||||||
*
|
*
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -364,8 +364,8 @@ public class AVA implements DerEncoder {
|
|||||||
|
|
||||||
// encode as PrintableString unless value contains
|
// encode as PrintableString unless value contains
|
||||||
// non-PrintableString chars
|
// non-PrintableString chars
|
||||||
if (this.oid.equals((Object)PKCS9Attribute.EMAIL_ADDRESS_OID) ||
|
if (this.oid.equals(PKCS9Attribute.EMAIL_ADDRESS_OID) ||
|
||||||
(this.oid.equals((Object)X500Name.DOMAIN_COMPONENT_OID) &&
|
(this.oid.equals(X500Name.DOMAIN_COMPONENT_OID) &&
|
||||||
PRESERVE_OLD_DC_ENCODING == false)) {
|
PRESERVE_OLD_DC_ENCODING == false)) {
|
||||||
// EmailAddress and DomainComponent must be IA5String
|
// EmailAddress and DomainComponent must be IA5String
|
||||||
return new DerValue(DerValue.tag_IA5String,
|
return new DerValue(DerValue.tag_IA5String,
|
||||||
@ -495,8 +495,8 @@ public class AVA implements DerEncoder {
|
|||||||
|
|
||||||
// encode as PrintableString unless value contains
|
// encode as PrintableString unless value contains
|
||||||
// non-PrintableString chars
|
// non-PrintableString chars
|
||||||
if (this.oid.equals((Object)PKCS9Attribute.EMAIL_ADDRESS_OID) ||
|
if (this.oid.equals(PKCS9Attribute.EMAIL_ADDRESS_OID) ||
|
||||||
(this.oid.equals((Object)X500Name.DOMAIN_COMPONENT_OID) &&
|
(this.oid.equals(X500Name.DOMAIN_COMPONENT_OID) &&
|
||||||
PRESERVE_OLD_DC_ENCODING == false)) {
|
PRESERVE_OLD_DC_ENCODING == false)) {
|
||||||
// EmailAddress and DomainComponent must be IA5String
|
// EmailAddress and DomainComponent must be IA5String
|
||||||
return new DerValue(DerValue.tag_IA5String, temp.toString());
|
return new DerValue(DerValue.tag_IA5String, temp.toString());
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -95,19 +95,19 @@ public final class AccessDescription {
|
|||||||
if (this == that) {
|
if (this == that) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return (accessMethod.equals((Object)that.getAccessMethod()) &&
|
return (accessMethod.equals(that.getAccessMethod()) &&
|
||||||
accessLocation.equals(that.getAccessLocation()));
|
accessLocation.equals(that.getAccessLocation()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
String method = null;
|
String method = null;
|
||||||
if (accessMethod.equals((Object)Ad_CAISSUERS_Id)) {
|
if (accessMethod.equals(Ad_CAISSUERS_Id)) {
|
||||||
method = "caIssuers";
|
method = "caIssuers";
|
||||||
} else if (accessMethod.equals((Object)Ad_CAREPOSITORY_Id)) {
|
} else if (accessMethod.equals(Ad_CAREPOSITORY_Id)) {
|
||||||
method = "caRepository";
|
method = "caRepository";
|
||||||
} else if (accessMethod.equals((Object)Ad_TIMESTAMPING_Id)) {
|
} else if (accessMethod.equals(Ad_TIMESTAMPING_Id)) {
|
||||||
method = "timeStamping";
|
method = "timeStamping";
|
||||||
} else if (accessMethod.equals((Object)Ad_OCSP_Id)) {
|
} else if (accessMethod.equals(Ad_OCSP_Id)) {
|
||||||
method = "ocsp";
|
method = "ocsp";
|
||||||
} else {
|
} else {
|
||||||
method = accessMethod.toString();
|
method = accessMethod.toString();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -241,7 +241,7 @@ public class CertificateExtensions implements CertAttrSet<Extension> {
|
|||||||
|
|
||||||
public String getNameByOid(ObjectIdentifier oid) throws IOException {
|
public String getNameByOid(ObjectIdentifier oid) throws IOException {
|
||||||
for (String name: map.keySet()) {
|
for (String name: map.keySet()) {
|
||||||
if (map.get(name).getExtensionId().equals((Object)oid)) {
|
if (map.get(name).getExtensionId().equals(oid)) {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -93,8 +93,7 @@ public class CertificatePolicyId {
|
|||||||
*/
|
*/
|
||||||
public boolean equals(Object other) {
|
public boolean equals(Object other) {
|
||||||
if (other instanceof CertificatePolicyId)
|
if (other instanceof CertificatePolicyId)
|
||||||
return id.equals((Object)
|
return id.equals(((CertificatePolicyId) other).getIdentifier());
|
||||||
((CertificatePolicyId) other).getIdentifier());
|
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -264,7 +264,7 @@ public class Extension implements java.security.cert.Extension {
|
|||||||
Extension otherExt = (Extension) other;
|
Extension otherExt = (Extension) other;
|
||||||
if (critical != otherExt.critical)
|
if (critical != otherExt.critical)
|
||||||
return false;
|
return false;
|
||||||
if (!extensionId.equals((Object)otherExt.extensionId))
|
if (!extensionId.equals(otherExt.extensionId))
|
||||||
return false;
|
return false;
|
||||||
return Arrays.equals(extensionValue, otherExt.extensionValue);
|
return Arrays.equals(extensionValue, otherExt.extensionValue);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -579,7 +579,7 @@ implements CertAttrSet<String>, Cloneable {
|
|||||||
public boolean verifyRFC822SpecialCase(X500Name subject) throws IOException {
|
public boolean verifyRFC822SpecialCase(X500Name subject) throws IOException {
|
||||||
for (AVA ava : subject.allAvas()) {
|
for (AVA ava : subject.allAvas()) {
|
||||||
ObjectIdentifier attrOID = ava.getObjectIdentifier();
|
ObjectIdentifier attrOID = ava.getObjectIdentifier();
|
||||||
if (attrOID.equals((Object)PKCS9Attribute.EMAIL_ADDRESS_OID)) {
|
if (attrOID.equals(PKCS9Attribute.EMAIL_ADDRESS_OID)) {
|
||||||
String attrValue = ava.getValueString();
|
String attrValue = ava.getValueString();
|
||||||
if (attrValue != null) {
|
if (attrValue != null) {
|
||||||
RFC822Name emailName;
|
RFC822Name emailName;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -120,7 +120,7 @@ public class OIDName implements GeneralNameInterface {
|
|||||||
|
|
||||||
OIDName other = (OIDName)obj;
|
OIDName other = (OIDName)obj;
|
||||||
|
|
||||||
return oid.equals((Object)other.oid);
|
return oid.equals(other.oid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -176,7 +176,7 @@ public class OtherName implements GeneralNameInterface {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
OtherName otherOther = (OtherName)other;
|
OtherName otherOther = (OtherName)other;
|
||||||
if (!(otherOther.oid.equals((Object)oid))) {
|
if (!(otherOther.oid.equals(oid))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
GeneralNameInterface otherGNI = null;
|
GeneralNameInterface otherGNI = null;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -321,7 +321,7 @@ public class RDN {
|
|||||||
*/
|
*/
|
||||||
DerValue findAttribute(ObjectIdentifier oid) {
|
DerValue findAttribute(ObjectIdentifier oid) {
|
||||||
for (int i = 0; i < assertion.length; i++) {
|
for (int i = 0; i < assertion.length; i++) {
|
||||||
if (assertion[i].oid.equals((Object)oid)) {
|
if (assertion[i].oid.equals(oid)) {
|
||||||
return assertion[i].value;
|
return assertion[i].value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -414,7 +414,7 @@ public class X509CRLEntryImpl extends X509CRLEntry
|
|||||||
e.hasMoreElements();) {
|
e.hasMoreElements();) {
|
||||||
ex = e.nextElement();
|
ex = e.nextElement();
|
||||||
inCertOID = ex.getExtensionId();
|
inCertOID = ex.getExtensionId();
|
||||||
if (inCertOID.equals((Object)findOID)) {
|
if (inCertOID.equals(findOID)) {
|
||||||
crlExt = ex;
|
crlExt = ex;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -1039,7 +1039,7 @@ public class X509CRLImpl extends X509CRL implements DerEncoder {
|
|||||||
e.hasMoreElements();) {
|
e.hasMoreElements();) {
|
||||||
ex = e.nextElement();
|
ex = e.nextElement();
|
||||||
inCertOID = ex.getExtensionId();
|
inCertOID = ex.getExtensionId();
|
||||||
if (inCertOID.equals((Object)findOID)) {
|
if (inCertOID.equals(findOID)) {
|
||||||
crlExt = ex;
|
crlExt = ex;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -1339,7 +1339,7 @@ public class X509CertImpl extends X509Certificate implements DerEncoder {
|
|||||||
return ex;
|
return ex;
|
||||||
}
|
}
|
||||||
for (Extension ex2: extensions.getAllExtensions()) {
|
for (Extension ex2: extensions.getAllExtensions()) {
|
||||||
if (ex2.getExtensionId().equals((Object)oid)) {
|
if (ex2.getExtensionId().equals(oid)) {
|
||||||
//XXXX May want to consider cloning this
|
//XXXX May want to consider cloning this
|
||||||
return ex2;
|
return ex2;
|
||||||
}
|
}
|
||||||
@ -1395,7 +1395,7 @@ public class X509CertImpl extends X509Certificate implements DerEncoder {
|
|||||||
|
|
||||||
for (Extension ex : exts.getAllExtensions()) {
|
for (Extension ex : exts.getAllExtensions()) {
|
||||||
ObjectIdentifier inCertOID = ex.getExtensionId();
|
ObjectIdentifier inCertOID = ex.getExtensionId();
|
||||||
if (inCertOID.equals((Object)findOID)) {
|
if (inCertOID.equals(findOID)) {
|
||||||
certExt = ex;
|
certExt = ex;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1850,7 +1850,7 @@ public class UnicodeSet implements UnicodeMatcher {
|
|||||||
syntaxError(chars, "Invalid property pattern");
|
syntaxError(chars, "Invalid property pattern");
|
||||||
}
|
}
|
||||||
chars.jumpahead(pos.getIndex());
|
chars.jumpahead(pos.getIndex());
|
||||||
rebuiltPat.append(patStr.substring(0, pos.getIndex()));
|
rebuiltPat.append(patStr, 0, pos.getIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
|
@ -242,12 +242,13 @@ public class BuddhistCalendar extends GregorianCalendar {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
p += yearField.length();
|
p += yearField.length();
|
||||||
StringBuilder sb = new StringBuilder(s.substring(0, p));
|
StringBuilder sb = new StringBuilder(s.length() + 10);
|
||||||
|
sb.append(s, 0, p);
|
||||||
// Skip the year number
|
// Skip the year number
|
||||||
while (Character.isDigit(s.charAt(p++)))
|
while (Character.isDigit(s.charAt(p++)))
|
||||||
;
|
;
|
||||||
int year = internalGet(YEAR) + BUDDHIST_YEAR_OFFSET;
|
int year = internalGet(YEAR) + BUDDHIST_YEAR_OFFSET;
|
||||||
sb.append(year).append(s.substring(p - 1));
|
sb.append(year).append(s, p - 1, s.length());
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ static struct vmdesc *knownVMs = NULL;
|
|||||||
static int knownVMsCount = 0;
|
static int knownVMsCount = 0;
|
||||||
static int knownVMsLimit = 0;
|
static int knownVMsLimit = 0;
|
||||||
|
|
||||||
static void GrowKnownVMs();
|
static void GrowKnownVMs(int minimum);
|
||||||
static int KnownVMIndex(const char* name);
|
static int KnownVMIndex(const char* name);
|
||||||
static void FreeKnownVMs();
|
static void FreeKnownVMs();
|
||||||
static jboolean IsWildCardEnabled();
|
static jboolean IsWildCardEnabled();
|
||||||
|
@ -65,8 +65,8 @@ class UnixFileSystem extends FileSystem {
|
|||||||
int n = len;
|
int n = len;
|
||||||
while ((n > 0) && (pathname.charAt(n - 1) == '/')) n--;
|
while ((n > 0) && (pathname.charAt(n - 1) == '/')) n--;
|
||||||
if (n == 0) return "/";
|
if (n == 0) return "/";
|
||||||
StringBuffer sb = new StringBuffer(pathname.length());
|
StringBuilder sb = new StringBuilder(pathname.length());
|
||||||
if (off > 0) sb.append(pathname.substring(0, off));
|
if (off > 0) sb.append(pathname, 0, off);
|
||||||
char prevChar = 0;
|
char prevChar = 0;
|
||||||
for (int i = off; i < n; i++) {
|
for (int i = off; i < n; i++) {
|
||||||
char c = pathname.charAt(i);
|
char c = pathname.charAt(i);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -83,18 +83,6 @@ class MimeTypesFileTypeDetector extends AbstractFileTypeDetector {
|
|||||||
return mimeType;
|
return mimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the extension of a file name.
|
|
||||||
private static String getExtension(String name) {
|
|
||||||
String ext = "";
|
|
||||||
if (name != null && !name.isEmpty()) {
|
|
||||||
int dot = name.indexOf('.');
|
|
||||||
if ((dot >= 0) && (dot < name.length() - 1)) {
|
|
||||||
ext = name.substring(dot + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ext;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse the mime types file, and store the type-extension mappings into
|
* Parse the mime types file, and store the type-extension mappings into
|
||||||
* mimeTypeMap. The mime types file is not loaded until the first probe
|
* mimeTypeMap. The mime types file is not loaded until the first probe
|
||||||
|
@ -104,7 +104,7 @@ class WinNTFileSystem extends FileSystem {
|
|||||||
if (off < 3) off = 0; /* Avoid fencepost cases with UNC pathnames */
|
if (off < 3) off = 0; /* Avoid fencepost cases with UNC pathnames */
|
||||||
int src;
|
int src;
|
||||||
char slash = this.slash;
|
char slash = this.slash;
|
||||||
StringBuffer sb = new StringBuffer(len);
|
StringBuilder sb = new StringBuilder(len);
|
||||||
|
|
||||||
if (off == 0) {
|
if (off == 0) {
|
||||||
/* Complete normalization, including prefix */
|
/* Complete normalization, including prefix */
|
||||||
@ -112,7 +112,7 @@ class WinNTFileSystem extends FileSystem {
|
|||||||
} else {
|
} else {
|
||||||
/* Partial normalization */
|
/* Partial normalization */
|
||||||
src = off;
|
src = off;
|
||||||
sb.append(path.substring(0, off));
|
sb.append(path, 0, off);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove redundant slashes from the remainder of the path, forcing all
|
/* Remove redundant slashes from the remainder of the path, forcing all
|
||||||
@ -156,8 +156,7 @@ class WinNTFileSystem extends FileSystem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String rv = sb.toString();
|
return sb.toString();
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A normal Win32 pathname contains no duplicate slashes, except possibly
|
/* A normal Win32 pathname contains no duplicate slashes, except possibly
|
||||||
@ -172,7 +171,7 @@ class WinNTFileSystem extends FileSystem {
|
|||||||
else directory-relative (has form "z:foo")
|
else directory-relative (has form "z:foo")
|
||||||
3 absolute local pathname (begins with "z:\\")
|
3 absolute local pathname (begins with "z:\\")
|
||||||
*/
|
*/
|
||||||
private int normalizePrefix(String path, int len, StringBuffer sb) {
|
private int normalizePrefix(String path, int len, StringBuilder sb) {
|
||||||
int src = 0;
|
int src = 0;
|
||||||
while ((src < len) && isSlash(path.charAt(src))) src++;
|
while ((src < len) && isSlash(path.charAt(src))) src++;
|
||||||
char c;
|
char c;
|
||||||
|
@ -275,7 +275,7 @@ public final class JRSUIControl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Hit getHitForPoint(final double x, final double y, final double w, final double h, final double hitX, final double hitY) {
|
Hit getHitForPoint(final int x, final int y, final int w, final int h, final int hitX, final int hitY) {
|
||||||
sync();
|
sync();
|
||||||
// reflect hitY about the midline of the control before sending to native
|
// reflect hitY about the midline of the control before sending to native
|
||||||
final Hit hit = JRSUIConstants.getHit(getNativeHitPart(cfDictionaryPtr, priorEncodedProperties, currentEncodedProperties, x, y, w, h, hitX, 2 * y + h - hitY));
|
final Hit hit = JRSUIConstants.getHit(getNativeHitPart(cfDictionaryPtr, priorEncodedProperties, currentEncodedProperties, x, y, w, h, hitX, 2 * y + h - hitY));
|
||||||
@ -283,7 +283,7 @@ public final class JRSUIControl {
|
|||||||
return hit;
|
return hit;
|
||||||
}
|
}
|
||||||
|
|
||||||
void getPartBounds(final double[] rect, final double x, final double y, final double w, final double h, final int part) {
|
void getPartBounds(final double[] rect, final int x, final int y, final int w, final int h, final int part) {
|
||||||
if (rect == null) throw new NullPointerException("Cannot load null rect");
|
if (rect == null) throw new NullPointerException("Cannot load null rect");
|
||||||
if (rect.length != 4) throw new IllegalArgumentException("Rect must have four elements");
|
if (rect.length != 4) throw new IllegalArgumentException("Rect must have four elements");
|
||||||
|
|
||||||
@ -292,7 +292,7 @@ public final class JRSUIControl {
|
|||||||
priorEncodedProperties = currentEncodedProperties;
|
priorEncodedProperties = currentEncodedProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
double getScrollBarOffsetChange(final double x, final double y, final double w, final double h, final int offset, final int visibleAmount, final int extent) {
|
double getScrollBarOffsetChange(final int x, final int y, final int w, final int h, final int offset, final int visibleAmount, final int extent) {
|
||||||
sync();
|
sync();
|
||||||
final double offsetChange = getNativeScrollBarOffsetChange(cfDictionaryPtr, priorEncodedProperties, currentEncodedProperties, x, y, w, h, offset, visibleAmount, extent);
|
final double offsetChange = getNativeScrollBarOffsetChange(cfDictionaryPtr, priorEncodedProperties, currentEncodedProperties, x, y, w, h, offset, visibleAmount, extent);
|
||||||
priorEncodedProperties = currentEncodedProperties;
|
priorEncodedProperties = currentEncodedProperties;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,14 +25,15 @@
|
|||||||
|
|
||||||
package apple.laf;
|
package apple.laf;
|
||||||
|
|
||||||
import com.apple.laf.AquaImageFactory.NineSliceMetrics;
|
|
||||||
|
|
||||||
import apple.laf.JRSUIConstants.*;
|
|
||||||
import sun.security.action.GetPropertyAction;
|
|
||||||
|
|
||||||
import java.security.AccessController;
|
import java.security.AccessController;
|
||||||
|
|
||||||
public class JRSUIUtils {
|
import apple.laf.JRSUIConstants.Hit;
|
||||||
|
import apple.laf.JRSUIConstants.ScrollBarPart;
|
||||||
|
import com.apple.laf.AquaImageFactory.NineSliceMetrics;
|
||||||
|
import sun.security.action.GetPropertyAction;
|
||||||
|
|
||||||
|
public final class JRSUIUtils {
|
||||||
|
|
||||||
static boolean isLeopard = isMacOSXLeopard();
|
static boolean isLeopard = isMacOSXLeopard();
|
||||||
static boolean isSnowLeopardOrBelow = isMacOSXSnowLeopardOrBelow();
|
static boolean isSnowLeopardOrBelow = isMacOSXSnowLeopardOrBelow();
|
||||||
|
|
||||||
@ -48,7 +49,9 @@ public class JRSUIUtils {
|
|||||||
return currentMacOSXVersionMatchesGivenVersionRange(version, true, false, false);
|
return currentMacOSXVersionMatchesGivenVersionRange(version, true, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean currentMacOSXVersionMatchesGivenVersionRange(final int version, final boolean inclusive, final boolean matchBelow, final boolean matchAbove) {
|
static boolean currentMacOSXVersionMatchesGivenVersionRange(
|
||||||
|
final int version, final boolean inclusive,
|
||||||
|
final boolean matchBelow, final boolean matchAbove) {
|
||||||
// split the "10.x.y" version number
|
// split the "10.x.y" version number
|
||||||
String osVersion = AccessController.doPrivileged(new GetPropertyAction("os.version"));
|
String osVersion = AccessController.doPrivileged(new GetPropertyAction("os.version"));
|
||||||
String[] fragments = osVersion.split("\\.");
|
String[] fragments = osVersion.split("\\.");
|
||||||
@ -99,12 +102,22 @@ public class JRSUIUtils {
|
|||||||
return shouldUseScrollToClick();
|
return shouldUseScrollToClick();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void getPartBounds(final double[] rect, final JRSUIControl control, final double x, final double y, final double w, final double h, final ScrollBarPart part) {
|
public static void getPartBounds(final double[] rect,
|
||||||
|
final JRSUIControl control,
|
||||||
|
final int x, final int y, final int w,
|
||||||
|
final int h,
|
||||||
|
final ScrollBarPart part) {
|
||||||
control.getPartBounds(rect, x, y, w, h, part.ordinal);
|
control.getPartBounds(rect, x, y, w, h, part.ordinal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double getNativeOffsetChange(final JRSUIControl control, final double x, final double y, final double w, final double h, final int offset, final int visibleAmount, final int extent) {
|
public static double getNativeOffsetChange(final JRSUIControl control,
|
||||||
return control.getScrollBarOffsetChange(x, y, w, h, offset, visibleAmount, extent);
|
final int x, final int y,
|
||||||
|
final int w, final int h,
|
||||||
|
final int offset,
|
||||||
|
final int visibleAmount,
|
||||||
|
final int extent) {
|
||||||
|
return control.getScrollBarOffsetChange(x, y, w, h, offset,
|
||||||
|
visibleAmount, extent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +128,10 @@ public class JRSUIUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class HitDetection {
|
public static class HitDetection {
|
||||||
public static Hit getHitForPoint(final JRSUIControl control, final double x, final double y, final double w, final double h, final double hitX, final double hitY) {
|
public static Hit getHitForPoint(final JRSUIControl control,
|
||||||
|
final int x, final int y, final int w,
|
||||||
|
final int h, final int hitX,
|
||||||
|
final int hitY) {
|
||||||
return control.getHitForPoint(x, y, w, h, hitX, hitY);
|
return control.getHitForPoint(x, y, w, h, hitX, hitY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,8 +26,8 @@ package java.awt;
|
|||||||
|
|
||||||
import java.beans.ConstructorProperties;
|
import java.beans.ConstructorProperties;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
|
||||||
import java.security.AccessController;
|
import java.security.AccessController;
|
||||||
|
import java.security.PrivilegedAction;
|
||||||
import java.security.PrivilegedExceptionAction;
|
import java.security.PrivilegedExceptionAction;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
@ -261,7 +261,7 @@ public class Cursor implements java.io.Serializable {
|
|||||||
* @throws IllegalArgumentException if the specified cursor type is
|
* @throws IllegalArgumentException if the specified cursor type is
|
||||||
* invalid
|
* invalid
|
||||||
*/
|
*/
|
||||||
static public Cursor getPredefinedCursor(int type) {
|
public static Cursor getPredefinedCursor(int type) {
|
||||||
if (type < Cursor.DEFAULT_CURSOR || type > Cursor.MOVE_CURSOR) {
|
if (type < Cursor.DEFAULT_CURSOR || type > Cursor.MOVE_CURSOR) {
|
||||||
throw new IllegalArgumentException("illegal cursor type");
|
throw new IllegalArgumentException("illegal cursor type");
|
||||||
}
|
}
|
||||||
@ -286,7 +286,7 @@ public class Cursor implements java.io.Serializable {
|
|||||||
* <code>GraphicsEnvironment.isHeadless</code> returns true
|
* <code>GraphicsEnvironment.isHeadless</code> returns true
|
||||||
* @exception AWTException in case of erroneous retrieving of the cursor
|
* @exception AWTException in case of erroneous retrieving of the cursor
|
||||||
*/
|
*/
|
||||||
static public Cursor getSystemCustomCursor(final String name)
|
public static Cursor getSystemCustomCursor(final String name)
|
||||||
throws AWTException, HeadlessException {
|
throws AWTException, HeadlessException {
|
||||||
GraphicsEnvironment.checkHeadless();
|
GraphicsEnvironment.checkHeadless();
|
||||||
Cursor cursor = systemCustomCursors.get(name);
|
Cursor cursor = systemCustomCursors.get(name);
|
||||||
@ -330,18 +330,15 @@ public class Cursor implements java.io.Serializable {
|
|||||||
} catch (NumberFormatException nfe) {
|
} catch (NumberFormatException nfe) {
|
||||||
throw new AWTException("failed to parse hotspot property for cursor: " + name);
|
throw new AWTException("failed to parse hotspot property for cursor: " + name);
|
||||||
}
|
}
|
||||||
|
final Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||||
try {
|
final String file = RESOURCE_PREFIX + fileName;
|
||||||
final Toolkit toolkit = Toolkit.getDefaultToolkit();
|
final InputStream in = AccessController.doPrivileged(
|
||||||
final String file = RESOURCE_PREFIX + fileName;
|
(PrivilegedAction<InputStream>) () -> {
|
||||||
|
return Cursor.class.getResourceAsStream(file);
|
||||||
cursor = AccessController.doPrivileged(
|
});
|
||||||
(PrivilegedExceptionAction<Cursor>) () -> {
|
try (in) {
|
||||||
URL url = Cursor.class.getResource(file);
|
Image image = toolkit.createImage(in.readAllBytes());
|
||||||
Image image = toolkit.getImage(url);
|
cursor = toolkit.createCustomCursor(image, hotPoint, localized);
|
||||||
return toolkit.createCustomCursor(image, hotPoint,
|
|
||||||
localized);
|
|
||||||
});
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new AWTException(
|
throw new AWTException(
|
||||||
"Exception: " + e.getClass() + " " + e.getMessage() +
|
"Exception: " + e.getClass() + " " + e.getMessage() +
|
||||||
@ -365,7 +362,7 @@ public class Cursor implements java.io.Serializable {
|
|||||||
*
|
*
|
||||||
* @return the default cursor
|
* @return the default cursor
|
||||||
*/
|
*/
|
||||||
static public Cursor getDefaultCursor() {
|
public static Cursor getDefaultCursor() {
|
||||||
return getPredefinedCursor(Cursor.DEFAULT_CURSOR);
|
return getPredefinedCursor(Cursor.DEFAULT_CURSOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +58,14 @@ import sun.awt.PeerEvent;
|
|||||||
import sun.awt.SunToolkit;
|
import sun.awt.SunToolkit;
|
||||||
import sun.util.CoreResourceBundleControl;
|
import sun.util.CoreResourceBundleControl;
|
||||||
|
|
||||||
|
import java.security.AccessController;
|
||||||
|
import java.security.PrivilegedAction;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.ServiceLoader;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import javax.accessibility.AccessibilityProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is the abstract superclass of all actual
|
* This class is the abstract superclass of all actual
|
||||||
* implementations of the Abstract Window Toolkit. Subclasses of
|
* implementations of the Abstract Window Toolkit. Subclasses of
|
||||||
@ -420,7 +428,7 @@ public abstract class Toolkit {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the names of any assistive technolgies to load. First
|
// Get the names of any assistive technologies to load. First
|
||||||
// check the system property and then check the properties
|
// check the system property and then check the properties
|
||||||
// file.
|
// file.
|
||||||
String classNames = System.getProperty("javax.accessibility.assistive_technologies");
|
String classNames = System.getProperty("javax.accessibility.assistive_technologies");
|
||||||
@ -436,85 +444,125 @@ public abstract class Toolkit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads additional classes into the VM, using the property
|
* Rethrow the AWTError but include the cause.
|
||||||
* 'assistive_technologies' specified in the Sun reference
|
|
||||||
* implementation by a line in the 'accessibility.properties'
|
|
||||||
* file. The form is "assistive_technologies=..." where
|
|
||||||
* the "..." is a comma-separated list of assistive technology
|
|
||||||
* classes to load. Each class is loaded in the order given
|
|
||||||
* and a single instance of each is created using
|
|
||||||
* Class.forName(class).newInstance(). All errors are handled
|
|
||||||
* via an AWTError exception.
|
|
||||||
*
|
*
|
||||||
* <p>The assumption is made that assistive technology classes are supplied
|
* @param s the error message
|
||||||
* as part of INSTALLED (as opposed to: BUNDLED) extensions or specified
|
* @param e the original exception
|
||||||
* on the class path
|
* @throw the new AWTError including the cause (the original exception)
|
||||||
* (and therefore can be loaded using the class loader returned by
|
*/
|
||||||
* a call to <code>ClassLoader.getSystemClassLoader</code>, whose
|
private static void newAWTError(Throwable e, String s) {
|
||||||
* delegation parent is the extension class loader for installed
|
AWTError newAWTError = new AWTError(s);
|
||||||
* extensions).
|
newAWTError.initCause(e);
|
||||||
|
throw newAWTError;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When a service provider for Assistive Technology is not found look for a
|
||||||
|
* supporting class on the class path and instantiate it.
|
||||||
|
*
|
||||||
|
* @param atName the name of the class to be loaded
|
||||||
|
*/
|
||||||
|
private static void fallbackToLoadClassForAT(String atName) {
|
||||||
|
try {
|
||||||
|
Class.forName(atName, false, ClassLoader.getSystemClassLoader()).newInstance();
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
newAWTError(e, "Assistive Technology not found: " + atName);
|
||||||
|
} catch (InstantiationException e) {
|
||||||
|
newAWTError(e, "Could not instantiate Assistive Technology: " + atName);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
newAWTError(e, "Could not access Assistive Technology: " + atName);
|
||||||
|
} catch (Exception e) {
|
||||||
|
newAWTError(e, "Error trying to install Assistive Technology: " + atName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads accessibility support using the property assistive_technologies.
|
||||||
|
* The form is assistive_technologies= followed by a comma-separated list of
|
||||||
|
* assistive technology providers to load. The order in which providers are
|
||||||
|
* loaded is determined by the order in which the ServiceLoader discovers
|
||||||
|
* implementations of the AccessibilityProvider interface, not by the order
|
||||||
|
* of provider names in the property list. When a provider is found its
|
||||||
|
* accessibility implementation will be started by calling the provider's
|
||||||
|
* activate method. All errors are handled via an AWTError exception.
|
||||||
*/
|
*/
|
||||||
private static void loadAssistiveTechnologies() {
|
private static void loadAssistiveTechnologies() {
|
||||||
// Load any assistive technologies
|
// Load any assistive technologies
|
||||||
if (atNames != null) {
|
if (atNames != null) {
|
||||||
ClassLoader cl = ClassLoader.getSystemClassLoader();
|
ClassLoader cl = ClassLoader.getSystemClassLoader();
|
||||||
StringTokenizer parser = new StringTokenizer(atNames," ,");
|
Set<String> names = Arrays.stream(atNames.split(","))
|
||||||
String atName;
|
.map(String::trim)
|
||||||
while (parser.hasMoreTokens()) {
|
.collect(Collectors.toSet());
|
||||||
atName = parser.nextToken();
|
final Map<String, AccessibilityProvider> providers = new HashMap<>();
|
||||||
|
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
|
||||||
try {
|
try {
|
||||||
Class<?> clazz;
|
for (AccessibilityProvider p : ServiceLoader.load(AccessibilityProvider.class, cl)) {
|
||||||
if (cl != null) {
|
String name = p.getName();
|
||||||
clazz = cl.loadClass(atName);
|
if (names.contains(name) && !providers.containsKey(name)) {
|
||||||
} else {
|
p.activate();
|
||||||
clazz = Class.forName(atName);
|
providers.put(name, p);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
clazz.newInstance();
|
} catch (java.util.ServiceConfigurationError | Exception e) {
|
||||||
} catch (ClassNotFoundException e) {
|
newAWTError(e, "Could not load or activate service provider");
|
||||||
throw new AWTError("Assistive Technology not found: "
|
|
||||||
+ atName);
|
|
||||||
} catch (InstantiationException e) {
|
|
||||||
throw new AWTError("Could not instantiate Assistive"
|
|
||||||
+ " Technology: " + atName);
|
|
||||||
} catch (IllegalAccessException e) {
|
|
||||||
throw new AWTError("Could not access Assistive"
|
|
||||||
+ " Technology: " + atName);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new AWTError("Error trying to install Assistive"
|
|
||||||
+ " Technology: " + atName + " " + e);
|
|
||||||
}
|
}
|
||||||
}
|
return null;
|
||||||
|
});
|
||||||
|
names.stream()
|
||||||
|
.filter(n -> !providers.containsKey(n))
|
||||||
|
.forEach(Toolkit::fallbackToLoadClassForAT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the default toolkit.
|
* Gets the default toolkit.
|
||||||
* <p>
|
* <p>
|
||||||
* If a system property named <code>"java.awt.headless"</code> is set
|
* If a system property named {@code "java.awt.headless"} is set
|
||||||
* to <code>true</code> then the headless implementation
|
* to {@code true} then the headless implementation
|
||||||
* of <code>Toolkit</code> is used.
|
* of {@code Toolkit} is used.
|
||||||
* <p>
|
* <p>
|
||||||
* If there is no <code>"java.awt.headless"</code> or it is set to
|
* If there is no {@code "java.awt.headless"} or it is set to
|
||||||
* <code>false</code> and there is a system property named
|
* {@code false} and there is a system property named
|
||||||
* <code>"awt.toolkit"</code>,
|
* {@code "awt.toolkit"},
|
||||||
* that property is treated as the name of a class that is a subclass
|
* that property is treated as the name of a class that is a subclass
|
||||||
* of <code>Toolkit</code>;
|
* of {@code Toolkit};
|
||||||
* otherwise the default platform-specific implementation of
|
* otherwise the default platform-specific implementation of
|
||||||
* <code>Toolkit</code> is used.
|
* {@code Toolkit} is used.
|
||||||
* <p>
|
* <p>
|
||||||
* Also loads additional classes into the VM, using the property
|
* If this Toolkit is not a headless implementation and if they exist, service
|
||||||
* 'assistive_technologies' specified in the Sun reference
|
* providers of {@link javax.accessibility.AccessibilityProvider} will be loaded
|
||||||
* implementation by a line in the 'accessibility.properties'
|
* if specified by the system property
|
||||||
* file. The form is "assistive_technologies=..." where
|
* {@code javax.accessibility.assistive_technologies}.
|
||||||
* the "..." is a comma-separated list of assistive technology
|
* <p>
|
||||||
* classes to load. Each class is loaded in the order given
|
* An example of setting this property is to invoke Java with
|
||||||
* and a single instance of each is created using
|
* {@code -Djavax.accessibility.assistive_technologies=MyServiceProvider}.
|
||||||
* Class.forName(class).newInstance(). This is done just after
|
* In addition to MyServiceProvider other service providers can be specified
|
||||||
* the AWT toolkit is created. All errors are handled via an
|
* using a comma separated list. Service providers are loaded after the AWT
|
||||||
* AWTError exception.
|
* toolkit is created. All errors are handled via an AWTError exception.
|
||||||
* @return the default toolkit.
|
* <p>
|
||||||
|
* The names specified in the assistive_technologies property are used to query
|
||||||
|
* each service provider implementation. If the requested name matches the
|
||||||
|
* {@linkplain AccessibilityProvider#getName name} of the service provider, the
|
||||||
|
* {@link AccessibilityProvider#activate} method will be invoked to activate the
|
||||||
|
* matching service provider.
|
||||||
|
*
|
||||||
|
* @implSpec
|
||||||
|
* If assistive technology service providers are not specified with a system
|
||||||
|
* property this implementation will look in a properties file located as follows:
|
||||||
|
* <ul>
|
||||||
|
* <li> {@code ${user.home}/.accessibility.properties}
|
||||||
|
* <li> {@code ${java.home}/conf/accessibility.properties}
|
||||||
|
* </ul>
|
||||||
|
* Only the first of these files to be located will be consulted. The requested
|
||||||
|
* service providers are specified by setting the {@code assistive_technologies=}
|
||||||
|
* property. A single provider or a comma separated list of providers can be
|
||||||
|
* specified.
|
||||||
|
*
|
||||||
|
* @return the default toolkit.
|
||||||
* @exception AWTError if a toolkit could not be found, or
|
* @exception AWTError if a toolkit could not be found, or
|
||||||
* if one could not be accessed or instantiated.
|
* if one could not be accessed or instantiated.
|
||||||
|
* @see java.util.ServiceLoader
|
||||||
|
* @see javax.accessibility.AccessibilityProvider
|
||||||
*/
|
*/
|
||||||
public static synchronized Toolkit getDefaultToolkit() {
|
public static synchronized Toolkit getDefaultToolkit() {
|
||||||
if (toolkit == null) {
|
if (toolkit == null) {
|
||||||
@ -550,7 +598,9 @@ public abstract class Toolkit {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
loadAssistiveTechnologies();
|
if (!GraphicsEnvironment.isHeadless()) {
|
||||||
|
loadAssistiveTechnologies();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return toolkit;
|
return toolkit;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, 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.
|
||||||
|
*/
|
||||||
|
package javax.accessibility;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service Provider Interface (SPI) for Assistive Technology.
|
||||||
|
* <p>
|
||||||
|
* This service provider class provides mappings from the platform
|
||||||
|
* specific accessibility APIs to the Java Accessibility API.
|
||||||
|
* <p>
|
||||||
|
* Each service provider implementation is named and can be activated via the
|
||||||
|
* {@link #activate} method. Service providers can be loaded when the default
|
||||||
|
* {@link java.awt.Toolkit toolkit} is initialized.
|
||||||
|
*
|
||||||
|
* @apiNote There will typically be one provider per platform, such as Windows
|
||||||
|
* or Linux, to support accessibility for screen readers and magnifiers. However,
|
||||||
|
* more than one service provider can be activated. For example, a test tool
|
||||||
|
* which provides visual results obtained by interrogating the Java Accessibility
|
||||||
|
* API can be activated along with the activation of the support for screen readers
|
||||||
|
* and screen magnifiers.
|
||||||
|
*
|
||||||
|
* @see java.awt.Toolkit#getDefaultToolkit
|
||||||
|
* @see java.util.ServiceLoader
|
||||||
|
* @since 1.9
|
||||||
|
*/
|
||||||
|
public abstract class AccessibilityProvider {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes a new accessibility provider.
|
||||||
|
*
|
||||||
|
* @throws SecurityException
|
||||||
|
* If a security manager has been installed and it denies
|
||||||
|
* {@link RuntimePermission} {@code "accessibilityProvider"}
|
||||||
|
*/
|
||||||
|
protected AccessibilityProvider() {
|
||||||
|
// Use a permission check when calling a private constructor to check that
|
||||||
|
// the proper security permission has been granted before the Object superclass
|
||||||
|
// is called. If an exception is thrown before the Object superclass is
|
||||||
|
// constructed a finalizer in a subclass of this class will not be run.
|
||||||
|
// This protects against a finalizer vulnerability.
|
||||||
|
this(checkPermission());
|
||||||
|
}
|
||||||
|
|
||||||
|
private AccessibilityProvider(Void ignore) { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If this code is running with a security manager and if the permission
|
||||||
|
* "accessibilityProvider" has not been granted SecurityException will be thrown.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static Void checkPermission() {
|
||||||
|
SecurityManager sm = System.getSecurityManager();
|
||||||
|
if (sm != null)
|
||||||
|
sm.checkPermission(new RuntimePermission("accessibilityProvider"));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the name of this service provider. This name is used to locate a
|
||||||
|
* requested service provider.
|
||||||
|
*
|
||||||
|
* @return the name of this service provider
|
||||||
|
*/
|
||||||
|
public abstract String getName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Activates the support provided by this service provider.
|
||||||
|
*/
|
||||||
|
public abstract void activate();
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -896,11 +896,12 @@ public class MetalTabbedPaneUI extends BasicTabbedPaneUI {
|
|||||||
|
|
||||||
// Paint the background for the tab area
|
// Paint the background for the tab area
|
||||||
if ( tabPane.isOpaque() ) {
|
if ( tabPane.isOpaque() ) {
|
||||||
if (!c.isBackgroundSet() && (tabAreaBackground != null)) {
|
Color background = c.getBackground();
|
||||||
|
if (background instanceof UIResource && tabAreaBackground != null) {
|
||||||
g.setColor(tabAreaBackground);
|
g.setColor(tabAreaBackground);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
g.setColor( c.getBackground() );
|
g.setColor(background);
|
||||||
}
|
}
|
||||||
switch ( tabPlacement ) {
|
switch ( tabPlacement ) {
|
||||||
case LEFT:
|
case LEFT:
|
||||||
|
@ -291,7 +291,7 @@ public abstract class SunToolkit extends Toolkit
|
|||||||
// Maps from non-Component/MenuComponent to AppContext.
|
// Maps from non-Component/MenuComponent to AppContext.
|
||||||
// WeakHashMap<Component,AppContext>
|
// WeakHashMap<Component,AppContext>
|
||||||
private static final Map<Object, AppContext> appContextMap =
|
private static final Map<Object, AppContext> appContextMap =
|
||||||
Collections.synchronizedMap(new WeakHashMap<Object, AppContext>());
|
Collections.synchronizedMap(new WeakIdentityHashMap<Object, AppContext>());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the appContext field of target. If target is not a Component or
|
* Sets the appContext field of target. If target is not a Component or
|
||||||
|
@ -0,0 +1,195 @@
|
|||||||
|
package sun.awt;
|
||||||
|
|
||||||
|
import java.lang.ref.Reference;
|
||||||
|
import java.lang.ref.ReferenceQueue;
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
// A weak key reference hash map that uses System.identityHashCode() and "=="
|
||||||
|
// instead of hashCode() and equals(Object)
|
||||||
|
class WeakIdentityHashMap<K, V> implements Map<K, V> {
|
||||||
|
private final Map<WeakKey<K>, V> map;
|
||||||
|
private final transient ReferenceQueue<K> queue = new ReferenceQueue<K>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new, empty identity hash map with a default initial
|
||||||
|
* size (16).
|
||||||
|
*/
|
||||||
|
public WeakIdentityHashMap() {
|
||||||
|
map = new HashMap<>(16);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new, empty identity map with the specified initial size.
|
||||||
|
*/
|
||||||
|
public WeakIdentityHashMap(int initialSize) {
|
||||||
|
map = new HashMap<>(initialSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<WeakKey<K>, V> getMap() {
|
||||||
|
for(Reference<? extends K> ref; (ref = this.queue.poll()) != null;) {
|
||||||
|
map.remove(ref);
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
return getMap().size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return getMap().isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean containsKey(Object key) {
|
||||||
|
return getMap().containsKey(new WeakKey<>(key, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean containsValue(Object value) {
|
||||||
|
return getMap().containsValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public V get(Object key) {
|
||||||
|
return getMap().get(new WeakKey<>(key, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public V put(K key, V value) {
|
||||||
|
return getMap().put(new WeakKey<K>(key, queue), value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public V remove(Object key) {
|
||||||
|
return getMap().remove(new WeakKey<>(key, null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void putAll(Map<? extends K, ? extends V> m) {
|
||||||
|
for (Entry<? extends K, ? extends V> entry : m.entrySet()) {
|
||||||
|
put(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
getMap().clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<K> keySet() {
|
||||||
|
return new AbstractSet<K>() {
|
||||||
|
@Override
|
||||||
|
public Iterator<K> iterator() {
|
||||||
|
return new Iterator<K>() {
|
||||||
|
private K next;
|
||||||
|
Iterator<WeakKey<K>> iterator = getMap().keySet().iterator();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
if ((next = iterator.next().get()) != null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public K next() {
|
||||||
|
if(next == null && !hasNext()) {
|
||||||
|
throw new NoSuchElementException();
|
||||||
|
}
|
||||||
|
K ret = next;
|
||||||
|
next = null;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
return getMap().keySet().size();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<V> values() {
|
||||||
|
return getMap().values();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Entry<K, V>> entrySet() {
|
||||||
|
return new AbstractSet<Entry<K, V>>() {
|
||||||
|
@Override
|
||||||
|
public Iterator<Entry<K, V>> iterator() {
|
||||||
|
final Iterator<Entry<WeakKey<K>, V>> iterator = getMap().entrySet().iterator();
|
||||||
|
return new Iterator<Entry<K, V>>() {
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
return iterator.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Entry<K, V> next() {
|
||||||
|
return new Entry<K, V>() {
|
||||||
|
Entry<WeakKey<K>, V> entry = iterator.next();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public K getKey() {
|
||||||
|
return entry.getKey().get();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public V getValue() {
|
||||||
|
return entry.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public V setValue(V value) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
return getMap().entrySet().size();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class WeakKey<K> extends WeakReference<K> {
|
||||||
|
private final int hash;
|
||||||
|
|
||||||
|
WeakKey(K key, ReferenceQueue <K> q) {
|
||||||
|
super(key, q);
|
||||||
|
hash = System.identityHashCode(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if(this == o) {
|
||||||
|
return true;
|
||||||
|
} else if( o instanceof WeakKey ) {
|
||||||
|
return get() == ((WeakKey)o).get();
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -175,7 +175,7 @@ LookupProcessor::LookupProcessor(const LETableReference &baseAddress,
|
|||||||
LEReferenceTo<LangSysTable> langSysTable;
|
LEReferenceTo<LangSysTable> langSysTable;
|
||||||
le_uint16 featureCount = 0;
|
le_uint16 featureCount = 0;
|
||||||
le_uint16 lookupListCount = 0;
|
le_uint16 lookupListCount = 0;
|
||||||
le_uint16 requiredFeatureIndex;
|
le_uint16 requiredFeatureIndex = 0xFFFF;
|
||||||
|
|
||||||
if (LE_FAILURE(success)) {
|
if (LE_FAILURE(success)) {
|
||||||
return;
|
return;
|
||||||
|
@ -260,7 +260,9 @@ cmsBool _MultiplyMatrix(cmsPipeline* Lut)
|
|||||||
cmsStage* Multmat = cmsStageAllocMatrix(Lut->ContextID, 3, 3, (const cmsFloat64Number*) &res, NULL);
|
cmsStage* Multmat = cmsStageAllocMatrix(Lut->ContextID, 3, 3, (const cmsFloat64Number*) &res, NULL);
|
||||||
|
|
||||||
// Recover the chain
|
// Recover the chain
|
||||||
Multmat->Next = chain;
|
if (Multmat != NULL) {
|
||||||
|
Multmat->Next = chain;
|
||||||
|
}
|
||||||
*pt1 = Multmat;
|
*pt1 = Multmat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2466,7 +2466,7 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
|
|||||||
|
|
||||||
private static XEventDispatcher oops_waiter;
|
private static XEventDispatcher oops_waiter;
|
||||||
private static boolean oops_updated;
|
private static boolean oops_updated;
|
||||||
private static boolean oops_move;
|
private static int oops_position = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
@ -2495,9 +2495,12 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
|
|||||||
oops_updated = false;
|
oops_updated = false;
|
||||||
long event_number = getEventNumber();
|
long event_number = getEventNumber();
|
||||||
// Generate OOPS ConfigureNotify event
|
// Generate OOPS ConfigureNotify event
|
||||||
XlibWrapper.XMoveWindow(getDisplay(), win.getWindow(), oops_move ? 0 : 1, 0);
|
XlibWrapper.XMoveWindow(getDisplay(), win.getWindow(), ++oops_position, 0);
|
||||||
// Change win position each time to avoid system optimization
|
// Change win position each time to avoid system optimization
|
||||||
oops_move = !oops_move;
|
if (oops_position > 50) {
|
||||||
|
oops_position = 0;
|
||||||
|
}
|
||||||
|
|
||||||
XSync();
|
XSync();
|
||||||
|
|
||||||
eventLog.finer("Generated OOPS ConfigureNotify event");
|
eventLog.finer("Generated OOPS ConfigureNotify event");
|
||||||
|
@ -29,6 +29,7 @@ import java.awt.Image;
|
|||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
@ -233,6 +234,7 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
private Image smallIcon = null;
|
private Image smallIcon = null;
|
||||||
private Image largeIcon = null;
|
private Image largeIcon = null;
|
||||||
private Boolean isDir = null;
|
private Boolean isDir = null;
|
||||||
|
private final boolean isLib;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following is to identify the My Documents folder as being special
|
* The following is to identify the My Documents folder as being special
|
||||||
@ -254,6 +256,7 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
// Desktop is parent of DRIVES and NETWORK, not necessarily
|
// Desktop is parent of DRIVES and NETWORK, not necessarily
|
||||||
// other special shell folders.
|
// other special shell folders.
|
||||||
super(null, composePathForCsidl(csidl));
|
super(null, composePathForCsidl(csidl));
|
||||||
|
isLib = false;
|
||||||
|
|
||||||
invoke(new Callable<Void>() {
|
invoke(new Callable<Void>() {
|
||||||
public Void call() throws InterruptedException {
|
public Void call() throws InterruptedException {
|
||||||
@ -279,7 +282,7 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
// Now we know that parent isn't immediate to 'this' because it
|
// Now we know that parent isn't immediate to 'this' because it
|
||||||
// has a continued ID list. Create a shell folder for this child
|
// has a continued ID list. Create a shell folder for this child
|
||||||
// pidl and make it the new 'parent'.
|
// pidl and make it the new 'parent'.
|
||||||
parent = new Win32ShellFolder2((Win32ShellFolder2) parent, childPIDL);
|
parent = createShellFolder((Win32ShellFolder2) parent, childPIDL);
|
||||||
} else {
|
} else {
|
||||||
// No grandchildren means we have arrived at the parent of 'this',
|
// No grandchildren means we have arrived at the parent of 'this',
|
||||||
// and childPIDL is directly relative to parent.
|
// and childPIDL is directly relative to parent.
|
||||||
@ -301,8 +304,9 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
/**
|
/**
|
||||||
* Create a system shell folder
|
* Create a system shell folder
|
||||||
*/
|
*/
|
||||||
Win32ShellFolder2(Win32ShellFolder2 parent, long pIShellFolder, long relativePIDL, String path) {
|
Win32ShellFolder2(Win32ShellFolder2 parent, long pIShellFolder, long relativePIDL, String path, boolean isLib) {
|
||||||
super(parent, (path != null) ? path : "ShellFolder: ");
|
super(parent, (path != null) ? path : "ShellFolder: ");
|
||||||
|
this.isLib = isLib;
|
||||||
this.disposer.pIShellFolder = pIShellFolder;
|
this.disposer.pIShellFolder = pIShellFolder;
|
||||||
this.disposer.relativePIDL = relativePIDL;
|
this.disposer.relativePIDL = relativePIDL;
|
||||||
sun.java2d.Disposer.addRecord(this, disposer);
|
sun.java2d.Disposer.addRecord(this, disposer);
|
||||||
@ -312,16 +316,19 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
/**
|
/**
|
||||||
* Creates a shell folder with a parent and relative PIDL
|
* Creates a shell folder with a parent and relative PIDL
|
||||||
*/
|
*/
|
||||||
Win32ShellFolder2(final Win32ShellFolder2 parent, final long relativePIDL) throws InterruptedException {
|
static Win32ShellFolder2 createShellFolder(Win32ShellFolder2 parent, long pIDL)
|
||||||
super(parent,
|
throws InterruptedException {
|
||||||
invoke(new Callable<String>() {
|
String path = invoke(new Callable<String>() {
|
||||||
public String call() {
|
public String call() {
|
||||||
return getFileSystemPath(parent.getIShellFolder(), relativePIDL);
|
return getFileSystemPath(parent.getIShellFolder(), pIDL);
|
||||||
}
|
}
|
||||||
}, RuntimeException.class)
|
}, RuntimeException.class);
|
||||||
);
|
String libPath = resolveLibrary(path);
|
||||||
this.disposer.relativePIDL = relativePIDL;
|
if (libPath == null) {
|
||||||
sun.java2d.Disposer.addRecord(this, disposer);
|
return new Win32ShellFolder2(parent, 0, pIDL, path, false);
|
||||||
|
} else {
|
||||||
|
return new Win32ShellFolder2(parent, 0, pIDL, libPath, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initializes the desktop shell folder
|
// Initializes the desktop shell folder
|
||||||
@ -601,20 +608,24 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
}
|
}
|
||||||
String path = getDisplayNameOf(parentIShellFolder, relativePIDL,
|
String path = getDisplayNameOf(parentIShellFolder, relativePIDL,
|
||||||
SHGDN_FORPARSING);
|
SHGDN_FORPARSING);
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String resolveLibrary(String path) {
|
||||||
// if this is a library its default save location is taken as a path
|
// if this is a library its default save location is taken as a path
|
||||||
// this is a temp fix until java.io starts support Libraries
|
// this is a temp fix until java.io starts support Libraries
|
||||||
if( path != null && path.startsWith("::{") &&
|
if( path != null && path.startsWith("::{") &&
|
||||||
path.toLowerCase().endsWith(".library-ms")) {
|
path.toLowerCase().endsWith(".library-ms")) {
|
||||||
for (KnownFolderDefinition kf : KnownFolderDefinition.libraries) {
|
for (KnownFolderDefinition kf : KnownFolderDefinition.libraries) {
|
||||||
if( path.toLowerCase().endsWith(
|
if (path.toLowerCase().endsWith(
|
||||||
kf.relativePath.toLowerCase()) &&
|
"\\" + kf.relativePath.toLowerCase()) &&
|
||||||
path.toUpperCase().startsWith(
|
path.toUpperCase().startsWith(
|
||||||
kf.parsingName.substring(0, 40).toUpperCase()) ) {
|
kf.parsingName.substring(0, 40).toUpperCase())) {
|
||||||
return kf.saveLocation;
|
return kf.saveLocation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return path;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Needs to be accessible to Win32ShellFolderManager2
|
// Needs to be accessible to Win32ShellFolderManager2
|
||||||
@ -750,7 +761,7 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
&& pidlsEqual(pIShellFolder, childPIDL, personal.disposer.relativePIDL)) {
|
&& pidlsEqual(pIShellFolder, childPIDL, personal.disposer.relativePIDL)) {
|
||||||
childFolder = personal;
|
childFolder = personal;
|
||||||
} else {
|
} else {
|
||||||
childFolder = new Win32ShellFolder2(Win32ShellFolder2.this, childPIDL);
|
childFolder = createShellFolder(Win32ShellFolder2.this, childPIDL);
|
||||||
releasePIDL = false;
|
releasePIDL = false;
|
||||||
}
|
}
|
||||||
list.add(childFolder);
|
list.add(childFolder);
|
||||||
@ -790,10 +801,11 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
while ((childPIDL = getNextChild(pEnumObjects)) != 0) {
|
while ((childPIDL = getNextChild(pEnumObjects)) != 0) {
|
||||||
if (getAttributes0(pIShellFolder, childPIDL, ATTRIB_FILESYSTEM) != 0) {
|
if (getAttributes0(pIShellFolder, childPIDL, ATTRIB_FILESYSTEM) != 0) {
|
||||||
String path = getFileSystemPath(pIShellFolder, childPIDL);
|
String path = getFileSystemPath(pIShellFolder, childPIDL);
|
||||||
|
if(isLib) path = resolveLibrary( path );
|
||||||
if (path != null && path.equalsIgnoreCase(filePath)) {
|
if (path != null && path.equalsIgnoreCase(filePath)) {
|
||||||
long childIShellFolder = bindToObject(pIShellFolder, childPIDL);
|
long childIShellFolder = bindToObject(pIShellFolder, childPIDL);
|
||||||
child = new Win32ShellFolder2(Win32ShellFolder2.this,
|
child = new Win32ShellFolder2(Win32ShellFolder2.this,
|
||||||
childIShellFolder, childPIDL, path);
|
childIShellFolder, childPIDL, path, isLib);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -839,14 +851,14 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
return getLinkLocation(true);
|
return getLinkLocation(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ShellFolder getLinkLocation(final boolean resolve) {
|
private Win32ShellFolder2 getLinkLocation(final boolean resolve) {
|
||||||
return invoke(new Callable<ShellFolder>() {
|
return invoke(new Callable<Win32ShellFolder2>() {
|
||||||
public ShellFolder call() {
|
public Win32ShellFolder2 call() {
|
||||||
if (!isLink()) {
|
if (!isLink()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShellFolder location = null;
|
Win32ShellFolder2 location = null;
|
||||||
long linkLocationPIDL = getLinkLocation(getParentIShellFolder(),
|
long linkLocationPIDL = getLinkLocation(getParentIShellFolder(),
|
||||||
getRelativePIDL(), resolve);
|
getRelativePIDL(), resolve);
|
||||||
if (linkLocationPIDL != 0) {
|
if (linkLocationPIDL != 0) {
|
||||||
@ -956,7 +968,7 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
|
|
||||||
// NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details
|
// NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details
|
||||||
private static native long extractIcon(long parentIShellFolder, long relativePIDL,
|
private static native long extractIcon(long parentIShellFolder, long relativePIDL,
|
||||||
boolean getLargeIcon);
|
boolean getLargeIcon, boolean getDefaultIcon);
|
||||||
|
|
||||||
// Returns an icon from the Windows system icon list in the form of an HICON
|
// Returns an icon from the Windows system icon list in the form of an HICON
|
||||||
private static native long getSystemIcon(int iconID);
|
private static native long getSystemIcon(int iconID);
|
||||||
@ -1007,7 +1019,13 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
invoke(new Callable<Image>() {
|
invoke(new Callable<Image>() {
|
||||||
public Image call() {
|
public Image call() {
|
||||||
Image newIcon = null;
|
Image newIcon = null;
|
||||||
if (isFileSystem()) {
|
if (isLink()) {
|
||||||
|
Win32ShellFolder2 folder = getLinkLocation(false);
|
||||||
|
if (folder != null && folder.isLibrary()) {
|
||||||
|
return folder.getIcon(getLargeIcon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isFileSystem() || isLibrary()) {
|
||||||
long parentIShellIcon = (parent != null)
|
long parentIShellIcon = (parent != null)
|
||||||
? ((Win32ShellFolder2) parent).getIShellIcon()
|
? ((Win32ShellFolder2) parent).getIShellIcon()
|
||||||
: 0L;
|
: 0L;
|
||||||
@ -1037,7 +1055,19 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
if (newIcon == null) {
|
if (newIcon == null) {
|
||||||
// These are only cached per object
|
// These are only cached per object
|
||||||
long hIcon = extractIcon(getParentIShellFolder(),
|
long hIcon = extractIcon(getParentIShellFolder(),
|
||||||
getRelativePIDL(), getLargeIcon);
|
getRelativePIDL(), getLargeIcon, false);
|
||||||
|
// E_PENDING: loading can take time so get the default
|
||||||
|
if(hIcon <= 0) {
|
||||||
|
hIcon = extractIcon(getParentIShellFolder(),
|
||||||
|
getRelativePIDL(), getLargeIcon, true);
|
||||||
|
if(hIcon <= 0) {
|
||||||
|
if (isDirectory()) {
|
||||||
|
return getShell32Icon(4, getLargeIcon);
|
||||||
|
} else {
|
||||||
|
return getShell32Icon(1, getLargeIcon);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
newIcon = makeIcon(hIcon, getLargeIcon);
|
newIcon = makeIcon(hIcon, getLargeIcon);
|
||||||
disposeIcon(hIcon);
|
disposeIcon(hIcon);
|
||||||
}
|
}
|
||||||
@ -1129,6 +1159,8 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
private static final int LVCFMT_CENTER = 2;
|
private static final int LVCFMT_CENTER = 2;
|
||||||
|
|
||||||
public ShellFolderColumnInfo[] getFolderColumns() {
|
public ShellFolderColumnInfo[] getFolderColumns() {
|
||||||
|
ShellFolder library = resolveLibrary();
|
||||||
|
if (library != null) return library.getFolderColumns();
|
||||||
return invoke(new Callable<ShellFolderColumnInfo[]>() {
|
return invoke(new Callable<ShellFolderColumnInfo[]>() {
|
||||||
public ShellFolderColumnInfo[] call() {
|
public ShellFolderColumnInfo[] call() {
|
||||||
ShellFolderColumnInfo[] columns = doGetColumnInfo(getIShellFolder());
|
ShellFolderColumnInfo[] columns = doGetColumnInfo(getIShellFolder());
|
||||||
@ -1159,6 +1191,10 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Object getFolderColumnValue(final int column) {
|
public Object getFolderColumnValue(final int column) {
|
||||||
|
if(!isLibrary()) {
|
||||||
|
ShellFolder library = resolveLibrary();
|
||||||
|
if (library != null) return library.getFolderColumnValue(column);
|
||||||
|
}
|
||||||
return invoke(new Callable<Object>() {
|
return invoke(new Callable<Object>() {
|
||||||
public Object call() {
|
public Object call() {
|
||||||
return doGetColumnValue(getParentIShellFolder(), getRelativePIDL(), column);
|
return doGetColumnValue(getParentIShellFolder(), getRelativePIDL(), column);
|
||||||
@ -1166,6 +1202,26 @@ final class Win32ShellFolder2 extends ShellFolder {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isLibrary() {
|
||||||
|
return isLib;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ShellFolder resolveLibrary() {
|
||||||
|
for (ShellFolder f = this; f != null; f = f.parent) {
|
||||||
|
if (!f.isFileSystem()) {
|
||||||
|
if (f instanceof Win32ShellFolder2 &&
|
||||||
|
((Win32ShellFolder2)f).isLibrary()) {
|
||||||
|
try {
|
||||||
|
return getShellFolder(new File(getPath()));
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details
|
// NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details
|
||||||
private native ShellFolderColumnInfo[] doGetColumnInfo(long iShellFolder2);
|
private native ShellFolderColumnInfo[] doGetColumnInfo(long iShellFolder2);
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -94,7 +94,7 @@ final class Win32ShellFolderManager2 extends ShellFolderManager {
|
|||||||
while (pIDL != 0) {
|
while (pIDL != 0) {
|
||||||
long curPIDL = Win32ShellFolder2.copyFirstPIDLEntry(pIDL);
|
long curPIDL = Win32ShellFolder2.copyFirstPIDLEntry(pIDL);
|
||||||
if (curPIDL != 0) {
|
if (curPIDL != 0) {
|
||||||
parent = new Win32ShellFolder2(parent, curPIDL);
|
parent = Win32ShellFolder2.createShellFolder(parent, curPIDL);
|
||||||
pIDL = Win32ShellFolder2.getNextPIDLEntry(pIDL);
|
pIDL = Win32ShellFolder2.getNextPIDLEntry(pIDL);
|
||||||
} else {
|
} else {
|
||||||
// The list is empty if the parent is Desktop and pIDL is a shortcut to Desktop
|
// The list is empty if the parent is Desktop and pIDL is a shortcut to Desktop
|
||||||
|
@ -868,10 +868,11 @@ JNIEXPORT jint JNICALL Java_sun_awt_shell_Win32ShellFolder2_getIconIndex
|
|||||||
/*
|
/*
|
||||||
* Class: sun_awt_shell_Win32ShellFolder2
|
* Class: sun_awt_shell_Win32ShellFolder2
|
||||||
* Method: extractIcon
|
* Method: extractIcon
|
||||||
* Signature: (JJZ)J
|
* Signature: (JJZZ)J
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
|
JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
|
||||||
(JNIEnv* env, jclass cls, jlong pIShellFolderL, jlong relativePIDL, jboolean getLargeIcon)
|
(JNIEnv* env, jclass cls, jlong pIShellFolderL, jlong relativePIDL,
|
||||||
|
jboolean getLargeIcon, jboolean getDefaultIcon)
|
||||||
{
|
{
|
||||||
IShellFolder* pIShellFolder = (IShellFolder*)pIShellFolderL;
|
IShellFolder* pIShellFolder = (IShellFolder*)pIShellFolderL;
|
||||||
LPITEMIDLIST pidl = (LPITEMIDLIST)relativePIDL;
|
LPITEMIDLIST pidl = (LPITEMIDLIST)relativePIDL;
|
||||||
@ -889,7 +890,8 @@ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
|
|||||||
WCHAR szBuf[MAX_PATH];
|
WCHAR szBuf[MAX_PATH];
|
||||||
INT index;
|
INT index;
|
||||||
UINT flags;
|
UINT flags;
|
||||||
hres = pIcon->GetIconLocation(GIL_FORSHELL, szBuf, MAX_PATH, &index, &flags);
|
UINT uFlags = getDefaultIcon ? GIL_DEFAULTICON : GIL_FORSHELL | GIL_ASYNC;
|
||||||
|
hres = pIcon->GetIconLocation(uFlags, szBuf, MAX_PATH, &index, &flags);
|
||||||
if (SUCCEEDED(hres)) {
|
if (SUCCEEDED(hres)) {
|
||||||
HICON hIconLarge;
|
HICON hIconLarge;
|
||||||
hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32);
|
hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32);
|
||||||
@ -901,6 +903,9 @@ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
|
|||||||
fn_DestroyIcon((HICON)hIconLarge);
|
fn_DestroyIcon((HICON)hIconLarge);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (hres == E_PENDING) {
|
||||||
|
pIcon->Release();
|
||||||
|
return E_PENDING;
|
||||||
}
|
}
|
||||||
pIcon->Release();
|
pIcon->Release();
|
||||||
}
|
}
|
||||||
@ -1284,7 +1289,6 @@ JNIEXPORT jint JNICALL
|
|||||||
JNIEXPORT jobjectArray JNICALL Java_sun_awt_shell_Win32ShellFolder2_loadKnownFolders
|
JNIEXPORT jobjectArray JNICALL Java_sun_awt_shell_Win32ShellFolder2_loadKnownFolders
|
||||||
(JNIEnv* env, jclass cls )
|
(JNIEnv* env, jclass cls )
|
||||||
{
|
{
|
||||||
CoInitialize(NULL);
|
|
||||||
IKnownFolderManager* pkfm = NULL;
|
IKnownFolderManager* pkfm = NULL;
|
||||||
HRESULT hr = CoCreateInstance(CLSID_KnownFolderManager, NULL,
|
HRESULT hr = CoCreateInstance(CLSID_KnownFolderManager, NULL,
|
||||||
CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pkfm));
|
CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pkfm));
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
|
// Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
//
|
//
|
||||||
// This code is free software; you can redistribute it and/or modify it
|
// This code is free software; you can redistribute it and/or modify it
|
||||||
@ -31,7 +31,6 @@
|
|||||||
|
|
||||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
HAND_CURSOR CURSOR DISCARDABLE "hand.cur"
|
|
||||||
AWT_ICON ICON DISCARDABLE "awt.ico"
|
AWT_ICON ICON DISCARDABLE "awt.ico"
|
||||||
CHECK_BITMAP BITMAP DISCARDABLE "check.bmp"
|
CHECK_BITMAP BITMAP DISCARDABLE "check.bmp"
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -144,7 +144,7 @@ AwtCursor * AwtCursor::CreateSystemCursor(jobject jCursor)
|
|||||||
winCursor = IDC_SIZEWE;
|
winCursor = IDC_SIZEWE;
|
||||||
break;
|
break;
|
||||||
case java_awt_Cursor_HAND_CURSOR:
|
case java_awt_Cursor_HAND_CURSOR:
|
||||||
winCursor = TEXT("HAND_CURSOR");
|
winCursor = IDC_HAND;
|
||||||
break;
|
break;
|
||||||
case java_awt_Cursor_MOVE_CURSOR:
|
case java_awt_Cursor_MOVE_CURSOR:
|
||||||
winCursor = IDC_SIZEALL;
|
winCursor = IDC_SIZEALL;
|
||||||
|
Binary file not shown.
Before (image error) Size: 326 B |
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -157,7 +157,7 @@ public class Oid {
|
|||||||
return (true);
|
return (true);
|
||||||
|
|
||||||
if (other instanceof Oid)
|
if (other instanceof Oid)
|
||||||
return this.oid.equals((Object)((Oid) other).oid);
|
return this.oid.equals(((Oid) other).oid);
|
||||||
else if (other instanceof ObjectIdentifier)
|
else if (other instanceof ObjectIdentifier)
|
||||||
return this.oid.equals(other);
|
return this.oid.equals(other);
|
||||||
else
|
else
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -252,7 +252,7 @@ public class GSSContextImpl implements GSSContext {
|
|||||||
} else {
|
} else {
|
||||||
// parse GSS header
|
// parse GSS header
|
||||||
gssHeader = new GSSHeader(inStream);
|
gssHeader = new GSSHeader(inStream);
|
||||||
if (!gssHeader.getOid().equals((Object) objId))
|
if (!gssHeader.getOid().equals(objId))
|
||||||
throw new GSSExceptionImpl
|
throw new GSSExceptionImpl
|
||||||
(GSSException.DEFECTIVE_TOKEN,
|
(GSSException.DEFECTIVE_TOKEN,
|
||||||
"Mechanism not equal to " +
|
"Mechanism not equal to " +
|
||||||
@ -346,7 +346,7 @@ public class GSSContextImpl implements GSSContext {
|
|||||||
} else {
|
} else {
|
||||||
// parse GSS Header
|
// parse GSS Header
|
||||||
gssHeader = new GSSHeader(inStream);
|
gssHeader = new GSSHeader(inStream);
|
||||||
if (!gssHeader.getOid().equals((Object) objId))
|
if (!gssHeader.getOid().equals(objId))
|
||||||
throw new GSSExceptionImpl
|
throw new GSSExceptionImpl
|
||||||
(GSSException.DEFECTIVE_TOKEN,
|
(GSSException.DEFECTIVE_TOKEN,
|
||||||
"Mechanism not equal to " +
|
"Mechanism not equal to " +
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -182,7 +182,7 @@ abstract class MessageToken extends Krb5Token {
|
|||||||
try {
|
try {
|
||||||
gssHeader = new GSSHeader(is);
|
gssHeader = new GSSHeader(is);
|
||||||
|
|
||||||
if (!gssHeader.getOid().equals((Object)OID)) {
|
if (!gssHeader.getOid().equals(OID)) {
|
||||||
throw new GSSException(GSSException.DEFECTIVE_TOKEN, -1,
|
throw new GSSException(GSSException.DEFECTIVE_TOKEN, -1,
|
||||||
getTokenName(tokenId));
|
getTokenName(tokenId));
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -25,11 +25,17 @@
|
|||||||
|
|
||||||
package java.sql;
|
package java.sql;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Enumeration;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
import java.util.ServiceLoader;
|
import java.util.ServiceLoader;
|
||||||
import java.security.AccessController;
|
import java.security.AccessController;
|
||||||
import java.security.PrivilegedAction;
|
import java.security.PrivilegedAction;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import sun.reflect.CallerSensitive;
|
import sun.reflect.CallerSensitive;
|
||||||
import sun.reflect.Reflection;
|
import sun.reflect.Reflection;
|
||||||
|
|
||||||
@ -429,29 +435,44 @@ public class DriverManager {
|
|||||||
* <CODE>d.getClass().getName()</CODE>
|
* <CODE>d.getClass().getName()</CODE>
|
||||||
*
|
*
|
||||||
* @return the list of JDBC Drivers loaded by the caller's class loader
|
* @return the list of JDBC Drivers loaded by the caller's class loader
|
||||||
|
* @see #drivers()
|
||||||
*/
|
*/
|
||||||
@CallerSensitive
|
@CallerSensitive
|
||||||
public static java.util.Enumeration<Driver> getDrivers() {
|
public static Enumeration<Driver> getDrivers() {
|
||||||
java.util.Vector<Driver> result = new java.util.Vector<>();
|
|
||||||
|
|
||||||
ensureDriversInitialized();
|
ensureDriversInitialized();
|
||||||
|
|
||||||
Class<?> callerClass = Reflection.getCallerClass();
|
return Collections.enumeration(getDrivers(Reflection.getCallerClass()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a Stream with all of the currently loaded JDBC drivers
|
||||||
|
* to which the current caller has access.
|
||||||
|
*
|
||||||
|
* @return the stream of JDBC Drivers loaded by the caller's class loader
|
||||||
|
* @since 1.9
|
||||||
|
*/
|
||||||
|
@CallerSensitive
|
||||||
|
public static Stream<Driver> drivers() {
|
||||||
|
ensureDriversInitialized();
|
||||||
|
|
||||||
|
return getDrivers(Reflection.getCallerClass()).stream();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Driver> getDrivers(Class<?> callerClass) {
|
||||||
|
List<Driver> result = new ArrayList<>();
|
||||||
// Walk through the loaded registeredDrivers.
|
// Walk through the loaded registeredDrivers.
|
||||||
for (DriverInfo aDriver : registeredDrivers) {
|
for (DriverInfo aDriver : registeredDrivers) {
|
||||||
// If the caller does not have permission to load the driver then
|
// If the caller does not have permission to load the driver then
|
||||||
// skip it.
|
// skip it.
|
||||||
if (isDriverAllowed(aDriver.driver, callerClass)) {
|
if (isDriverAllowed(aDriver.driver, callerClass)) {
|
||||||
result.addElement(aDriver.driver);
|
result.add(aDriver.driver);
|
||||||
} else {
|
} else {
|
||||||
println(" skipping: " + aDriver.getClass().getName());
|
println(" skipping: " + aDriver.getClass().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (result.elements());
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the maximum time in seconds that a driver will wait
|
* Sets the maximum time in seconds that a driver will wait
|
||||||
* while attempting to connect to a database once the driver has
|
* while attempting to connect to a database once the driver has
|
||||||
|
26
jdk/src/jdk.accessibility/windows/classes/META-INF/services/javax.accessibility.AccessibilityProvider
Normal file
26
jdk/src/jdk.accessibility/windows/classes/META-INF/services/javax.accessibility.AccessibilityProvider
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Copyright (c) 2015, 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.
|
||||||
|
|
||||||
|
|
||||||
|
com.sun.java.accessibility.ProviderImpl
|
||||||
|
|
61
jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/ProviderImpl.java
Normal file
61
jdk/src/jdk.accessibility/windows/classes/com/sun/java/accessibility/ProviderImpl.java
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015, 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.
|
||||||
|
*/
|
||||||
|
package com.sun.java.accessibility;
|
||||||
|
|
||||||
|
import javax.accessibility.AccessibilityProvider;
|
||||||
|
|
||||||
|
/* This class provided methods to identify and activate the mapping from the
|
||||||
|
* JavaAccessBridge API to the Java Accessibility API.
|
||||||
|
*/
|
||||||
|
public final class ProviderImpl extends AccessibilityProvider {
|
||||||
|
/**
|
||||||
|
* Typically the service name returned by the name() method would be a simple
|
||||||
|
* name such as JavaAccessBridge, but the following name is used for compatibility
|
||||||
|
* with prior versions of ${user.home}/.accessibility.properties and
|
||||||
|
* ${java.home}/conf/accessibility.properties where the text on the
|
||||||
|
* assistive.technologies= line is a fully qualified class name. As of Java 9
|
||||||
|
* class names are no longer used to identify assistive technology implementations.
|
||||||
|
* If the properties file exists the installer will not replace it thus the
|
||||||
|
* need for compatibility.
|
||||||
|
*/
|
||||||
|
private final String name = "com.sun.java.accessibility.AccessBridge";
|
||||||
|
|
||||||
|
public ProviderImpl() {}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void activate() {
|
||||||
|
/**
|
||||||
|
* Note that the AccessBridge is instantiated here rather than in the
|
||||||
|
* constructor. If the caller determines that this object is named
|
||||||
|
* "com.sun.java.accessibility.AccessBridge" then the caller will call
|
||||||
|
* start to instantiate the AccessBridge which will in turn activate it.
|
||||||
|
*/
|
||||||
|
new AccessBridge();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,6 +0,0 @@
|
|||||||
#
|
|
||||||
# Load the Java Access Bridge class into the JVM
|
|
||||||
#
|
|
||||||
#assistive_technologies=com.sun.java.accessibility.AccessBridge
|
|
||||||
#screen_magnifier_present=true
|
|
||||||
|
|
@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <BaseTsd.h>
|
#include <BaseTsd.h>
|
||||||
#include <wincrypt.h>
|
#include <wincrypt.h>
|
||||||
@ -58,11 +59,16 @@ void ThrowException(JNIEnv *env, char *exceptionName, DWORD dwError)
|
|||||||
char szMessage[1024];
|
char szMessage[1024];
|
||||||
szMessage[0] = '\0';
|
szMessage[0] = '\0';
|
||||||
|
|
||||||
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, NULL, szMessage,
|
DWORD res = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError,
|
||||||
1024, NULL);
|
NULL, szMessage, sizeof(szMessage), NULL);
|
||||||
|
if (res == 0) {
|
||||||
|
strcpy(szMessage, "Unknown error");
|
||||||
|
}
|
||||||
|
|
||||||
jclass exceptionClazz = env->FindClass(exceptionName);
|
jclass exceptionClazz = env->FindClass(exceptionName);
|
||||||
env->ThrowNew(exceptionClazz, szMessage);
|
if (exceptionClazz != NULL) {
|
||||||
|
env->ThrowNew(exceptionClazz, szMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -295,22 +301,42 @@ JNIEXPORT void JNICALL Java_sun_security_mscapi_KeyStore_loadKeysOrCertificateCh
|
|||||||
|
|
||||||
// Determine clazz and method ID to generate certificate
|
// Determine clazz and method ID to generate certificate
|
||||||
jclass clazzArrayList = env->FindClass("java/util/ArrayList");
|
jclass clazzArrayList = env->FindClass("java/util/ArrayList");
|
||||||
|
if (clazzArrayList == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
jmethodID mNewArrayList = env->GetMethodID(clazzArrayList, "<init>", "()V");
|
jmethodID mNewArrayList = env->GetMethodID(clazzArrayList, "<init>", "()V");
|
||||||
|
if (mNewArrayList == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
jmethodID mGenCert = env->GetMethodID(env->GetObjectClass(obj),
|
jclass clazzOfThis = env->GetObjectClass(obj);
|
||||||
|
if (clazzOfThis == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
|
jmethodID mGenCert = env->GetMethodID(clazzOfThis,
|
||||||
"generateCertificate",
|
"generateCertificate",
|
||||||
"([BLjava/util/Collection;)V");
|
"([BLjava/util/Collection;)V");
|
||||||
|
if (mGenCert == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
// Determine method ID to generate certificate chain
|
// Determine method ID to generate certificate chain
|
||||||
jmethodID mGenCertChain = env->GetMethodID(env->GetObjectClass(obj),
|
jmethodID mGenCertChain = env->GetMethodID(clazzOfThis,
|
||||||
"generateCertificateChain",
|
"generateCertificateChain",
|
||||||
"(Ljava/lang/String;Ljava/util/Collection;Ljava/util/Collection;)V");
|
"(Ljava/lang/String;Ljava/util/Collection;Ljava/util/Collection;)V");
|
||||||
|
if (mGenCertChain == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
// Determine method ID to generate RSA certificate chain
|
// Determine method ID to generate RSA certificate chain
|
||||||
jmethodID mGenRSAKeyAndCertChain = env->GetMethodID(env->GetObjectClass(obj),
|
jmethodID mGenRSAKeyAndCertChain = env->GetMethodID(clazzOfThis,
|
||||||
"generateRSAKeyAndCertificateChain",
|
"generateRSAKeyAndCertificateChain",
|
||||||
"(Ljava/lang/String;JJILjava/util/Collection;Ljava/util/Collection;)V");
|
"(Ljava/lang/String;JJILjava/util/Collection;Ljava/util/Collection;)V");
|
||||||
|
if (mGenRSAKeyAndCertChain == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
// Use CertEnumCertificatesInStore to get the certificates
|
// Use CertEnumCertificatesInStore to get the certificates
|
||||||
// from the open store. pCertContext must be reset to
|
// from the open store. pCertContext must be reset to
|
||||||
@ -590,9 +616,6 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_RSASignature_signHash
|
|||||||
}
|
}
|
||||||
__finally
|
__finally
|
||||||
{
|
{
|
||||||
if (hCryptProvAlt)
|
|
||||||
::CryptReleaseContext(hCryptProvAlt, 0);
|
|
||||||
|
|
||||||
if (pSignedHashBuffer)
|
if (pSignedHashBuffer)
|
||||||
delete [] pSignedHashBuffer;
|
delete [] pSignedHashBuffer;
|
||||||
|
|
||||||
@ -601,6 +624,9 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_RSASignature_signHash
|
|||||||
|
|
||||||
if (hHash)
|
if (hHash)
|
||||||
::CryptDestroyHash(hHash);
|
::CryptDestroyHash(hHash);
|
||||||
|
|
||||||
|
if (hCryptProvAlt)
|
||||||
|
::CryptReleaseContext(hCryptProvAlt, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return jSignedHash;
|
return jSignedHash;
|
||||||
@ -688,9 +714,6 @@ JNIEXPORT jboolean JNICALL Java_sun_security_mscapi_RSASignature_verifySignedHas
|
|||||||
|
|
||||||
__finally
|
__finally
|
||||||
{
|
{
|
||||||
if (hCryptProvAlt)
|
|
||||||
::CryptReleaseContext(hCryptProvAlt, 0);
|
|
||||||
|
|
||||||
if (pSignedHashBuffer)
|
if (pSignedHashBuffer)
|
||||||
delete [] pSignedHashBuffer;
|
delete [] pSignedHashBuffer;
|
||||||
|
|
||||||
@ -699,6 +722,9 @@ JNIEXPORT jboolean JNICALL Java_sun_security_mscapi_RSASignature_verifySignedHas
|
|||||||
|
|
||||||
if (hHash)
|
if (hHash)
|
||||||
::CryptDestroyHash(hHash);
|
::CryptDestroyHash(hHash);
|
||||||
|
|
||||||
|
if (hCryptProvAlt)
|
||||||
|
::CryptReleaseContext(hCryptProvAlt, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -763,9 +789,15 @@ JNIEXPORT jobject JNICALL Java_sun_security_mscapi_RSAKeyPairGenerator_generateR
|
|||||||
// Get the method ID for the RSAKeyPair constructor
|
// Get the method ID for the RSAKeyPair constructor
|
||||||
jclass clazzRSAKeyPair =
|
jclass clazzRSAKeyPair =
|
||||||
env->FindClass("sun/security/mscapi/RSAKeyPair");
|
env->FindClass("sun/security/mscapi/RSAKeyPair");
|
||||||
|
if (clazzRSAKeyPair == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
jmethodID mNewRSAKeyPair =
|
jmethodID mNewRSAKeyPair =
|
||||||
env->GetMethodID(clazzRSAKeyPair, "<init>", "(JJI)V");
|
env->GetMethodID(clazzRSAKeyPair, "<init>", "(JJI)V");
|
||||||
|
if (mNewRSAKeyPair == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
// Create a new RSA keypair
|
// Create a new RSA keypair
|
||||||
keypair = env->NewObject(clazzRSAKeyPair, mNewRSAKeyPair,
|
keypair = env->NewObject(clazzRSAKeyPair, mNewRSAKeyPair,
|
||||||
@ -1948,9 +1980,15 @@ JNIEXPORT jobject JNICALL Java_sun_security_mscapi_KeyStore_storePrivateKey
|
|||||||
// Get the method ID for the RSAPrivateKey constructor
|
// Get the method ID for the RSAPrivateKey constructor
|
||||||
jclass clazzRSAPrivateKey =
|
jclass clazzRSAPrivateKey =
|
||||||
env->FindClass("sun/security/mscapi/RSAPrivateKey");
|
env->FindClass("sun/security/mscapi/RSAPrivateKey");
|
||||||
|
if (clazzRSAPrivateKey == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
jmethodID mNewRSAPrivateKey =
|
jmethodID mNewRSAPrivateKey =
|
||||||
env->GetMethodID(clazzRSAPrivateKey, "<init>", "(JJI)V");
|
env->GetMethodID(clazzRSAPrivateKey, "<init>", "(JJI)V");
|
||||||
|
if (mNewRSAPrivateKey == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
// Create a new RSA private key
|
// Create a new RSA private key
|
||||||
privateKey = env->NewObject(clazzRSAPrivateKey, mNewRSAPrivateKey,
|
privateKey = env->NewObject(clazzRSAPrivateKey, mNewRSAPrivateKey,
|
||||||
@ -2035,9 +2073,15 @@ JNIEXPORT jobject JNICALL Java_sun_security_mscapi_RSASignature_importPublicKey
|
|||||||
// Get the method ID for the RSAPublicKey constructor
|
// Get the method ID for the RSAPublicKey constructor
|
||||||
jclass clazzRSAPublicKey =
|
jclass clazzRSAPublicKey =
|
||||||
env->FindClass("sun/security/mscapi/RSAPublicKey");
|
env->FindClass("sun/security/mscapi/RSAPublicKey");
|
||||||
|
if (clazzRSAPublicKey == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
jmethodID mNewRSAPublicKey =
|
jmethodID mNewRSAPublicKey =
|
||||||
env->GetMethodID(clazzRSAPublicKey, "<init>", "(JJI)V");
|
env->GetMethodID(clazzRSAPublicKey, "<init>", "(JJI)V");
|
||||||
|
if (mNewRSAPublicKey == NULL) {
|
||||||
|
__leave;
|
||||||
|
}
|
||||||
|
|
||||||
// Create a new RSA public key
|
// Create a new RSA public key
|
||||||
publicKey = env->NewObject(clazzRSAPublicKey, mNewRSAPublicKey,
|
publicKey = env->NewObject(clazzRSAPublicKey, mNewRSAPublicKey,
|
||||||
|
@ -169,7 +169,7 @@ public final class TimestampedSigner extends ContentSigner {
|
|||||||
for (int i = 0; i < derValue.length; i++) {
|
for (int i = 0; i < derValue.length; i++) {
|
||||||
description = new AccessDescription(derValue[i]);
|
description = new AccessDescription(derValue[i]);
|
||||||
if (description.getAccessMethod()
|
if (description.getAccessMethod()
|
||||||
.equals((Object)AD_TIMESTAMPING_Id)) {
|
.equals(AD_TIMESTAMPING_Id)) {
|
||||||
location = description.getAccessLocation();
|
location = description.getAccessLocation();
|
||||||
if (location.getType() == GeneralNameInterface.NAME_URI) {
|
if (location.getType() == GeneralNameInterface.NAME_URI) {
|
||||||
uri = (URIName) location.getName();
|
uri = (URIName) location.getName();
|
||||||
|
@ -116,6 +116,12 @@
|
|||||||
|
|
||||||
# jdk_beans
|
# jdk_beans
|
||||||
|
|
||||||
|
# 8060027
|
||||||
|
java/beans/XMLEncoder/Test4903007.java generic-all
|
||||||
|
java/beans/XMLEncoder/java_awt_GridBagLayout.java generic-all
|
||||||
|
java/beans/XMLDecoder/8028054/TestConstructorFinder.java generic-all
|
||||||
|
java/beans/XMLDecoder/8028054/TestMethodFinder.java generic-all
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
# jdk_lang
|
# jdk_lang
|
||||||
@ -221,9 +227,6 @@ sun/security/pkcs11/ec/TestKeyFactory.java generic-all
|
|||||||
# 7164518: no PortUnreachableException on Mac
|
# 7164518: no PortUnreachableException on Mac
|
||||||
sun/security/krb5/auto/Unreachable.java macosx-all
|
sun/security/krb5/auto/Unreachable.java macosx-all
|
||||||
|
|
||||||
# 8058849
|
|
||||||
sun/security/krb5/config/dns.sh generic-all
|
|
||||||
|
|
||||||
# 7041639: Solaris DSA keypair generation bug
|
# 7041639: Solaris DSA keypair generation bug
|
||||||
java/security/KeyPairGenerator/SolarisShortDSA.java solaris-all
|
java/security/KeyPairGenerator/SolarisShortDSA.java solaris-all
|
||||||
sun/security/tools/keytool/standard.sh solaris-all
|
sun/security/tools/keytool/standard.sh solaris-all
|
||||||
@ -292,10 +295,16 @@ sun/security/pkcs11/tls/TestMasterSecret.java windows-all
|
|||||||
sun/security/pkcs11/tls/TestPRF.java windows-all
|
sun/security/pkcs11/tls/TestPRF.java windows-all
|
||||||
sun/security/pkcs11/tls/TestPremaster.java windows-all
|
sun/security/pkcs11/tls/TestPremaster.java windows-all
|
||||||
|
|
||||||
|
# 8051770
|
||||||
|
sun/security/provider/SecureRandom/StrongSecureRandom.java macosx-10.10
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
# jdk_sound
|
# jdk_sound
|
||||||
|
|
||||||
|
# 8059743
|
||||||
|
javax/sound/midi/Gervill/SoftProvider/GetDevice.java generic-all
|
||||||
|
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
# jdk_swing
|
# jdk_swing
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
* @bug 8007267
|
* @bug 8007267
|
||||||
* @summary [macosx] com.apple.eawt.Application.setDefaultMenuBar is not working
|
* @summary [macosx] com.apple.eawt.Application.setDefaultMenuBar is not working
|
||||||
* @author leonid.romanov@oracle.com
|
* @author leonid.romanov@oracle.com
|
||||||
|
* @modules java.desktop/sun.awt
|
||||||
* @run main DefaultMenuBarTest
|
* @run main DefaultMenuBarTest
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
2
jdk/test/com/apple/eawt/TEST.properties
Normal file
2
jdk/test/com/apple/eawt/TEST.properties
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
modules=java.desktop
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -27,6 +27,8 @@
|
|||||||
@summary The size returned by SecurityWarning.getSize() should not be zero
|
@summary The size returned by SecurityWarning.getSize() should not be zero
|
||||||
@author anthony.petrov@sun.com: area=awt.toplevel
|
@author anthony.petrov@sun.com: area=awt.toplevel
|
||||||
@library ../../../../java/awt/regtesthelpers
|
@library ../../../../java/awt/regtesthelpers
|
||||||
|
@modules java.desktop/com.sun.awt
|
||||||
|
java.desktop/sun.awt
|
||||||
@build Util CustomSecurityManager CopyClassFile
|
@build Util CustomSecurityManager CopyClassFile
|
||||||
@run main CopyClassFile CustomSecurityManager bootcp/
|
@run main CopyClassFile CustomSecurityManager bootcp/
|
||||||
@run main/othervm/secure=CustomSecurityManager -Xbootclasspath/a:bootcp GetSizeShouldNotReturnZero
|
@run main/othervm/secure=CustomSecurityManager -Xbootclasspath/a:bootcp GetSizeShouldNotReturnZero
|
||||||
|
2
jdk/test/com/sun/awt/TEST.properties
Normal file
2
jdk/test/com/sun/awt/TEST.properties
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
modules=java.desktop
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -26,6 +26,7 @@
|
|||||||
@bug 6594131
|
@bug 6594131
|
||||||
@summary Tests the AWTUtilities.get/setWindowOpacity() methods
|
@summary Tests the AWTUtilities.get/setWindowOpacity() methods
|
||||||
@author anthony.petrov@...: area=awt.toplevel
|
@author anthony.petrov@...: area=awt.toplevel
|
||||||
|
@modules java.desktop/com.sun.awt
|
||||||
@run main WindowOpacity
|
@run main WindowOpacity
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -34,7 +34,6 @@ import java.security.spec.*;
|
|||||||
import javax.crypto.*;
|
import javax.crypto.*;
|
||||||
import javax.crypto.spec.*;
|
import javax.crypto.spec.*;
|
||||||
import java.security.Provider;
|
import java.security.Provider;
|
||||||
import com.sun.crypto.provider.*;
|
|
||||||
|
|
||||||
public class Test4511676 {
|
public class Test4511676 {
|
||||||
private static final String ALGO = "AES";
|
private static final String ALGO = "AES";
|
||||||
@ -59,7 +58,6 @@ public class Test4511676 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String[] args) throws Exception {
|
public static void main (String[] args) throws Exception {
|
||||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
|
||||||
|
|
||||||
Test4511676 test = new Test4511676();
|
Test4511676 test = new Test4511676();
|
||||||
String testName = test.getClass().getName() + "[" + ALGO +
|
String testName = test.getClass().getName() + "[" + ALGO +
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -35,7 +35,6 @@ import java.util.Random;
|
|||||||
import javax.crypto.*;
|
import javax.crypto.*;
|
||||||
import javax.crypto.spec.*;
|
import javax.crypto.spec.*;
|
||||||
import java.security.Provider;
|
import java.security.Provider;
|
||||||
import com.sun.crypto.provider.*;
|
|
||||||
|
|
||||||
public class Test4512524 {
|
public class Test4512524 {
|
||||||
|
|
||||||
@ -65,8 +64,6 @@ public class Test4512524 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String[] args) throws Exception {
|
public static void main (String[] args) throws Exception {
|
||||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
|
||||||
|
|
||||||
Test4512524 test = new Test4512524();
|
Test4512524 test = new Test4512524();
|
||||||
test.execute("CBC");
|
test.execute("CBC");
|
||||||
test.execute("GCM");
|
test.execute("GCM");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -35,7 +35,6 @@ import java.util.Random;
|
|||||||
import javax.crypto.*;
|
import javax.crypto.*;
|
||||||
import javax.crypto.spec.*;
|
import javax.crypto.spec.*;
|
||||||
import java.security.Provider;
|
import java.security.Provider;
|
||||||
import com.sun.crypto.provider.*;
|
|
||||||
|
|
||||||
public class Test4512704 {
|
public class Test4512704 {
|
||||||
private static final String ALGO = "AES";
|
private static final String ALGO = "AES";
|
||||||
@ -61,8 +60,6 @@ public class Test4512704 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String[] args) throws Exception {
|
public static void main (String[] args) throws Exception {
|
||||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
|
||||||
|
|
||||||
Test4512704 test = new Test4512704();
|
Test4512704 test = new Test4512704();
|
||||||
test.execute("CBC");
|
test.execute("CBC");
|
||||||
test.execute("GCM");
|
test.execute("GCM");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -85,8 +85,6 @@ public class Test4513830 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String[] args) throws Exception {
|
public static void main (String[] args) throws Exception {
|
||||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
|
||||||
|
|
||||||
Test4513830 test = new Test4513830();
|
Test4513830 test = new Test4513830();
|
||||||
String testName = test.getClass().getName() + "[" + ALGO +
|
String testName = test.getClass().getName() + "[" + ALGO +
|
||||||
"/" + MODE + "/" + PADDING + "]";
|
"/" + MODE + "/" + PADDING + "]";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -37,7 +37,6 @@ import java.util.*;
|
|||||||
import javax.crypto.*;
|
import javax.crypto.*;
|
||||||
import javax.crypto.spec.*;
|
import javax.crypto.spec.*;
|
||||||
import java.security.Provider;
|
import java.security.Provider;
|
||||||
import com.sun.crypto.provider.*;
|
|
||||||
|
|
||||||
public class Test4517355 {
|
public class Test4517355 {
|
||||||
|
|
||||||
@ -93,8 +92,6 @@ public class Test4517355 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String[] args) throws Exception {
|
public static void main (String[] args) throws Exception {
|
||||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
|
||||||
|
|
||||||
Test4517355 test = new Test4517355();
|
Test4517355 test = new Test4517355();
|
||||||
Random rdm = new Random();
|
Random rdm = new Random();
|
||||||
rdm.nextBytes(test.plainText);
|
rdm.nextBytes(test.plainText);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -60,8 +60,6 @@ public class Test4626070 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String[] args) throws Exception {
|
public static void main (String[] args) throws Exception {
|
||||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
|
||||||
|
|
||||||
Test4626070 test = new Test4626070();
|
Test4626070 test = new Test4626070();
|
||||||
test.execute("CBC", "PKCS5Padding");
|
test.execute("CBC", "PKCS5Padding");
|
||||||
test.execute("GCM", "NoPadding");
|
test.execute("GCM", "NoPadding");
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user